<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guix/etc/guix-daemon.service.in, branch master</title>
<subtitle>Transactional package manager, declarative GNU/Linux distribution, reproducible deployment tool, and more! https://guix.gnu.org</subtitle>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/'/>
<entry>
<title>guix-daemon.service.in: Make service restartable.</title>
<updated>2025-12-22T21:48:48+00:00</updated>
<author>
<name>Rutherther</name>
<email>rutherther@ditigal.xyz</email>
</author>
<published>2025-12-22T15:48:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=9a78e760762c1d93369e765bdce12388e1662ec6'/>
<id>9a78e760762c1d93369e765bdce12388e1662ec6</id>
<content type='text'>
Currently the service cannot be restarted, because the gnu store mount makes
it read-only. So fix this by removing the mount when starting the service.

"-" to accept failures, in case the command doesn't finish successfully,
chances are, the store can be mounted as RW, so continue.
"+" to run as root

Fixes: #4744

* etc/guix-daemon.service.in
(Service)&lt;ExecStartPre&gt;: Stop gnu-store.mount
(Service)&lt;ExecStartPost&gt;: Start gnu-store.mount

Change-Id: I296f5d8805497f8a7364b68d627eb6d4fc05dbff
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently the service cannot be restarted, because the gnu store mount makes
it read-only. So fix this by removing the mount when starting the service.

"-" to accept failures, in case the command doesn't finish successfully,
chances are, the store can be mounted as RW, so continue.
"+" to run as root

Fixes: #4744

* etc/guix-daemon.service.in
(Service)&lt;ExecStartPre&gt;: Stop gnu-store.mount
(Service)&lt;ExecStartPost&gt;: Start gnu-store.mount

Change-Id: I296f5d8805497f8a7364b68d627eb6d4fc05dbff
</pre>
</div>
</content>
</entry>
<entry>
<title>etc: guix-daemon.service.in: Mitigate mount race condition</title>
<updated>2025-08-29T15:43:35+00:00</updated>
<author>
<name>Ingar</name>
<email>ingar@onionmail.info</email>
</author>
<published>2025-08-26T19:12:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=d2c71bfd72fb54121d76de0ca38af967e6d71740'/>
<id>d2c71bfd72fb54121d76de0ca38af967e6d71740</id>
<content type='text'>
This mitigates a race condition described in #576. The 'Type=exec'
option ensures that systemd only starts follow-up units after the
guix-daemon binary has started. By then, the mount points are collected
in a private namespace and will not be affected. Without this option,
'gnu-store.mount' could win the race and remount everything read-only
before guix-daemon has acquired a read-write view.

Fixes #2270

* etc/guix-daemon.service.in: Mitigate mount race condition

Change-Id: I5d28ebc38b0c10e6d2aa8e65353757ef13d5bad3
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This mitigates a race condition described in #576. The 'Type=exec'
option ensures that systemd only starts follow-up units after the
guix-daemon binary has started. By then, the mount points are collected
in a private namespace and will not be affected. Without this option,
'gnu-store.mount' could win the race and remount everything read-only
before guix-daemon has acquired a read-write view.

Fixes #2270

* etc/guix-daemon.service.in: Mitigate mount race condition

Change-Id: I5d28ebc38b0c10e6d2aa8e65353757ef13d5bad3
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>etc: guix-daemon.service.in: Disable host filesystem mount propagation.</title>
<updated>2025-07-01T20:34:40+00:00</updated>
<author>
<name>Ivan Popovych</name>
<email>ivan@ipvych.com</email>
</author>
<published>2025-06-14T14:42:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=5db599f41a14550ea2595e2caed966d75bcd8ae6'/>
<id>5db599f41a14550ea2595e2caed966d75bcd8ae6</id>
<content type='text'>
This fixes issue for rootless guix daemon where store being remounted
read-only by gnu-store.mount is propagated to the guix daemon making
guix daemon not able to modify it.

* etc/guix-daemon.service.in: Disable host filesystem mount propagation.

Change-Id: Ib1abc387ee15d2b04d6f70c121244943cd0ad8c6
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Modified-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes issue for rootless guix daemon where store being remounted
read-only by gnu-store.mount is propagated to the guix daemon making
guix daemon not able to modify it.

* etc/guix-daemon.service.in: Disable host filesystem mount propagation.

