summaryrefslogtreecommitdiffstats
path: root/roles
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2026-04-07 00:10:32 +0200
committerAhmed Abdelhalim <[email protected]>2026-04-07 00:12:25 +0200
commit3b5aeebb4af21894ad75e2d9772159511eeb1457 (patch)
tree322b30cc3b32f2f0a334100bbefe9aa8a68cca48 /roles
parentad7cbc3511d201711c8c3bad0b3882e8e57a8d7d (diff)
Add nvidia gtm 750M for the mac
Diffstat (limited to 'roles')
-rw-r--r--roles/gpu_driver/meta/argument_specs.yml2
-rw-r--r--roles/gpu_driver/vars/main.yml2
-rw-r--r--roles/nvidia_gt750m/defaults/main.yml12
-rw-r--r--roles/nvidia_gt750m/handlers/main.yml6
-rw-r--r--roles/nvidia_gt750m/meta/main.yml17
-rw-r--r--roles/nvidia_gt750m/tasks/install-archlinux.yml57
-rw-r--r--roles/nvidia_gt750m/tasks/main.yml3
-rw-r--r--roles/nvidia_gt750m/templates/nvidia.conf.j24
8 files changed, 102 insertions, 1 deletions
diff --git a/roles/gpu_driver/meta/argument_specs.yml b/roles/gpu_driver/meta/argument_specs.yml
index 39ae9f59..2e923875 100644
--- a/roles/gpu_driver/meta/argument_specs.yml
+++ b/roles/gpu_driver/meta/argument_specs.yml
@@ -3,5 +3,5 @@ argument_specs:
main:
description: >
Detects the GPU present on the machine using PCI device information and
- includes the matching driver role (intel_i915 or nvidia_gtx1060).
+ includes the matching driver role (intel_i915, nvidia_gtx1060, or nvidia_gt750m).
options: {}
diff --git a/roles/gpu_driver/vars/main.yml b/roles/gpu_driver/vars/main.yml
index 8ad2da61..1ce84758 100644
--- a/roles/gpu_driver/vars/main.yml
+++ b/roles/gpu_driver/vars/main.yml
@@ -2,5 +2,7 @@
gpu_driver_map:
- match: "GeForce GTX 1060"
role: "nvidia_gtx1060"
+ - match: "GeForce GT 750M"
+ role: "nvidia_gt750m"
- match: "VGA compatible controller: Intel"
role: "intel_i915"
diff --git a/roles/nvidia_gt750m/defaults/main.yml b/roles/nvidia_gt750m/defaults/main.yml
new file mode 100644
index 00000000..559ccdae
--- /dev/null
+++ b/roles/nvidia_gt750m/defaults/main.yml
@@ -0,0 +1,12 @@
+---
+nvidia_gt750m_aur_packages:
+ - "nvidia-470xx-dkms"
+ - "nvidia-470xx-utils"
+ - "nvidia-470xx-settings"
+ - "lib32-nvidia-470xx-utils"
+
+nvidia_gt750m_modules:
+ - "nvidia"
+ - "nvidia_modeset"
+ - "nvidia_uvm"
+ - "nvidia_drm"
diff --git a/roles/nvidia_gt750m/handlers/main.yml b/roles/nvidia_gt750m/handlers/main.yml
new file mode 100644
index 00000000..67408c79
--- /dev/null
+++ b/roles/nvidia_gt750m/handlers/main.yml
@@ -0,0 +1,6 @@
+---
+- name: "Rebuild initramfs"
+ become: true
+ ansible.builtin.command:
+ cmd: "mkinitcpio -P"
+ changed_when: true
diff --git a/roles/nvidia_gt750m/meta/main.yml b/roles/nvidia_gt750m/meta/main.yml
new file mode 100644
index 00000000..6e299607
--- /dev/null
+++ b/roles/nvidia_gt750m/meta/main.yml
@@ -0,0 +1,17 @@
+---
+dependencies:
+ - role: "bash"
+ - role: "linux_headers"
+ - role: "yay"
+ when: ansible_facts['os_family'] == "Archlinux"
+ - role: "multilib"
+ when: ansible_facts['os_family'] == "Archlinux"
+galaxy_info:
+ author: "a14m"
+ description: "Install and configure NVIDIA GT 750M proprietary drivers"
+ license: "MIT"
+ min_ansible_version: "2.18"
+ platforms:
+ - name: "ArchLinux"
+ versions:
+ - "all"
diff --git a/roles/nvidia_gt750m/tasks/install-archlinux.yml b/roles/nvidia_gt750m/tasks/install-archlinux.yml
new file mode 100644
index 00000000..2f9aae0b
--- /dev/null
+++ b/roles/nvidia_gt750m/tasks/install-archlinux.yml
@@ -0,0 +1,57 @@
+---
+- name: "Install NVIDIA driver from AUR"
+ become: true
+ become_user: "aur_builder"
+ kewlfft.aur.aur:
+ name: "{{ nvidia_gt750m_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"
+ tags:
+ - "molecule-notest"
+
+- name: "Remove kms hook from mkinitcpio"
+ become: true
+ ansible.builtin.replace:
+ path: "/etc/mkinitcpio.conf"
+ regexp: "(HOOKS=\\([^)]*) kms"
+ replace: '\1'
+ notify:
+ - "Rebuild initramfs"
+ tags:
+ - "molecule-notest"
+
+- 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
+ args:
+ executable: /bin/bash
+ tags:
+ - "molecule-notest"
+
+- name: "Add NVIDIA modules to mkinitcpio"
+ become: true
+ vars:
+ existing_modules: "{{ current_kernel_modules.stdout.split() | reject('in', nvidia_gt750m_modules) | list }}"
+ all_modules: "{{ existing_modules + nvidia_gt750m_modules }}"
+ ansible.builtin.lineinfile:
+ path: "/etc/mkinitcpio.conf"
+ regexp: "^MODULES=\\(.*\\)"
+ line: "MODULES=({{ all_modules | join(' ') }})"
+ notify:
+ - "Rebuild initramfs"
+ tags:
+ - "molecule-notest"
diff --git a/roles/nvidia_gt750m/tasks/main.yml b/roles/nvidia_gt750m/tasks/main.yml
new file mode 100644
index 00000000..71bcbd0d
--- /dev/null
+++ b/roles/nvidia_gt750m/tasks/main.yml
@@ -0,0 +1,3 @@
+---
+- name: "Include OS-specific tasks"
+ ansible.builtin.include_tasks: "install-{{ ansible_facts['os_family'] | lower }}.yml"
diff --git a/roles/nvidia_gt750m/templates/nvidia.conf.j2 b/roles/nvidia_gt750m/templates/nvidia.conf.j2
new file mode 100644
index 00000000..9672977e
--- /dev/null
+++ b/roles/nvidia_gt750m/templates/nvidia.conf.j2
@@ -0,0 +1,4 @@
+blacklist nouveau
+
+options nvidia_drm modeset=1
+options nvidia_drm fbdev=1