170 lines
4.4 KiB
YAML
170 lines
4.4 KiB
YAML
---
|
|
- 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 }}"
|