aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tropin <andrew@trop.in>2022-09-13 08:58:54 +0300
committerAndrew Tropin <andrew@trop.in>2022-09-14 18:25:11 +0300
commit6cdde65bb53b439f25f007df238f549ba2debc72 (patch)
tree7e7c4ed77529cf41ad04304bba41cffa4985c748
parentf64825730f8d655109e12e82222c3e0f25de6c2d (diff)
downloadguix-6cdde65bb53b439f25f007df238f549ba2debc72.tar
guix-6cdde65bb53b439f25f007df238f549ba2debc72.tar.gz
home: shepherd: Add daemonize? option to configuration.
* gnu/home/services/shepherd.scm (home-shepherd-configuration): Add DAEMONIZE?. (home-shepherd-configuration-file): Use CONFIG argument instead of two separate SERVICES and SHEPHERD, respect DAEMONIZE?. (ensure-shepherd-gexp, launch-shepherd-gexp, shepherd-xdg-configuration-files): Adjust according to arguments changes in HOME-SHEPHERD-CONFIGURATION-FILE.
-rw-r--r--gnu/home/services/shepherd.scm41
1 files changed, 22 insertions, 19 deletions
diff --git a/gnu/home/services/shepherd.scm b/gnu/home/services/shepherd.scm
index fcc7763a61..d2a803279f 100644
--- a/gnu/home/services/shepherd.scm
+++ b/gnu/home/services/shepherd.scm
@@ -54,19 +54,22 @@
(default shepherd-0.9)) ; package
(auto-start? home-shepherd-configuration-auto-start?
(default #t))
+ (daemonize? home-shepherd-configuration-daemonize?
+ (default #t))
(services home-shepherd-configuration-services
(default '())))
-(define (home-shepherd-configuration-file services shepherd)
+(define (home-shepherd-configuration-file config)
"Return the shepherd configuration file for SERVICES. SHEPHERD is used
as shepherd package."
- (assert-valid-graph services)
-
- (let ((files (map shepherd-service-file services))
- ;; TODO: Add compilation of services, it can improve start
- ;; time.
- ;; (scm->go (cute scm->go <> shepherd))
- )
+ (let* ((daemonize? (home-shepherd-configuration-daemonize? config))
+ (services (home-shepherd-configuration-services config))
+ (_ (assert-valid-graph services))
+ (files (map shepherd-service-file services))
+ ;; TODO: Add compilation of services, it can improve start
+ ;; time.
+ ;; (scm->go (cute scm->go <> shepherd))
+ )
(define config
#~(begin
(use-modules (srfi srfi-34)
@@ -76,7 +79,11 @@ as shepherd package."
(map
(lambda (file) (load file))
'#$files))
- (action 'root 'daemonize)
+
+ #$@(if daemonize?
+ `((action 'root 'daemonize))
+ '())
+
(format #t "Starting services...~%")
(let ((services-to-start
'#$(append-map shepherd-service-provision
@@ -92,8 +99,7 @@ as shepherd package."
(scheme-file "shepherd.conf" config)))
(define (launch-shepherd-gexp config)
- (let* ((shepherd (home-shepherd-configuration-shepherd config))
- (services (home-shepherd-configuration-services config)))
+ (let* ((shepherd (home-shepherd-configuration-shepherd config)))
(if (home-shepherd-configuration-auto-start? config)
(with-imported-modules '((guix build utils))
#~(unless (file-exists?
@@ -104,22 +110,22 @@ as shepherd package."
(let ((log-dir (or (getenv "XDG_LOG_HOME")
(format #f "~a/.local/var/log"
(getenv "HOME")))))
+ ;; TODO: Remove it, 0.9.2 creates it automatically?
((@ (guix build utils) mkdir-p) log-dir)
(system*
#$(file-append shepherd "/bin/shepherd")
"--logfile"
(string-append log-dir "/shepherd.log")
"--config"
- #$(home-shepherd-configuration-file services shepherd)))))
+ #$(home-shepherd-configuration-file config)))))
#~"")))
(define (reload-configuration-gexp config)
- (let* ((shepherd (home-shepherd-configuration-shepherd config))
- (services (home-shepherd-configuration-services config)))
+ (let* ((shepherd (home-shepherd-configuration-shepherd config)))
#~(system*
#$(file-append shepherd "/bin/herd")
"load" "root"
- #$(home-shepherd-configuration-file services shepherd))))
+ #$(home-shepherd-configuration-file config))))
(define (ensure-shepherd-gexp config)
#~(if (file-exists?
@@ -131,10 +137,7 @@ as shepherd package."
#$(launch-shepherd-gexp config)))
(define (shepherd-xdg-configuration-files config)
- (let* ((shepherd (home-shepherd-configuration-shepherd config))
- (services (home-shepherd-configuration-services config)))
- `(("shepherd/init.scm"
- ,(home-shepherd-configuration-file services shepherd)))))
+ `(("shepherd/init.scm" ,(home-shepherd-configuration-file config))))
(define-public home-shepherd-service-type
(service-type (name 'home-shepherd)