diff options
Diffstat (limited to 'nongnu/services')
-rw-r--r-- | nongnu/services/nvidia.scm | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/nongnu/services/nvidia.scm b/nongnu/services/nvidia.scm index 13fa8b1..81a5d5f 100644 --- a/nongnu/services/nvidia.scm +++ b/nongnu/services/nvidia.scm @@ -34,10 +34,17 @@ (provision '(nvidia)) (requirement '(udev)) (one-shot? #t) + (modules '(((guix build utils) #:select (invoke/quiet)) + ((rnrs io ports) #:select (get-line)))) (start #~(lambda _ - (when (file-exists? #$nvidia-smi) - (system* #$nvidia-smi)))))))) + (when (file-exists? "/proc/driver/nvidia") + (let ((modprobe (call-with-input-file + "/proc/sys/kernel/modprobe" get-line))) + (false-if-exception + (begin + (invoke/quiet modprobe "--" "nvidia_uvm") + (invoke/quiet #$nvidia-smi))))))))))) (define nvidia-service-type (service-type @@ -52,8 +59,6 @@ (service-extension firmware-service-type (compose list nvidia-configuration-firmware)) (service-extension linux-loadable-module-service-type - (compose list nvidia-configuration-module)) - (service-extension kernel-module-loader-service-type - (const '("nvidia_uvm"))))) + (compose list nvidia-configuration-module)))) (default-value (nvidia-configuration)) (description "Prepare system environment for NVIDIA driver."))) |