summary refs log tree commit diff
path: root/gnu/services/dmd.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-05-10 22:58:22 +0200
committerLudovic Courtès <ludo@gnu.org>2014-05-10 22:58:22 +0200
commit23ed63a12d941ad836f3fc9902ba4f145db1975c (patch)
tree789261b023ac8f6f1036bc5225020a75df4fc2e9 /gnu/services/dmd.scm
parent29fa45f45d3192ad0f8d2c46523d7a7d6422c9e9 (diff)
downloadguix-23ed63a12d941ad836f3fc9902ba4f145db1975c.tar.gz
services: Use (guix build syscalls) instead of util-linux.
* gnu/services/dmd.scm (dmd-configuration-file): Add derivations for
  the (guix build syscalls) module, and add that to the load path of
  dmd.conf.
* gnu/services/base.scm (root-file-system-service): Rewrite using the
  'sync' and 'mount' procedures.
Diffstat (limited to 'gnu/services/dmd.scm')
-rw-r--r--gnu/services/dmd.scm56
1 files changed, 34 insertions, 22 deletions
diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm
index 161a971edd..8d4c483cc4 100644
--- a/gnu/services/dmd.scm
+++ b/gnu/services/dmd.scm
@@ -32,27 +32,39 @@
 
 (define (dmd-configuration-file services)
   "Return the dmd configuration file for SERVICES."
-  (define config
-    #~(begin
-        (use-modules (ice-9 ftw))
-
-        (register-services
-         #$@(map (lambda (service)
-                   #~(make <service>
-                       #:docstring '#$(service-documentation service)
-                       #:provides '#$(service-provision service)
-                       #:requires '#$(service-requirement service)
-                       #:respawn? '#$(service-respawn? service)
-                       #:start #$(service-start service)
-                       #:stop #$(service-stop service)))
-                 services))
-
-        ;; guix-daemon 0.6 aborts if 'PATH' is undefined, so work around it.
-        (setenv "PATH" "/run/current-system/bin")
-
-        (format #t "starting services...~%")
-        (for-each start '#$(append-map service-provision services))))
-
-  (gexp->file "dmd.conf" config))
+  (define modules
+    ;; Extra modules visible to dmd.conf.
+    '((guix build syscalls)))
+
+  (mlet %store-monad ((modules  (imported-modules modules))
+                      (compiled (compiled-modules modules)))
+    (define config
+      #~(begin
+          (eval-when (expand load eval)
+            (set! %load-path (cons #$modules %load-path))
+            (set! %load-compiled-path
+                  (cons #$compiled %load-compiled-path)))
+
+          (use-modules (ice-9 ftw)
+                       (guix build syscalls))
+
+          (register-services
+           #$@(map (lambda (service)
+                     #~(make <service>
+                         #:docstring '#$(service-documentation service)
+                         #:provides '#$(service-provision service)
+                         #:requires '#$(service-requirement service)
+                         #:respawn? '#$(service-respawn? service)
+                         #:start #$(service-start service)
+                         #:stop #$(service-stop service)))
+                   services))
+
+          ;; guix-daemon 0.6 aborts if 'PATH' is undefined, so work around it.
+          (setenv "PATH" "/run/current-system/bin")
+
+          (format #t "starting services...~%")
+          (for-each start '#$(append-map service-provision services))))
+
+    (gexp->file "dmd.conf" config)))
 
 ;;; dmd.scm ends here