diff options
author | Hilton Chain <hako@ultrarare.space> | 2025-06-11 21:51:48 +0800 |
---|---|---|
committer | Hilton Chain <hako@ultrarare.space> | 2025-06-11 22:15:43 +0800 |
commit | c68afedfd4bd99f718777d5b3e0514542fa51117 (patch) | |
tree | 57d347b06d4a2187d9aa502b401c5c1c6db141b4 /nonguix/transformations.scm | |
parent | af7b8544dfa40c057e49d2e0878e269ed4c1d339 (diff) |
transformations: Add ‘nonguix-transformation-nvidia’.
* nonguix/transformations.scm (nonguix-transformation-nvidia): New procedure.
Diffstat (limited to 'nonguix/transformations.scm')
-rw-r--r-- | nonguix/transformations.scm | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/nonguix/transformations.scm b/nonguix/transformations.scm index 751c6cf..7141b16 100644 --- a/nonguix/transformations.scm +++ b/nonguix/transformations.scm @@ -16,7 +16,8 @@ #:use-module (nongnu packages linux) #:use-module (nongnu packages nvidia) #:export (nonguix-transformation-guix - nonguix-transformation-linux)) + nonguix-transformation-linux + nonguix-transformation-nvidia)) (define* (nonguix-transformation-guix #:key (substitutes? #t) (channel? #t) @@ -89,3 +90,51 @@ and INITRD (default: microcode-initrd)." (kernel linux) (firmware firmware) (initrd initrd)))) + +(define* (nonguix-transformation-nvidia #:key (driver nvda) + (kernel-mode-setting? #t) + (open-source-kernel-module? #f)) + "Return a procedure that transforms an operating system, setting up +DRIVER (default: nvda) for NVIDIA graphics card. + +KERNEL-MODE-SETTING? (default: #t) is required for Wayland and rootless Xorg +support. + +OPEN-SOURCE-KERNEL-MODULE? (default: #f) only supports Turing and later +architectures and is expected to work with 'linux-lts'. + +For application setup, use 'replace-mesa'. + +TODO: Xorg configuration." + (define %presets + `((,nvda . ,(service nvidia-service-type + (nvidia-configuration + (driver nvda) + (firmware nvidia-firmware) + (module + (if open-source-kernel-module? + nvidia-module-open + nvidia-module))))) + (,nvdb . ,(service nvidia-service-type + (nvidia-configuration + (driver nvdb) + (firmware nvidia-firmware-beta) + (module + (if open-source-kernel-module? + nvidia-module-open-beta + nvidia-module-beta))))))) + (lambda (os) + (operating-system + (inherit os) + (kernel-arguments + `("modprobe.blacklist=nouveau" + ,@(if kernel-mode-setting? + '("nvidia_drm.modeset=1") + '()) + ,@(operating-system-user-kernel-arguments os))) + (services + `(,(or (assoc-ref %presets driver) + (leave + (G_ "no NVIDIA service configuration available for '~a'~%") + (package-name driver))) + ,@(operating-system-user-services os)))))) |