summaryrefslogtreecommitdiff
path: root/nongnu
diff options
context:
space:
mode:
authorHilton Chain <hako@ultrarare.space>2024-02-04 15:08:37 +0800
committerJohn Kehayias <john.kehayias@protonmail.com>2024-04-24 20:06:48 -0400
commit8a56ebb666179ad9595e947e470aeaf2900e1278 (patch)
tree732789fe4f7428dc89d166a35beaf89fa1d1b374 /nongnu
parent97925d20910cda0e7e39d00b73fc16144b0ef2f0 (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')
-rw-r--r--nongnu/services/nvidia.scm15
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.")))