diff options
-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)))))) |