all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Hartmut Goebel <h.goebel@crazy-compilers.com>
To: guix-devel@gnu.org
Subject: [PATCH 2/2] Add system start-up files for "guix publish".
Date: Fri, 18 Nov 2016 12:00:34 +0100	[thread overview]
Message-ID: <1479466834-3508-3-git-send-email-h.goebel@crazy-compilers.com> (raw)
In-Reply-To: <1479466834-3508-1-git-send-email-h.goebel@crazy-compilers.com>

* .gitignore: add etc/guix-publish.conf and /etc/guix-publish.service.
* etc/guix-publish.conf.in: New file.
* etc/guix-publish.service.in: New file.
* nix/local.mk (etc/guix-%.service, etc/guix-%.conf): Generalized former
  build-rules for by using patterns.
  (nodist_systemdservice_DATA): Add etc/guix-publish.service, update
  comment.
  (nodist_upstartjob_DATA): Add etc/guix-publish.conf, update comment.
* doc/guix.texi (Binary Installation): Add step for setting up "guix
  publish" to start at system start using the new files.
---
 .gitignore                  |  2 ++
 doc/guix.texi               | 34 ++++++++++++++++++++++++++++++++++
 etc/guix-publish.conf.in    | 12 ++++++++++++
 etc/guix-publish.service.in | 19 +++++++++++++++++++
 nix/local.mk                | 16 ++++++++--------
 5 files changed, 75 insertions(+), 8 deletions(-)
 create mode 100644 etc/guix-publish.conf.in
 create mode 100644 etc/guix-publish.service.in

diff --git a/.gitignore b/.gitignore
index 6e892ca..7db5e9f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,6 +50,8 @@
 /emacs/guix-helper.scm
 /etc/guix-daemon.conf
 /etc/guix-daemon.service
+/etc/guix-publish.conf
+/etc/guix-publish.service
 /guix-daemon
 /guix-register
 /guix/config.scm
diff --git a/doc/guix.texi b/doc/guix.texi
index 92d7ee8..760639f 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -504,6 +504,40 @@ To use substitutes from @code{hydra.gnu.org} or one of its mirrors
 @example
 # guix archive --authorize < ~root/.guix-profile/share/guix/hydra.gnu.org.pub
 @end example
+
+@item
+(Optional) You may want to publish the content of your store for other
+systems in your network. For this run
+@example
+# guix archive --generate-key
+# useradd -U -d /var/empty -s `which nologin`    \
+           -c "Guix publish user" --system    \
+           guixpublish
+@end example
+
+Set @command{guix publish} to automatically start on boot.
+
+If your host distro uses the systemd init system, this can be achieved
+with these commands:
+
+@example
+# ln -s ~root/.guix-profile/lib/systemd/system/guix-publish.service \
+        /etc/systemd/system/
+# systemctl start guix-publish && systemctl enable guix-publish
+@end example
+
+If your host distro uses the Upstart init system:
+
+@example
+# ln -s ~root/.guix-profile/lib/upstart/system/guix-publish.conf /etc/init/
+# start guix-publish
+@end example
+
+Otherwise, you can still start @command{guix publish} manually with:
+
+@example
+# ~root/.guix-profile/bin/guix publish --user=guixpublish
+@end example
 @end enumerate
 
 This completes root-level install of Guix.  Each user will need to
