Add a rust role.

This commit is contained in:
Tom Alexander 2022-10-20 00:57:05 -04:00
parent b1681eebc5
commit 49a8b1b360
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
8 changed files with 103 additions and 1 deletions

View File

@ -1,5 +1,5 @@
dependencies:
- users
- fonts
# - rust
- rust
# - plainmacs

View File

@ -0,0 +1,14 @@
- import_tasks: tasks/freebsd.yaml
when: 'os_flavor == "freebsd"'
- import_tasks: tasks/linux.yaml
when: 'os_flavor == "linux"'
- include_tasks:
file: tasks/peruser.yaml
apply:
become: yes
become_user: "{{ initialize_user }}"
loop: "{{ users | dict2items | community.general.json_query('[?value.initialize==`true`].key') }}"
loop_control:
loop_var: initialize_user

View File

@ -0,0 +1,6 @@
- name: Install packages
package:
name:
- rust-nightly
- rust-analyzer
state: present

View File

@ -0,0 +1,7 @@
- name: Install packages
package:
name:
- rustup
- lldb # for lldb-vscode
- musl # for building static binaries
state: present

View File

@ -0,0 +1,2 @@
- import_tasks: tasks/common.yaml
# when: foo is defined

View File

@ -0,0 +1,29 @@
- include_role:
name: per_user
# - name: Create directories
# file:
# name: "{{ account_homedir.stdout }}/{{ item }}"
# state: directory
# mode: 0700
# owner: "{{ account_name.stdout }}"
# group: "{{ group_name.stdout }}"
# loop:
# - ".config/foo"
# - name: Copy files
# copy:
# src: "files/{{ item.src }}"
# dest: "{{ account_homedir.stdout }}/{{ item.dest }}"
# mode: 0600
# owner: "{{ account_name.stdout }}"
# group: "{{ group_name.stdout }}"
# loop:
# - src: foo.conf
# dest: .config/foo/foo.conf
- import_tasks: tasks/peruser_freebsd.yaml
when: 'os_flavor == "freebsd"'
- import_tasks: tasks/peruser_linux.yaml
when: 'os_flavor == "linux"'

View File

@ -0,0 +1,44 @@
- name: Set nightly as the default toolchain
command: "rustup default nightly-{{ rust_date }}"
args:
creates: "{{ account_homedir.stdout }}/.rustup/toolchains/nightly-{{ rust_date }}-x86_64-unknown-linux-gnu"
- name: Install the musl target
command: rustup target add x86_64-unknown-linux-musl
args:
creates: "{{ account_homedir.stdout }}/.rustup/toolchains/nightly-{{ rust_date }}-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl"
# Needed by rust-analyzer (rust-analyzer will attempt to install via rustup on its own, but this will install it manually).
- name: Install the nightly rust-src
command: rustup component add rust-src
args:
creates: "{{ account_homedir.stdout }}/.rustup/toolchains/nightly-{{ rust_date }}-x86_64-unknown-linux-gnu/lib/rustlib/manifest-rust-src"
- name: Install the nightly rust-analyzer
command: rustup component add rust-analyzer
args:
creates: "{{ account_homedir.stdout }}/.rustup/toolchains/nightly-{{ rust_date }}-x86_64-unknown-linux-gnu/bin/rust-analyzer"
- name: Create directories
file:
name: "{{ account_homedir.stdout }}/{{ item }}"
state: directory
mode: 0755
owner: "{{ account_name.stdout }}"
group: "{{ group_name.stdout }}"
loop:
- .cargo
- name: Copy files
no_log: true
copy:
src: "files/{{ item.src }}"
dest: "{{ account_homedir.stdout }}/{{ item.dest }}"
mode: 0600
owner: "{{ account_name.stdout }}"
group: "{{ group_name.stdout }}"
loop:
- src: cargo_credentials.toml
dest: .cargo/credentials
- src: cargo_config.toml
dest: .cargo/config