M .gitignore => .gitignore +1 -0
@@ 125,3 125,4 @@ GTAGS
/doc/os-config-bare-bones.texi
/doc/os-config-desktop.texi
/doc/*.1
+/etc/guix-daemon.service
M daemon.am => daemon.am +13 -2
@@ 21,7 21,7 @@
#
BUILT_SOURCES += nix/libstore/schema.sql.hh
-CLEANFILES += $(BUILT_SOURCES)
+CLEANFILES += $(BUILT_SOURCES) etc/guix-daemon.service
noinst_LIBRARIES = libformat.a libutil.a libstore.a
@@ 181,10 181,21 @@ endif BUILD_DAEMON_OFFLOAD
nodist_libexec_SCRIPTS = \
nix/scripts/guix-authenticate
+# The '.service' file for systemd.
+systemdservicedir = $(libdir)/systemd/system
+nodist_systemdservice_DATA = etc/guix-daemon.service
+
+etc/guix-daemon.service: etc/guix-daemon.service.in \
+ $(top_builddir)/config.status
+ $(SED) -e 's|@''bindir''@|$(bindir)|' < \
+ "etc/guix-daemon.service.in" > "$@.tmp"
+ mv "$@.tmp" "$@"
+
EXTRA_DIST += \
nix/libstore/schema.sql \
nix/AUTHORS \
- nix/COPYING
+ nix/COPYING \
+ etc/guix-daemon.service.in
AM_TESTS_ENVIRONMENT += \
top_builddir="$(abs_top_builddir)"
M doc/guix.texi => doc/guix.texi +10 -2
@@ 330,6 330,10 @@ Run the daemon:
# ~root/.guix-profile/bin/guix-daemon --build-users-group=guixbuild
@end example
+On hosts using the systemd init system, drop
+@file{~root/.guix-profile/lib/systemd/system/guix-daemon.service} in
+@file{/etc/systemd/system}.
+
@item
Make the @command{guix} command available to other users on the machine,
for instance with:
@@ 512,8 516,12 @@ Bash syntax and the @code{shadow} commands):
@noindent
The number of build users determines how many build jobs may run in
parallel, as specified by the @option{--max-jobs} option
-(@pxref{Invoking guix-daemon, @option{--max-jobs}}).
-The @code{guix-daemon} program may then be run as @code{root} with:
+(@pxref{Invoking guix-daemon, @option{--max-jobs}}). The
+@code{guix-daemon} program may then be run as @code{root} with the
+following command@footnote{If your machine uses the systemd init system,
+dropping the @file{@var{prefix}/lib/systemd/system/guix-daemon.service}
+file in @file{/etc/systemd/system} will ensure that
+@command{guix-daemon} is automatically started.}:
@example
# guix-daemon --build-users-group=guixbuild
A etc/guix-daemon.service.in => etc/guix-daemon.service.in +15 -0
@@ 0,0 1,15 @@
+# This is a "service unit file" for the systemd init system to launch
+# 'guix-daemon'. Drop it in /etc/systemd/system or similar to have
+# 'guix-daemon' automatically started.
+
+[Unit]
+Description=Build daemon for GNU Guix
+
+[Service]
+ExecStart=@bindir@/guix-daemon --build-users-group=guixbuild
+RemainAfterExit=yes
+StandardOutput=syslog
+StandardError=syslog
+
+[Install]
+WantedBy=multi-user.target