summary refs log tree commit diff
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)
downloadguix-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)