Change-Id: Ib1abc387ee15d2b04d6f70c121244943cd0ad8c6
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Modified-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>etc: systemd services: Run ‘guix-daemon’ as an unprivileged user.</title>
<updated>2025-03-26T16:57:45+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2025-01-23T08:47:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=107eb8ee8f5f9192c795abeb47885b49a57bacd4'/>
<id>107eb8ee8f5f9192c795abeb47885b49a57bacd4</id>
<content type='text'>
* etc/guix-daemon.service.in (ExecStart): Remove ‘--build-users-group’.
(Environment): Add ‘GUIX_STATE_DIRECTORY’.
(Before, User, AmbientCapabilities, PrivateMounts, BindPaths): New fields.
* etc/gnu-store.mount.in (Before): Remove.
(WantedBy): Change to ‘multi-user.target’.

Change-Id: Id826b8ab535844b6024d777f6bd15fd49db6d65e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* etc/guix-daemon.service.in (ExecStart): Remove ‘--build-users-group’.
(Environment): Add ‘GUIX_STATE_DIRECTORY’.
(Before, User, AmbientCapabilities, PrivateMounts, BindPaths): New fields.
* etc/gnu-store.mount.in (Before): Remove.
(WantedBy): Change to ‘multi-user.target’.

Change-Id: Id826b8ab535844b6024d777f6bd15fd49db6d65e
</pre>
</div>
</content>
</entry>
<entry>
<title>etc: Add explicit ‘--substitute-urls’ in guix-daemon service files.</title>
<updated>2024-06-26T20:59:55+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2024-05-31T08:54:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=d11b96eb5493231a5a35045505ff8ae8aa746b8e'/>
<id>d11b96eb5493231a5a35045505ff8ae8aa746b8e</id>
<content type='text'>
Having substitute URLs explicitly listed in the service startup file
makes it clearer what should be modified to permanently change the list
of substitute URLs.

* config-daemon.ac: Rename ‘guix_substitute_urls’ to
‘GUIX_SUBSTITUTE_URLS’ and substitute it.
* nix/local.mk (etc/guix-%.service, etc/init.d/guix-daemon)
(etc/guix-%.conf): Substitute it.
* etc/guix-daemon.conf.in, etc/guix-daemon.service.in,
etc/init.d/guix-daemon.in: Add an explicit ‘--substitute-urls’ option.

Change-Id: Ie491b7fab5c42e54dca582801c03805a85de2bf9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Having substitute URLs explicitly listed in the service startup file
makes it clearer what should be modified to permanently change the list
of substitute URLs.

* config-daemon.ac: Rename ‘guix_substitute_urls’ to
‘GUIX_SUBSTITUTE_URLS’ and substitute it.
* nix/local.mk (etc/guix-%.service, etc/init.d/guix-daemon)
(etc/guix-%.conf): Substitute it.
* etc/guix-daemon.conf.in, etc/guix-daemon.service.in,
etc/init.d/guix-daemon.in: Add an explicit ‘--substitute-urls’ option.

Change-Id: Ie491b7fab5c42e54dca582801c03805a85de2bf9
</pre>
</div>
</content>
</entry>
<entry>
<title>etc: systemd services: switch to "journal" for output and error logging.</title>
<updated>2024-03-11T21:34:25+00:00</updated>
<author>
<name>Vagrant Cascadian</name>
<email>vagrant@debian.org</email>
</author>
<published>2023-07-20T19:13:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=5f100c68a4a8ef9ed5599bb99c910018869bc6f3'/>
<id>5f100c68a4a8ef9ed5599bb99c910018869bc6f3</id>
<content type='text'>
The "syslog" method has been deprecated for years, and issues a warning:

  Standard output type syslog is obsolete, automatically updating to
  journal. Please update your unit file, and consider removing the setting
  altogether.

Fixes: #48323

* etc/guix-daemon.service.in (StandardOutput): Use "journal"
(StandardError): Likewise.
* etc/guix-publish.service.in (StandardOutput): Likewise.
(StandardError): Likewise.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The "syslog" method has been deprecated for years, and issues a warning:

  Standard output type syslog is obsolete, automatically updating to
  journal. Please update your unit file, and consider removing the setting
  altogether.

Fixes: #48323

