diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-02-16 23:28:54 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-02-16 23:31:08 +0100 |
commit | 8b9cad01e9619f53dc5a65892ca6a09ca5de3447 (patch) | |
tree | 2a3fa484827f57c70e16bb00d01fcae59b5811d7 /gnu/services | |
parent | 139a9887843d0ea7dd724c4dd0d00470337370b3 (diff) |
services: shepherd: Spawn services with nothing but the PATH variable.
Previously, services spawned with 'make-forkexec-constructor' &
co. would all inherit the environment variables of PID 1, which includes
things like 'BOOT_IMAGE'. This change resets it to the bare minimum.
* gnu/services/shepherd.scm (shepherd-configuration-file): Add call to
'default-environment-variables'. Remove 'setenv' call.
Diffstat (limited to 'gnu/services')
-rw-r--r-- | gnu/services/shepherd.scm | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 08bb33039c..d483ff1a15 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; @@ -281,6 +281,12 @@ and return the resulting '.go' file." (use-modules (srfi srfi-34) (system repl error-handling)) + ;; Specify the default environment visible to all the services. + ;; Without this statement, all the environment variables of PID 1 + ;; are inherited by child services. + (default-environment-variables + '("PATH=/run/current-system/profile/bin")) + ;; Arrange to spawn a REPL if something goes wrong. This is better ;; than a kernel panic. (call-with-error-handling @@ -288,10 +294,6 @@ and return the resulting '.go' file." (apply register-services (map load-compiled '#$(map scm->go 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 |