diff --git a/ansible/roles/emacs/meta/main.yaml b/ansible/roles/emacs/meta/main.yaml index 0725261..d5a22e5 100644 --- a/ansible/roles/emacs/meta/main.yaml +++ b/ansible/roles/emacs/meta/main.yaml @@ -1,5 +1,5 @@ dependencies: - users - fonts - # - rust + - rust # - plainmacs diff --git a/ansible/roles/rust/tasks/common.yaml b/ansible/roles/rust/tasks/common.yaml new file mode 100644 index 0000000..d7c1735 --- /dev/null +++ b/ansible/roles/rust/tasks/common.yaml @@ -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 diff --git a/ansible/roles/rust/tasks/freebsd.yaml b/ansible/roles/rust/tasks/freebsd.yaml new file mode 100644 index 0000000..f4d95e4 --- /dev/null +++ b/ansible/roles/rust/tasks/freebsd.yaml @@ -0,0 +1,6 @@ +- name: Install packages + package: + name: + - rust-nightly + - rust-analyzer + state: present diff --git a/ansible/roles/rust/tasks/linux.yaml b/ansible/roles/rust/tasks/linux.yaml new file mode 100644 index 0000000..3047d23 --- /dev/null +++ b/ansible/roles/rust/tasks/linux.yaml @@ -0,0 +1,7 @@ +- name: Install packages + package: + name: + - rustup + - lldb # for lldb-vscode + - musl # for building static binaries + state: present diff --git a/ansible/roles/rust/tasks/main.yaml b/ansible/roles/rust/tasks/main.yaml new file mode 100644 index 0000000..6805b9d --- /dev/null +++ b/ansible/roles/rust/tasks/main.yaml @@ -0,0 +1,2 @@ +- import_tasks: tasks/common.yaml + # when: foo is defined diff --git a/ansible/roles/rust/tasks/peruser.yaml b/ansible/roles/rust/tasks/peruser.yaml new file mode 100644 index 0000000..111e886 --- /dev/null +++ b/ansible/roles/rust/tasks/peruser.yaml @@ -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"' diff --git a/ansible/roles/rust/tasks/peruser_freebsd.yaml b/ansible/roles/rust/tasks/peruser_freebsd.yaml new file mode 100644 index 0000000..e69de29 diff --git a/ansible/roles/rust/tasks/peruser_linux.yaml b/ansible/roles/rust/tasks/peruser_linux.yaml new file mode 100644 index 0000000..f0efa38 --- /dev/null +++ b/ansible/roles/rust/tasks/peruser_linux.yaml @@ -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