From e4e34b7da49b278444360a603772c56485767900 Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Sun, 7 Jan 2024 21:24:14 +0800 Subject: services: nvidia: Create extra device nodes on boot. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * nongnu/services/nvidia.scm (nvidia-shepherd-service) [requirement]: Add udev. [start]: Create extra device nodes via ‘nvidia-smi’. Signed-off-by: John Kehayias --- nongnu/services/nvidia.scm | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'nongnu/services') diff --git a/nongnu/services/nvidia.scm b/nongnu/services/nvidia.scm index 4a604cb..e69c420 100644 --- a/nongnu/services/nvidia.scm +++ b/nongnu/services/nvidia.scm @@ -1,5 +1,5 @@ ;;; SPDX-License-Identifier: GPL-3.0-or-later -;;; Copyright © 2022 Hilton Chain +;;; Copyright © 2022, 2024 Hilton Chain (define-module (nongnu services nvidia) #:use-module (guix gexp) @@ -27,14 +27,20 @@ (default nvidia-module))) ; file-like (define (nvidia-shepherd-service config) - (list (shepherd-service - (documentation "Prepare system environment for NVIDIA driver.") - (provision '(nvidia)) - (requirement '(user-processes)) - (start #~(const #t)) - (stop #~(lambda _ - (let ((rmmod #$(file-append kmod "/bin/rmmod"))) - (system* rmmod "nvidia_uvm"))))))) + (let ((nvidia-driver (nvidia-configuration-driver config)) + (nvidia-smi (file-append nvidia-driver "/bin/nvidia-smi")) + (rmmod (file-append kmod "/bin/rmmod"))) + (list (shepherd-service + (documentation "Prepare system environment for NVIDIA driver.") + (provision '(nvidia)) + (requirement '(udev user-processes)) + (start + #~(lambda _ + (when (file-exists? #$nvidia-smi) + (system* #$nvidia-smi)))) + (stop + #~(lambda _ + (system* #$rmmod "nvidia_uvm"))))))) (define nvidia-service-type (service-type -- cgit v1.2.3