From d2825c96141c7b6844d9e04f982919c0509165e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 15 Jul 2015 17:13:16 +0200 Subject: [PATCH] Add 'guix-daemon.service' file for systemd. * etc/guix-daemon.service.in: New file, provided by Ricardo Wurmus. * daemon.am (CLEANFILES): Add etc/guix-daemon.service. (systemdservicedir, nodist_systemdservice_DATA): New variables. (EXTRA_DIST): Add etc/guix-daemon.service.in. * doc/guix.texi (Binary Installation, Build Environment Setup): Mention 'guix-daemon.service'. --- .gitignore | 1 + daemon.am | 15 +++++++++++++-- doc/guix.texi | 12 ++++++++++-- etc/guix-daemon.service.in | 15 +++++++++++++++ 4 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 etc/guix-daemon.service.in diff --git a/.gitignore b/.gitignore index c1061d73e5..c7a6cddaa0 100644 --- a/.gitignore +++ b/.gitignore @@ -125,3 +125,4 @@ GTAGS /doc/os-config-bare-bones.texi /doc/os-config-desktop.texi /doc/*.1 +/etc/guix-daemon.service diff --git a/daemon.am b/daemon.am index eecfea1c7e..1fee9b7e57 100644 --- a/daemon.am +++ b/daemon.am @@ -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)" diff --git a/doc/guix.texi b/doc/guix.texi index 7d18c00cb2..e4662cbfe1 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -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 diff --git a/etc/guix-daemon.service.in b/etc/guix-daemon.service.in new file mode 100644 index 0000000000..28ef000920 --- /dev/null +++ b/etc/guix-daemon.service.in @@ -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