diff --git a/etc/guix-publish.conf.in b/etc/guix-publish.conf.in
new file mode 100644
index 0000000..bf8b3f3
--- /dev/null
+++ b/etc/guix-publish.conf.in
@@ -0,0 +1,12 @@
+# This is a "job" for the Upstart init system to launch 'guix-daemon'.
+# Drop it in /etc/init to have 'guix-daemon' automatically started.
+
+description "Publish the GNU Guix store"
+
+start on runlevel [2345]
+
+stop on runlevel [016]
+
+task
+
+exec @bindir@/guix publish --user=guixpublish --port=8181
diff --git a/etc/guix-publish.service.in b/etc/guix-publish.service.in
new file mode 100644
index 0000000..bb3069c
--- /dev/null
+++ b/etc/guix-publish.service.in
@@ -0,0 +1,19 @@
+# This is a "service unit file" for the systemd init system to launch
+# 'guix publish'.  Drop it in /etc/systemd/system or similar to have
+# 'guix publish' automatically started.
+
+[Unit]
+Description=Publish the GNU Guix store
+
+[Service]
+ExecStart=@bindir@/guix publish --user=guixpublish --port=8181
+Environment=GUIX_LOCPATH=/root/.guix-profile/lib/locale
+RemainAfterExit=yes
+StandardOutput=syslog
+StandardError=syslog
+
+# See <https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00608.html>.
+TasksMax=1024
+
+[Install]
+WantedBy=multi-user.target
diff --git a/nix/local.mk b/nix/local.mk
index c666edd..6cdcc84 100644
--- a/nix/local.mk
+++ b/nix/local.mk
@@ -180,26 +180,26 @@ endif BUILD_DAEMON_OFFLOAD
 nodist_libexec_SCRIPTS =			\
   %D%/scripts/guix-authenticate
 
-# The '.service' file for systemd.
+# The '.service' files for systemd.
 systemdservicedir = $(libdir)/systemd/system
-nodist_systemdservice_DATA = etc/guix-daemon.service
+nodist_systemdservice_DATA = etc/guix-daemon.service etc/guix-publish.service
 
-etc/guix-daemon.service: etc/guix-daemon.service.in	\
+etc/guix-%.service: etc/guix-%.service.in	\
 			 $(top_builddir)/config.status
 	$(AM_V_GEN)$(MKDIR_P) "`dirname $@`";				\
 	$(SED) -e 's|@''bindir''@|$(bindir)|' <				\
-	       "$(srcdir)/etc/guix-daemon.service.in" > "$@.tmp";	\
+	       "$(srcdir)/$<" > "$@.tmp";	\
 	mv "$@.tmp" "$@"
 
-# The '.conf' job for Upstart.
+# The '.conf' jobs for Upstart.
 upstartjobdir = $(libdir)/upstart/system
-nodist_upstartjob_DATA = etc/guix-daemon.conf
+nodist_upstartjob_DATA = etc/guix-daemon.conf etc/guix-publish.conf
 
-etc/guix-daemon.conf: etc/guix-daemon.conf.in	\
+etc/guix-%.conf: etc/guix-%.conf.in	\
 			 $(top_builddir)/config.status
 	$(AM_V_GEN)$(MKDIR_P) "`dirname $@`";				\
 	$(SED) -e 's|@''bindir''@|$(bindir)|' <				\
-	       "$(srcdir)/etc/guix-daemon.conf.in" > "$@.tmp";		\
+	       "$(srcdir)/$<" > "$@.tmp";		\
 	mv "$@.tmp" "$@"
 
 EXTRA_DIST +=					\
-- 
2.7.4

  parent reply	other threads:[~2016-11-18 11:00 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-18 11:00 [PATCH 0/2] Hartmut Goebel
2016-11-18 11:00 ` [PATCH 1/2] doc: Symlink daemon start-up files Hartmut Goebel
2016-11-18 20:31   ` Leo Famulari
2016-11-21 16:38     ` Hartmut Goebel
2017-01-15 18:23     ` Leo Famulari
2017-01-15 19:23       ` Marius Bakke
2017-01-16  9:49       ` Ludovic Courtès
2017-03-05 20:55         ` Leo Famulari
2017-03-06  9:10           ` Hartmut Goebel
2017-03-06 10:23           ` Ludovic Courtès
2017-01-16 10:02       ` Hartmut Goebel
2016-11-18 11:00 ` Hartmut Goebel [this message]
2016-11-18 20:35   ` [PATCH 2/2] Add system start-up files for "guix publish" Leo Famulari
2016-11-21  8:52   ` Ludovic Courtès
2016-11-21 17:17     ` Hartmut Goebel
2016-11-18 20:36 ` [PATCH 0/2] Leo Famulari

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1479466834-3508-3-git-send-email-h.goebel@crazy-compilers.com \
    --to=h.goebel@crazy-compilers.com \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.