mirror of
https://https.git.savannah.gnu.org/git/guix.git/
synced 2025-07-14 11:00:36 +02:00
services: Add a service for rasdaemon.
* gnu/services/linux.scm (rasdaemon-configuration, rasdaemon-configuration?, rasdaemon-configuration-record?, rasdaemon-service-type): New variables. * doc/guix.texi (Linux Services): Document it. Signed-off-by: Leo Famulari <leo@famulari.name>
This commit is contained in:
parent
794e26fda7
commit
2c93df3d11
2 changed files with 130 additions and 0 deletions
|
@ -3,6 +3,7 @@
|
|||
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
|
||||
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
|
||||
;;; Copyright © 2021 B. Wilson <elaexuotee@wilsonb.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -47,6 +48,11 @@
|
|||
|
||||
kernel-module-loader-service-type
|
||||
|
||||
rasdaemon-configuration
|
||||
rasdaemon-configuration?
|
||||
rasdaemon-configuration-record?
|
||||
rasdaemon-service-type
|
||||
|
||||
zram-device-configuration
|
||||
zram-device-configuration?
|
||||
zram-device-configuration-size
|
||||
|
@ -188,6 +194,49 @@ representation."
|
|||
(extend append)
|
||||
(default-value '())))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Reliability, Availability, and Serviceability (RAS) daemon
|
||||
;;;
|
||||
|
||||
(define-record-type* <rasdaemon-configuration>
|
||||
rasdaemon-configuration make-rasdaemon-configuration
|
||||
rasdaemon-configuration?
|
||||
(record? rasdaemon-configuration-record? (default #f)))
|
||||
|
||||
(define (rasdaemon-configuration->command-line-args config)
|
||||
"Translate <rasdaemon-configuration> to its command line arguments
|
||||
representation"
|
||||
(let ((record? (rasdaemon-configuration-record? config)))
|
||||
`(,(file-append rasdaemon "/sbin/rasdaemon")
|
||||
"--foreground" ,@(if record? '("--record") '()))))
|
||||
|
||||
(define (rasdaemon-activation config)
|
||||
(let ((record? (rasdaemon-configuration-record? config))
|
||||
(rasdaemon-dir "/var/lib/rasdaemon"))
|
||||
(with-imported-modules '((guix build utils))
|
||||
#~(if #$record? (mkdir-p #$rasdaemon-dir)))))
|
||||
|
||||
(define (rasdaemon-shepherd-service config)
|
||||
(shepherd-service
|
||||
(documentation "Run rasdaemon")
|
||||
(provision '(rasdaemon))
|
||||
(requirement '(syslogd))
|
||||
(start #~(make-forkexec-constructor
|
||||
'#$(rasdaemon-configuration->command-line-args config)))
|
||||
(stop #~(make-kill-destructor))))
|
||||
|
||||
(define rasdaemon-service-type
|
||||
(service-type
|
||||
(name 'rasdaemon)
|
||||
(default-value (rasdaemon-configuration))
|
||||
(extensions
|
||||
(list (service-extension shepherd-root-service-type
|
||||
(compose list rasdaemon-shepherd-service))
|
||||
(service-extension activation-service-type rasdaemon-activation)))
|
||||
(compose concatenate)
|
||||
(description "Run @command{rasdaemon}, the RAS monitor")))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Kernel module loader.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue