summaryrefslogtreecommitdiffstats
path: root/roles/nvidia/tasks/install-archlinux.yml
blob: f11f71bae7303ab10e8e9ee1674f72529f23ca74 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
---
- name: "Install NVIDIA packages"
  become: true
  ansible.builtin.package:
    name: "{{ nvidia_packages }}"
    state: "present"

- name: "Install NVIDIA driver from AUR"
  become: true
  become_user: "aur_builder"
  kewlfft.aur.aur:
    name: "{{ nvidia_aur_packages }}"
    state: "present"
    use: "yay"

- name: "Configure NVIDIA DRM kernel mode setting"
  become: true
  ansible.builtin.template:
    src: "nvidia.conf.j2"
    dest: "/etc/modprobe.d/nvidia.conf"
    mode: "0644"
  notify: "Rebuild initramfs"

- name: "Get current mkinitcpio MODULES"
  become: true
  ansible.builtin.shell: |
    set -euo pipefail
    grep '^MODULES=' /etc/mkinitcpio.conf | sed 's/MODULES=(\\(.*\\))/\\1/'
  # noqa var-naming[no-role-prefix] as it describes the current kernel modules and not the nvidia modules
  register: "current_kernel_modules"
  changed_when: false

- name: "Add NVIDIA modules to mkinitcpio"
  become: true
  vars:
    existing_modules: "{{ current_kernel_modules.stdout.split() | reject('in', nvidia_modules) | list }}"
    all_modules: "{{ existing_modules + nvidia_modules }}"
  ansible.builtin.lineinfile:
    path: "/etc/mkinitcpio.conf"
    regexp: "^MODULES=\\(.*\\)"
    line: "MODULES=({{ all_modules | join(' ') }})"
  notify: "Rebuild initramfs"