summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHilton Chain <hako@ultrarare.space>2026-04-04 21:48:51 +0800
committerHilton Chain <hako@ultrarare.space>2026-04-04 21:48:51 +0800
commitd970fe51e3794fb5fadcea9863f09ab0cfbff290 (patch)
tree97acfae1f27d6dd71b116891578fb91912837e74
parent121aa9cba6a7fdffe1c90bc5e85e65b09479238b (diff)
services: nvidia: Support Dynamic Boost.
* nongnu/services/nvidia.scm (<nvidia-configuration>) [powerd]: New field. (nvidia-shepherd-service): New variable. (nvidia-service-type): Extend shepherd-root-service-type with it. Extend dbus-root-service-type.
-rw-r--r--nongnu/services/nvidia.scm23
1 files changed, 22 insertions, 1 deletions
diff --git a/nongnu/services/nvidia.scm b/nongnu/services/nvidia.scm
index 09fc838..7024e7a 100644
--- a/nongnu/services/nvidia.scm
+++ b/nongnu/services/nvidia.scm
@@ -9,6 +9,7 @@
#:use-module (gnu packages linux)
#:use-module (gnu services)
#:use-module (gnu services base)
+ #:use-module (gnu services dbus)
#:use-module (gnu services linux)
#:use-module (gnu services shepherd)
#:use-module (nongnu packages nvidia)
@@ -29,7 +30,9 @@
(modprobe nvidia-configuration-modprobe
(default nvidia-modprobe)) ; file-like
(settings nvidia-configuration-settings
- (default #f))) ; file-like or #f
+ (default #f)) ; file-like or #f
+ (powerd nvidia-configuration-powerd
+ (default #t))) ; boolean
(define (%nvidia-firmware config)
(match-record config <nvidia-configuration>
@@ -87,6 +90,20 @@ ACTION==\"unbind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\
ACTION==\"unbind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\"0x0c8000\", TEST==\"power/control\", ATTR{power/control}=\"on\"
")))
+(define nvidia-shepherd-service
+ (match-record-lambda <nvidia-configuration>
+ (driver powerd)
+ (if powerd
+ (list (shepherd-service
+ (documentation "NVIDIA Dynamic Boost support.")
+ (provision '(nvidia-powerd))
+ (requirement '(user-processes))
+ (start
+ #~(make-forkexec-constructor
+ (list #$(file-append driver "/bin/nvidia-powerd"))))
+ (stop #~(make-kill-destructor))))
+ '())))
+
(define nvidia-service-type
(service-type
(name 'nvidia)
@@ -97,6 +114,10 @@ ACTION==\"unbind\", SUBSYSTEM==\"pci\", ATTR{vendor}==\"0x10de\", ATTR{class}==\
nvidia-privileged-program)
(service-extension special-files-service-type
nvidia-special-files)
+ (service-extension shepherd-root-service-type
+ nvidia-shepherd-service)
+ (service-extension dbus-root-service-type
+ (compose list nvidia-configuration-driver))
(service-extension udev-service-type
nvidia-udev-rule)
(service-extension firmware-service-type