diff options
-rw-r--r-- | gnu/services/shepherd.scm | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 207501cb1a..5d829e4c38 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -237,29 +237,30 @@ stored." (use-modules (srfi srfi-34) (system repl error-handling)) - ;; Arrange to spawn a REPL if loading one of FILES fails. This is - ;; better than a kernel panic. + ;; Arrange to spawn a REPL if something goes wrong. This is better + ;; than a kernel panic. (call-with-error-handling (lambda () - (apply register-services (map primitive-load '#$files)))) - - ;; guix-daemon 0.6 aborts if 'PATH' is undefined, so work around it. - (setenv "PATH" "/run/current-system/profile/bin") - - (format #t "starting services...~%") - (for-each (lambda (service) - ;; In the Shepherd 0.3 the 'start' method can raise - ;; '&action-runtime-error' if it fails, so protect - ;; against it. (XXX: 'action-runtime-error?' is not - ;; exported is 0.3, hence 'service-error?'.) - (guard (c ((service-error? c) - (format (current-error-port) - "failed to start service '~a'~%" - service))) - (start service))) - '#$(append-map shepherd-service-provision - (filter shepherd-service-auto-start? - services))))) + (apply register-services (map primitive-load '#$files)) + + ;; guix-daemon 0.6 aborts if 'PATH' is undefined, so work around + ;; it. + (setenv "PATH" "/run/current-system/profile/bin") + + (format #t "starting services...~%") + (for-each (lambda (service) + ;; In the Shepherd 0.3 the 'start' method can raise + ;; '&action-runtime-error' if it fails, so protect + ;; against it. (XXX: 'action-runtime-error?' is not + ;; exported is 0.3, hence 'service-error?'.) + (guard (c ((service-error? c) + (format (current-error-port) + "failed to start service '~a'~%" + service))) + (start service))) + '#$(append-map shepherd-service-provision + (filter shepherd-service-auto-start? + services))))))) (gexp->file "shepherd.conf" config))) |