summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/system/dmd.scm21
-rw-r--r--gnu/system/vm.scm5
2 files changed, 24 insertions, 2 deletions
diff --git a/gnu/system/dmd.scm b/gnu/system/dmd.scm
index 7fc4650c25..b248d9f0c5 100644
--- a/gnu/system/dmd.scm
+++ b/gnu/system/dmd.scm
@@ -21,6 +21,8 @@
   #:use-module (guix packages)
   #:use-module (guix derivations)
   #:use-module (guix records)
+  #:use-module ((gnu packages base)
+                #:select (glibc-final))
   #:use-module ((gnu packages system)
                 #:select (mingetty inetutils))
   #:use-module ((gnu packages package-management)
@@ -39,6 +41,7 @@
             host-name-service
             syslog-service
             mingetty-service
+            nscd-service
             guix-service
             static-networking-service
 
@@ -87,6 +90,24 @@
      (start `(make-forkexec-constructor ,mingetty-bin "--noclear" ,tty))
      (inputs `(("mingetty" ,mingetty))))))
 
+(define* (nscd-service store
+                       #:key (glibc glibc-final))
+  "Return a service that runs libc's name service cache daemon (nscd)."
+  (let ((nscd (string-append (package-output store glibc) "/sbin/nscd")))
+    (service
+     (provision '(nscd))
+     (start `(make-forkexec-constructor ,nscd "-f" "/dev/null"))
+
+     ;; XXX: Local copy of 'make-kill-destructor' because the one upstream
+     ;; uses the broken 'opt-lambda' macro.
+     (stop  `(lambda* (#:optional (signal SIGTERM))
+               (lambda (pid . args)
+                 (kill pid signal)
+                 #f)))
+
+     (respawn? #f)
+     (inputs `(("glibc" ,glibc))))))
+
 (define (syslog-service store)
   "Return a service that runs 'syslogd' with reasonable default settings."
 
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index b873386606..0ed805510a 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -456,6 +456,7 @@ Happy birthday, GNU!                                http://www.gnu.org/gnu30
           (mingetty-service store "tty6")
           (syslog-service store)
           (guix-service store #:guix guix-0.4)
+          (nscd-service store)
 
           ;; QEMU networking settings.
           (static-networking-service store "eth0" "10.0.2.10")))
@@ -517,8 +518,8 @@ You can log in as 'root' with no password.
 "))
 
            (populate `((directory "/etc")
-                       (directory "/var/log")
-                       (directory "/var/run")
+                       (directory "/var/log")     ; for dmd
+                       (directory "/var/run/nscd")
                        ("/etc/shadow" -> ,shadow)
                        ("/etc/passwd" -> ,passwd)
                        ("/etc/login.defs" -> "/dev/null")