diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-04-23 16:52:14 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-04-23 16:52:14 +0200 |
commit | 2106d3fc8112581d1d869a13b9a6a29ab4e48b57 (patch) | |
tree | 4131f658d59cb8e38094f9dac6af21d459959f4a /gnu/system.scm | |
parent | 0b6f49ef69b4429e05f6e76ccd2ee9e1d07e7776 (diff) | |
download | gnu-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.scm | 30 |
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) |