aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-06-20 09:44:27 +0200
committerLudovic Courtès <ludo@gnu.org>2018-06-20 10:05:18 +0200
commit661c237b4d8e670e73ea946179a94a3b956bb90e (patch)
tree12090ee441330c21df3e1978c1475ac8c4bc3e79
parent80f755090db5d67af5a44992d11799cb65792c3e (diff)
downloadguix-661c237b4d8e670e73ea946179a94a3b956bb90e.tar
guix-661c237b4d8e670e73ea946179a94a3b956bb90e.tar.gz
services: boot: Reverse the order of boot expressions.
* gnu/services.scm (compute-boot-script): Reverse MEXPS. * gnu/system.scm (essential-services): Reverse order of %SHEPHERD-ROOT-SERVICE, %ACTIVATION-SERVICE, and CLEANUP-SERVICE-TYPE.
-rw-r--r--gnu/services.scm6
-rw-r--r--gnu/system.scm8
2 files changed, 9 insertions, 5 deletions
diff --git a/gnu/services.scm b/gnu/services.scm
index 81af4df849..3162c6ba05 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -334,7 +334,11 @@ containing the given entries."
(extend system-derivation)))
(define (compute-boot-script _ mexps)
- (mlet %store-monad ((gexps (sequence %store-monad mexps)))
+ ;; Reverse MEXPS so that extensions appear in the boot script in the right
+ ;; order. That is, user extensions would come first, and extensions added
+ ;; by 'essential-services' (e.g., running shepherd) are guaranteed to come
+ ;; last.
+ (mlet %store-monad ((gexps (sequence %store-monad (reverse mexps))))
(gexp->file "boot"
;; Clean up and activate the system, then spawn shepherd.
#~(begin #$@gexps))))
diff --git a/gnu/system.scm b/gnu/system.scm
index d367307a24..7c51c4da97 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -470,13 +470,13 @@ a container or that of a \"bare metal\" system."
(cons* (service system-service-type entries)
%boot-service
- ;; %SHEPHERD-ROOT-SERVICE must come first so that the gexp that
+ ;; %SHEPHERD-ROOT-SERVICE must come last so that the gexp that
;; execs shepherd comes last in the boot script (XXX). Likewise,
- ;; the cleanup service must come last so that its gexp runs before
+ ;; the cleanup service must come first so that its gexp runs before
;; activation code.
- %shepherd-root-service
- %activation-service
(service cleanup-service-type #f)
+ %activation-service
+ %shepherd-root-service
(pam-root-service (operating-system-pam-services os))
(account-service (append (operating-system-accounts os)