summaryrefslogtreecommitdiff
path: root/gnu/system.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-04-23 16:52:14 +0200
committerLudovic Courtès <ludo@gnu.org>2014-04-23 16:52:14 +0200
commit2106d3fc8112581d1d869a13b9a6a29ab4e48b57 (patch)
tree4131f658d59cb8e38094f9dac6af21d459959f4a /gnu/system.scm
parent0b6f49ef69b4429e05f6e76ccd2ee9e1d07e7776 (diff)
downloadgnu-guix-2106d3fc8112581d1d869a13b9a6a29ab4e48b57.tar
gnu-guix-2106d3fc8112581d1d869a13b9a6a29ab4e48b57.tar.gz
system: Add 'operating-system-boot-script'.
* gnu/system.scm (operating-system-boot-script): New procedure. (operating-system-derivation): Use it. Remove DMD-CONF from the file union. Add BOOT-DRV to the inputs.
Diffstat (limited to 'gnu/system.scm')
-rw-r--r--gnu/system.scm30
1 files changed, 18 insertions, 12 deletions
diff --git a/gnu/system.scm b/gnu/system.scm
index 0c330f1564..93858e972a 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -325,23 +325,29 @@ alias ll='ls -l'
#:timezone (operating-system-timezone os)
#:profile profile-drv)))
+(define (operating-system-boot-script os)
+ "Return the boot script for OS---i.e., the code started by the initrd once
+we're running in the final root."
+ (mlet* %store-monad
+ ((services (sequence %store-monad (operating-system-services os)))
+ (etc (operating-system-etc-directory os))
+ (dmd-conf (dmd-configuration-file services
+ (derivation->output-path etc))))
+ ;; FIXME: Use 'sexp-file' or similar.
+ (text-file* "boot"
+ "(execl \"" dmd "/bin/dmd\" \"dmd\"
+ \"--config\" \"" dmd-conf "\")")))
+
(define (operating-system-derivation os)
"Return a derivation that builds OS."
(mlet* %store-monad
- ((bash-file (package-file bash "bin/bash"))
- (dmd-file (package-file (@ (gnu packages admin) dmd) "bin/dmd"))
- (profile-drv (operating-system-profile-derivation os))
+ ((profile-drv (operating-system-profile-derivation os))
(profile -> (derivation->output-path profile-drv))
(etc-drv (operating-system-etc-directory os))
(etc -> (derivation->output-path etc-drv))
(services (sequence %store-monad (operating-system-services os)))
- (dmd-conf (dmd-configuration-file services etc))
-
-
- (boot (text-file "boot"
- (object->string
- `(execl ,dmd-file "dmd"
- "--config" ,dmd-conf))))
+ (boot-drv (operating-system-boot-script os))
+ (boot -> (derivation->output-path boot-drv))
(kernel -> (operating-system-kernel os))
(kernel-dir (package-file kernel))
(initrd (operating-system-initrd os))
@@ -364,12 +370,12 @@ alias ll='ls -l'
(file-union `(("boot" ,boot)
("kernel" ,kernel-dir)
("initrd" ,initrd-file)
- ("dmd.conf" ,dmd-conf)
("profile" ,profile)
("grub.cfg" ,grub.cfg)
("etc" ,etc)
("system-inputs" ,(derivation->output-path extras)))
- #:inputs `(("kernel" ,kernel)
+ #:inputs `(("boot" ,boot-drv)
+ ("kernel" ,kernel)
("initrd" ,initrd)
("bash" ,bash)
("profile" ,profile-drv)