diff options
author | Hilton Chain <hako@ultrarare.space> | 2024-02-04 15:08:37 +0800 |
---|---|---|
committer | John Kehayias <john.kehayias@protonmail.com> | 2024-04-24 20:06:48 -0400 |
commit | 8a56ebb666179ad9595e947e470aeaf2900e1278 (patch) | |
tree | 732789fe4f7428dc89d166a35beaf89fa1d1b374 /nongnu/services/nvidia.scm | |
parent | 97925d20910cda0e7e39d00b73fc16144b0ef2f0 (diff) |
services: nvidia: Only invoke commands when NVIDIA driver is in use.
* nongnu/services/nvidia.scm (nvidia-service-type): Don't extend
kernel-module-loader-service-type, move this part to…
(nvidia-shepherd-service)[start]: …here.
Check driver and command availablity.
[stop]: Likewise.
[modules]: Add (guix build utils) for ‘invoke/quiet’.
Add (rnrs io ports) for ‘get-line’.
Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
Diffstat (limited to 'nongnu/services/nvidia.scm')
-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."))) |