summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/services/avahi.scm4
-rw-r--r--gnu/services/base.scm55
-rw-r--r--gnu/services/dbus.scm6
-rw-r--r--gnu/services/ssh.scm2
-rw-r--r--gnu/services/xorg.scm7
5 files changed, 33 insertions, 41 deletions
diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm
index 4ba1a513ab..e8da6be5f5 100644
--- a/gnu/services/avahi.scm
+++ b/gnu/services/avahi.scm
@@ -88,8 +88,8 @@ sockets."
       (requirement '(dbus-system networking))
 
       (start #~(make-forkexec-constructor
-                (string-append #$avahi "/sbin/avahi-daemon")
-                "--syslog" "-f" #$config))
+                (list (string-append #$avahi "/sbin/avahi-daemon")
+                      "--syslog" "-f" #$config)))
       (stop #~(make-kill-destructor))
       (activate #~(begin
                     (use-modules (guix build utils))
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index bab07aa4b7..030121625b 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -236,17 +236,17 @@ the \"message of the day\"."
       (requirement '(user-processes host-name))
 
       (start  #~(make-forkexec-constructor
-                 (string-append #$mingetty "/sbin/mingetty")
-                 "--noclear" #$tty
-                 #$@(if auto-login
-                        #~("--autologin" #$auto-login)
-                        #~())
-                 #$@(if login-program
-                        #~("--loginprog" #$login-program)
-                        #~())
-                 #$@(if login-pause?
-                        #~("--loginpause")
-                        #~())))
+                 (list (string-append #$mingetty "/sbin/mingetty")
+                       "--noclear" #$tty
+                       #$@(if auto-login
+                              #~("--autologin" #$auto-login)
+                              #~())
+                       #$@(if login-program
+                              #~("--loginprog" #$login-program)
+                              #~())
+                       #$@(if login-pause?
+                              #~("--loginpause")
+                              #~()))))
       (stop   #~(make-kill-destructor))
 
       (pam-services
@@ -269,10 +269,9 @@ the \"message of the day\"."
                            (use-modules (guix build utils))
                            (mkdir-p "/var/run/nscd")))
 
-             (start
-              #~(make-forkexec-constructor (string-append #$glibc "/sbin/nscd")
-                                           "-f" "/dev/null"
-                                           "--foreground"))
+             (start #~(make-forkexec-constructor
+                       (list (string-append #$glibc "/sbin/nscd")
+                             "-f" "/dev/null" "--foreground")))
              (stop #~(make-kill-destructor))
 
              (respawn? #f)))))
@@ -310,10 +309,9 @@ the \"message of the day\"."
       (provision '(syslogd))
       (requirement '(user-processes))
       (start
-       #~(make-forkexec-constructor (string-append #$inetutils
-                                                   "/libexec/syslogd")
-                                    "--no-detach"
-                                    "--rcfile" #$syslog.conf))
+       #~(make-forkexec-constructor
+          (list (string-append #$inetutils "/libexec/syslogd")
+                "--no-detach" "--rcfile" #$syslog.conf)))
       (stop #~(make-kill-destructor))))))
 
 (define* (guix-build-accounts count #:key
@@ -387,10 +385,9 @@ hydra.gnu.org are used by default."
              (provision '(guix-daemon))
              (requirement '(user-processes))
              (start
-              #~(make-forkexec-constructor (string-append #$guix
-                                                          "/bin/guix-daemon")
-                                           "--build-users-group"
-                                           #$builder-group))
+              #~(make-forkexec-constructor
+                 (list (string-append #$guix "/bin/guix-daemon")
+                       "--build-users-group" #$builder-group)))
              (stop #~(make-kill-destructor))
              (user-accounts accounts)
              (user-groups (list (user-group
@@ -409,6 +406,9 @@ hydra.gnu.org are used by default."
              (requirement '(root-file-system))
              (documentation "Populate the /dev directory.")
              (start #~(lambda ()
+                        (define udevd
+                          (string-append #$udev "/libexec/udev/udevd"))
+
                         ;; Allow udev to find the modules.
                         (setenv "LINUX_MODULE_DIRECTORY"
                                 "/run/booted-system/kernel/lib/modules")
@@ -416,14 +416,7 @@ hydra.gnu.org are used by default."
                         (let ((pid (primitive-fork)))
                           (case pid
                             ((0)
-                             ;; In dmd 0.1, file descriptor 0 is closed, thus
-                             ;; is gets reused when open(2) is called, and it
-                             ;; turns out that EPOLL_CTL_ADD of 0 returns
-                             ;; EPERM for some reason.  So make sure 0 is
-                             ;; open.
-                             ;; FIXME: Close the other descriptors.
-                             (execl (string-append #$udev "/libexec/udev/udevd")
-                                    "udevd"))
+                             (exec-command (list udevd)))
                             (else
                              ;; Wait for things to settle down.
                              (system* (string-append #$udev "/bin/udevadm")
diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm
index 2f67e26a1e..6076317ee5 100644
--- a/gnu/services/dbus.scm
+++ b/gnu/services/dbus.scm
@@ -81,9 +81,9 @@ and policy files.  For example, to allow avahi-daemon to use the system bus,
       (provision '(dbus-system))
       (requirement '(user-processes))
       (start #~(make-forkexec-constructor
-                (string-append #$dbus "/bin/dbus-daemon")
-                "--nofork"
-                (string-append "--config-file=" #$conf "/system.conf")))
+                (list (string-append #$dbus "/bin/dbus-daemon")
+                      "--nofork"
+                      (string-append "--config-file=" #$conf "/system.conf"))))
       (stop #~(make-kill-destructor))
       (user-groups (list (user-group
                           (name "messagebus"))))
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index 6d40cb489b..fc46c345de 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -125,7 +125,7 @@ The other options should be self-descriptive."
              (documentation "GNU lsh SSH server")
              (provision '(ssh-daemon))
              (requirement '(networking))
-             (start #~(make-forkexec-constructor #$@lsh-command))
+             (start #~(make-forkexec-constructor (list #$@lsh-command)))
              (stop  #~(make-kill-destructor))
              (pam-services
               (list (unix-pam-service
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 7215297f69..5eae4a87d8 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -163,11 +163,10 @@ reboot_cmd " dmd "/sbin/reboot
       (provision '(xorg-server))
       (requirement '(user-processes host-name))
       (start
-       ;; XXX: Work around the inability to specify env. vars. directly.
        #~(make-forkexec-constructor
-          (string-append #$bash "/bin/sh") "-c"
-          (string-append "SLIM_CFGFILE=" #$slim.cfg
-                         " " #$slim "/bin/slim" " -nodaemon")))
+          (list (string-append #$slim "/bin/slim") "-nodaemon")
+          #:environment-variables
+          (list (string-append "SLIM_CFGFILE=" #$slim.cfg))))
       (stop #~(make-kill-destructor))
       (respawn? #t)
       (pam-services