From 8a56ebb666179ad9595e947e470aeaf2900e1278 Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Sun, 4 Feb 2024 15:08:37 +0800 Subject: services: nvidia: Only invoke commands when NVIDIA driver is in use. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- nongnu/services/nvidia.scm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'nongnu') 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."))) -- cgit v1.2.3