--- - name: Install needed toolchains apt: name: - curl - gcc - mypy - gnupg2 - apt-transport-https - jsonlint state: present - name: Add Yarn repo Apt signing key apt_key: id: 72ECF46A56B4AD39C907BBB71646B01B86E50310 url: https://dl.yarnpkg.com/debian/pubkey.gpg state: present - name: Add Yarn repo apt_repository: repo: deb https://dl.yarnpkg.com/debian/ stable main state: present - name: Install Yarn apt: name: yarn state: present - name: Install from backports apt: name: - mosh - node-typescript - "golang-{{ dev_box.golang_version|default('1.14') }}" state: present default_release: "{{ ansible_distribution_release }}-backports" - name: Install eslint with yarn shell: "yarn add eslint --dev" - name: Install prettier with yarn shell: "yarn add --dev --exact prettier" - name: Retrieve rustup installer get_url: url: https://sh.rustup.rs dest: /tmp/rustup.sh owner: root group: root mode: 0755 - name: Copy rustup installer in each user home copy: src: /tmp/rustup.sh dest: "{{ item.home }}/rustup.sh" remote_src: true owner: "{{ item.username }}" group: "{{ item.group|default(item.username) }}" mode: 0755 with_items: "{{ dev_box.users }}" - name: Install rustup for each user shell: cmd: "/tmp/rustup.sh -y" chdir: "{{ item.home }}" become_user: "{{ item.username }}" with_items: "{{ dev_box.users }}" changed_when: false - name: Install the rust stable toolchain shell: cmd: "{{ item.home }}/.cargo/bin/rustup toolchain install stable" chdir: "{{ item.home }}" become_user: "{{ item.username }}" with_items: "{{ dev_box.users }}" - name: Ensure configuration directories are present file: path: "{{ item.0.home }}/.config/zsh/{{ item.1 }}" state: directory recurse: yes owner: "{{ item.0.username }}" group: "{{ item.0.group|default(item.0.username) }}" mode: 0755 loop: "{{ dev_box.users|product(['pre', 'post'])|list }}" - name: Ensure asdf configuration for zsh is present template: src: templates/01-asdf.j2 dest: "{{ item.home }}/.config/zsh/pre/01-asdf" owner: "{{ item.username }}" group: "{{ item.group|default(item.username) }}" mode: 0755 loop: "{{ dev_box.users|flatten(levels=1) }}" - name: Install asdf git: repo: https://github.com/asdf-vm/asdf.git dest: "{{ item.home }}/.asdf" force: yes with_items: "{{ dev_box.users }}" - name: Fix asdf directory permissions file: path: "{{ item.home }}/.asdf" owner: "{{ item.username }}" group: "{{ item.group|default(item.username) }}" mode: 0755 with_items: "{{ dev_box.users }}" - name: Copy elixir installer script copy: content: | #!/usr/bin/env bash source {{ item.home }}/.asdf/asdf.sh asdf plugin-add elixir asdf install elixir {{ dev_box.elixir_version|default('1.10.3-otp-22') }} asdf global elixir {{ dev_box.elixir_version|default('1.10.3-otp-22') }} dest: "{{ item.home }}/elixir_installer.sh" owner: "{{ item.username }}" group: "{{ item.group|default(item.username) }}" mode: 0755 with_items: "{{ dev_box.users }}" - name: Install elixir shell: cmd: "{{ item.home }}/elixir_installer.sh" chdir: "{{ item.home }}" become_user: "{{ item.username }}" with_items: "{{ dev_box.users }}" - name: Get elixir-ls git: repo: https://github.com/elixir-lsp/elixir-ls dest: "/opt/elixir_ls" force: yes - name: Remove local tool-versions file: path: /opt/elixir_ls/.tool-versions state: absent - name: Ensure elixir-ls has needed directory file: path: "{{ item.home }}/.elixir_ls" state: directory owner: "{{ item.username }}" group: "{{ item.group|default(item.username) }}" mode: 0755 with_items: "{{ dev_box.users }}" - name: Copy elixir-ls installer script copy: content: | #!/usr/bin/env bash source {{ item.home }}/.asdf/asdf.sh mix compile && mix elixir_ls.release -o {{ item.home }}/.elixir_ls dest: "{{ item.home }}/elixir-ls_installer.sh" owner: "{{ item.username }}" group: "{{ item.group|default(item.username) }}" mode: 0755 with_items: "{{ dev_box.users }}" - name: Compile elixir-ls shell: cmd: "{{ item.home }}/elixir-ls_installer.sh" chdir: "/opt/elixir_ls" become_user: "{{ item.username }}" with_items: "{{ dev_box.users }}"