summaryrefslogtreecommitdiff
path: root/nongnu/packages
diff options
context:
space:
mode:
authorHilton Chain <hako@ultrarare.space>2026-03-11 13:51:13 +0800
committerHilton Chain <hako@ultrarare.space>2026-03-12 00:50:07 +0800
commit44f9f4db741f2a9abea8382deaa31f996732da65 (patch)
tree43e43a15a6522a4557fa418690c612812db6effa /nongnu/packages
parent824d143acdb5ef50c6edf8dd0dfb3379655d363a (diff)
services: nvidia: Use nvidia-modprobe.
* nongnu/services/nvidia.scm (nvidia-configuration) [modprobe]: New field. (nvidia-privileged-program, nvidia-special-files, nvidia-udev-rule): New procedures. (nvidia-shepherd-service): Delete procedure. (nvidia-service-type) [extensions]: Update accordingly. * nongnu/packages/nvidia.scm (%nvidia-script-create-device-nodes) (%nvidia-udev-rules): Delete in favor of nvidia-udev-rule. (nvidia-driver): Remove udev rule from the package. * nonguix/transformations.scm (nonguix-transformation-nvidia): Use the new modprobe field for nvidia-configuration.
Diffstat (limited to 'nongnu/packages')
-rw-r--r--nongnu/packages/nvidia.scm97
1 files changed, 2 insertions, 95 deletions
diff --git a/nongnu/packages/nvidia.scm b/nongnu/packages/nvidia.scm
index e075e43..d7fabd6 100644
--- a/nongnu/packages/nvidia.scm
+++ b/nongnu/packages/nvidia.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2022, 2023 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2022 Alexey Abramov <levenson@mmer.org>
-;;; Copyright © 2022, 2023, 2024 Hilton Chain <hako@ultrarare.space>
+;;; Copyright © 2022-2026 Hilton Chain <hako@ultrarare.space>
(define-module (nongnu packages nvidia)
#:use-module (guix packages)
@@ -139,95 +139,6 @@ its unpacked checkout."
;;;
-(define %nvidia-script-create-device-nodes
- (program-file
- "create-device-nodes.scm"
- (with-imported-modules '((guix build utils))
- #~(begin
- (use-modules (ice-9 regex)
- (rnrs io ports)
- (srfi srfi-1)
- (guix build utils))
-
- (define %nvidia-character-devices
- (call-with-input-file "/proc/devices"
- (lambda (port)
- (filter-map
- (lambda (line)
- (if (string-contains line "nvidia")
- (apply cons (reverse (string-tokenize line)))
- #f))
- (string-split (get-string-all port) #\newline)))))
-
- (define %nvidia-driver-device-minors
- (let ((device-minor-regexp (make-regexp "^Device Minor: \t (.*)")))
- (append-map
- (lambda (file)
- (call-with-input-file file
- (lambda (port)
- (filter-map
- (lambda (line)
- (let ((matched (regexp-exec device-minor-regexp line)))
- (if matched
- (match:substring matched 1)
- #f)))
- (string-split (get-string-all port) #\newline)))))
- (find-files "/proc/driver/nvidia/gpus/" "information$"))))
-
- (define (create-device-node path name minor)
- (let ((major
- (or (assoc-ref %nvidia-character-devices name)
- (assoc-ref %nvidia-character-devices "nvidia-frontend")))
- (mknod #$(file-append coreutils "/bin/mknod")))
- (system* mknod "-Zm0666" path "c" major minor)))
-
- (define (main args)
- (case (string->symbol (first args))
- ((nvidia_modeset)
- (create-device-node "/dev/nvidia-modeset" "nvidia-modeset" "254"))
- ((nvidia_uvm)
- (begin
- (create-device-node "/dev/nvidia-uvm" "nvidia-uvm" "0")
- (create-device-node "/dev/nvidia-uvm-tools" "nvidia-uvm" "1")))
- ((nvidia)
- (begin
- (create-device-node "/dev/nvidiactl" "nvidiactl" "255")
- (for-each
- (lambda (minor)
- (create-device-node
- (string-append "/dev/nvidia" minor) "nvidia" minor))
- %nvidia-driver-device-minors)))))
-
- (main (cdr (command-line)))))))
-
-;; Adapted from <https://github.com/Frogging-Family/nvidia-all/blob/master/60-nvidia.rules>
-(define %nvidia-udev-rules
- (mixed-text-file
- "90-nvidia.rules" "\
-# Make sure device nodes are present even when the DDX is not started for the Wayland/EGLStream case
-KERNEL==\"nvidia\", RUN+=\"" %nvidia-script-create-device-nodes " nvidia\"
-KERNEL==\"nvidia_modeset\", RUN+=\"" %nvidia-script-create-device-nodes " nvidia_modeset\"
-KERNEL==\"nvidia_uvm\", RUN+=\"" %nvidia-script-create-device-nodes " nvidia_uvm\"
-
-# Enable runtime PM for NVIDIA VGA/3D controller devices
-ACTION==\"bind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\"0x03[0-9]*\", TEST==\"power/control\", ATTR{power/control}=\"auto\"
-# Enable runtime PM for NVIDIA Audio devices
-ACTION==\"bind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\"0x040300\", TEST==\"power/control\", ATTR{power/control}=\"auto\"
-# Enable runtime PM for NVIDIA USB xHCI Host Controller devices
-ACTION==\"bind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\"0x0c0330\", TEST==\"power/control\", ATTR{power/control}=\"auto\"
-# Enable runtime PM for NVIDIA USB Type-C UCSI devices
-ACTION==\"bind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\"0x0c8000\", TEST==\"power/control\", ATTR{power/control}=\"auto\"
-
-# Disable runtime PM for NVIDIA VGA/3D controller devices
-ACTION==\"unbind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\"0x03[0-9]*\", TEST==\"power/control\", ATTR{power/control}=\"on\"
-# Disable runtime PM for NVIDIA Audio devices
-ACTION==\"unbind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\"0x040300\", TEST==\"power/control\", ATTR{power/control}=\"on\"
-# Disable runtime PM for NVIDIA USB xHCI Host Controller devices
-ACTION==\"unbind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\"0x0c0330\", TEST==\"power/control\", ATTR{power/control}=\"on\"
-# Disable runtime PM for NVIDIA USB Type-C UCSI devices
-ACTION==\"unbind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\"0x0c8000\", TEST==\"power/control\", ATTR{power/control}=\"on\"
-"))
-
(define-public nvidia-driver
(package
(name "nvidia-driver")
@@ -252,7 +163,6 @@ ACTION==\"unbind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\
("." "share/nvidia/" #:include-regexp ("nvidia-application-profiles|nvoptix.bin"))
("." "share/egl/egl_external_platform.d/" #:include-regexp ("(gbm|wayland|xcb|xlib)\\.json"))
("10_nvidia.json" "share/glvnd/egl_vendor.d/")
- ("90-nvidia.rules" "lib/udev/rules.d/")
("nvidia-drm-outputclass.conf" "share/X11/xorg.conf.d/")
("nvidia-dbus.conf" "share/dbus-1/system.d/")
("nvidia.icd" "etc/OpenCL/vendors/")
@@ -297,10 +207,7 @@ ACTION==\"unbind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\
;; VulkanSC ICD configuration
(substitute* "nvidia_icd_vksc.json"
(("libnvidia-vksc-core\\.so\\.." all)
- (string-append #$output "/lib/" all)))
-
- ;; Add udev rules
- (symlink #$%nvidia-udev-rules "90-nvidia.rules")))
+ (string-append #$output "/lib/" all)))))
(add-after 'install 'add-architecture-to-filename
(lambda _
(for-each