From 56d16b4cd511f6837329b888dade0c6d6da4d89d Mon Sep 17 00:00:00 2001 From: Andrew Tropin Date: Tue, 12 Apr 2022 12:19:50 +0300 Subject: [PATCH 2/3] home: shepherd: Use run-on-change to reload shepherd config. * gnu/home/services/shepherd.scm: Add shepherd configuration to XDG_CONFIG_HOME and use it instead of full path to the store. It's necessary to use run-on-change service. --- gnu/home/services/shepherd.scm | 40 +++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/gnu/home/services/shepherd.scm b/gnu/home/services/shepherd.scm index df6bbb30e6..9a99fed2b5 100644 --- a/gnu/home/services/shepherd.scm +++ b/gnu/home/services/shepherd.scm @@ -105,27 +105,30 @@ (define (launch-shepherd-gexp config) (system* #$(file-append shepherd "/bin/shepherd") "--logfile" - (string-append log-dir "/shepherd.log") - "--config" - #$(home-shepherd-configuration-file services shepherd))))) + (string-append log-dir "/shepherd.log"))))) #~""))) (define (reload-configuration-gexp config) (let* ((shepherd (home-shepherd-configuration-shepherd config)) (services (home-shepherd-configuration-services config))) - #~(system* - #$(file-append shepherd "/bin/herd") - "load" "root" - #$(home-shepherd-configuration-file services shepherd)))) + #~(when (file-exists? + (string-append + (or (getenv "XDG_RUNTIME_DIR") + (format #f "/run/user/~a" (getuid))) + "/shepherd/socket")) + (system* + #$(file-append shepherd "/bin/herd") + "load" "root" + #$(home-shepherd-configuration-file services shepherd))))) -(define (ensure-shepherd-gexp config) - #~(if (file-exists? - (string-append - (or (getenv "XDG_RUNTIME_DIR") - (format #f "/run/user/~a" (getuid))) - "/shepherd/socket")) - #$(reload-configuration-gexp config) - #$(launch-shepherd-gexp config))) +(define (add-shepherd-configuration config) + (let* ((shepherd (home-shepherd-configuration-shepherd config)) + (services (home-shepherd-configuration-services config))) + `(("shepherd/init.scm" + ,(home-shepherd-configuration-file services shepherd))))) + +(define (home-shepherd-run-on-change config) + `(("files/.config/shepherd/init.scm" ,(reload-configuration-gexp config)))) (define-public home-shepherd-service-type (service-type (name 'home-shepherd) @@ -134,8 +137,11 @@ (define-public home-shepherd-service-type home-run-on-first-login-service-type launch-shepherd-gexp) (service-extension - home-activation-service-type - ensure-shepherd-gexp) + home-xdg-configuration-files-service-type + add-shepherd-configuration) + (service-extension + home-run-on-change-service-type + home-shepherd-run-on-change) (service-extension home-profile-service-type (lambda (config) -- 2.35.1