* etc/guix-daemon.service.in (StandardOutput): Use "journal"
(StandardError): Likewise.
* etc/guix-publish.service.in (StandardOutput): Likewise.
(StandardError): Likewise.
</pre>
</div>
</content>
</entry>
<entry>
<title>etc: systemd services shouldn't ‘RemainAfterExit’.</title>
<updated>2022-10-23T00:00:26+00:00</updated>
<author>
<name>Tobias Geerinckx-Rice</name>
<email>me@tobias.gr</email>
</author>
<published>2022-10-23T00:00:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=068f1a1905099f32beec9a8c4904efbb4c503981'/>
<id>068f1a1905099f32beec9a8c4904efbb4c503981</id>
<content type='text'>
* etc/guix-daemon.service.in (RemainAfterExit): Don't.
* etc/guix-publish.service.in (RemainAfterExit): Likewise don't.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* etc/guix-daemon.service.in (RemainAfterExit): Don't.
* etc/guix-publish.service.in (RemainAfterExit): Likewise don't.
</pre>
</div>
</content>
</entry>
<entry>
<title>etc: Add ‘Restart=always’ to both systemd services.</title>
<updated>2022-10-23T00:00:25+00:00</updated>
<author>
<name>Tobias Geerinckx-Rice</name>
<email>me@tobias.gr</email>
</author>
<published>2022-10-23T00:00:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=0f6ec662f626eb5ff0685a20ca7e153dae7442e6'/>
<id>0f6ec662f626eb5ff0685a20ca7e153dae7442e6</id>
<content type='text'>
* etc/guix-daemon.service.in (Restart): ‘Always’ do.
* etc/guix-publish.service.in (Restart): Likewise.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* etc/guix-daemon.service.in (Restart): ‘Always’ do.
* etc/guix-publish.service.in (Restart): Likewise.
</pre>
</div>
</content>
</entry>
<entry>
<title>etc: Add ‘OOMPolicy=continue’ to guix-daemon.service.</title>
<updated>2022-10-23T00:00:00+00:00</updated>
<author>
<name>Tobias Geerinckx-Rice</name>
<email>me@tobias.gr</email>
</author>
<published>2022-10-23T00:00:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=f16d91295a743d43b1604103b1399a621badea8c'/>
<id>f16d91295a743d43b1604103b1399a621badea8c</id>
<content type='text'>
* etc/guix-daemon.service.in (OOMPolicy): Continue.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* etc/guix-daemon.service.in (OOMPolicy): Continue.
</pre>
</div>
</content>
</entry>
<entry>
<title>guix-install.sh: Prompt for configuring substitutes discovery.</title>
<updated>2021-07-08T03:54:20+00:00</updated>
<author>
<name>Maxim Cournoyer</name>
<email>maxim.cournoyer@gmail.com</email>
</author>
<published>2021-07-05T20:44:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=4cbe0127a668cbcc64087c5d311308b59d39b104'/>
<id>4cbe0127a668cbcc64087c5d311308b59d39b104</id>
<content type='text'>
Also ensure prompt_yes_no always print the message with a trailing space,
which is more pleasing to the eye.

* etc/guix-daemon.conf.in &lt;--discover=no&gt;: New guix-daemon option.
* etc/guix-daemon.service.in: Likewise.
* etc/init.d/guix-daemon.in: Likewise.
* etc/openrc/guix-daemon.in: Likewise.
* etc/guix-install.sh (configure_substitute_discovery): New procedure.
(sys_enable_guix_daemon): Ask the user whether automatic substitute discovery
should be enabled.  Set the '--discover' argument accordingly.
(prompt_yes_no): Add a trailing space to the message.
(sys_authorize_build_farms): Remove trailing space from the message argument.
* NEWS (Distribution): Add news.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also ensure prompt_yes_no always print the message with a trailing space,
which is more pleasing to the eye.

* etc/guix-daemon.conf.in &lt;--discover=no&gt;: New guix-daemon option.
* etc/guix-daemon.service.in: Likewise.
* etc/init.d/guix-daemon.in: Likewise.
* etc/openrc/guix-daemon.in: Likewise.
* etc/guix-install.sh (configure_substitute_discovery): New procedure.
(sys_enable_guix_daemon): Ask the user whether automatic substitute discovery
should be enabled.  Set the '--discover' argument accordingly.
(prompt_yes_no): Add a trailing space to the message.
(sys_authorize_build_farms): Remove trailing space from the message argument.
* NEWS (Distribution): Add news.
</pre>
</div>
</content>
</entry>
</feed>
