(address . guix-patches@gnu.org)(name . Adrien 'neox' Bourmault)(address . neox@gnu.org)
Hi! I've created a fancontrol service for my own use on a KGPE-D16
workstation, and wanted to share it with GNU Guix. The configuration
has to be generated upstream with pwmconfig (lm-sensors package)
and you just have to tell the service where it is for it to work.
Change-Id: I120e54cbf849eebd088be2a4d0a0113ffcdfcd84
Signed-off-by: Adrien 'neox' Bourmault <neox@gnu.org>
---
gnu/services/pm.scm | 32 +++++++++++++++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
Toggle diff (49 lines)
diff --git a/gnu/services/pm.scm b/gnu/services/pm.scm
index 3daf484cc1..1b305e76a6 100644
--- a/gnu/services/pm.scm
+++ b/gnu/services/pm.scm
@@ -31,7 +31,9 @@ (define-module (gnu services pm)
tlp-configuration
thermald-configuration
- thermald-service-type))
+ thermald-service-type
+
+ fancontrol-service-type))
(define (uglify-field-name field-name)
(let ((str (symbol->string field-name)))
@@ -466,3 +468,31 @@ (define thermald-service-type
(default-value (thermald-configuration))
(description "Run thermald, a CPU frequency scaling service that helps
prevent overheating.")))
+
+;;;
+;;; fancontrol
+;;;
+;;; This service implements fan control in conjunction with the tools in the
+;;; lm-sensors package (pwmconfig/fancontrol).
+
+(define (fancontrol-shepherd-service config)
+ (shepherd-service
+ (documentation "Run the fancontrol daemon (fancontrol-daemon)." )
+ (provision '(fancontrol))
+ (requirement '(udev user-processes))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append lm-sensors "/sbin/fancontrol")
+ #$config)
+ #:user "root" #:group "root"
+ #:log-file "/var/log/fancontrol.log"))
+ (stop #~(make-kill-destructor))))
+
+(define fancontrol-service-type
+ (service-type
+ (name 'fancontrol)
+ (description
+ "Run fancontrol as a daemon.")
+ (extensions
+ (list (service-extension shepherd-root-service-type
+ (compose list fancontrol-shepherd-service))))))
+
--
2.41.0