<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guix/nix, branch perlssl</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>daemon: Copy network config files into chroot instead of mounting.</title>
<updated>2026-06-18T14:46:53+00:00</updated>
<author>
<name>Reepca Russelstein</name>
<email>reepca@russelstein.xyz</email>
</author>
<published>2026-02-07T18:13:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=2510e4e0264e3e875ab4916a8557f47bb4774d48'/>
<id>2510e4e0264e3e875ab4916a8557f47bb4774d48</id>
<content type='text'>
Config files like /etc/services may be symbolic links to files not available
in the build environment; copy them instead of creating dangling symlinks.

This also reverts 425aa1bf7c35839f5e500515ff3b5a861a7533d6, which would
potentially create dangling symlinks in the chroot, as reported by @cnx in
guix/guix#9072.

* nix/libstore/build.cc (DerivationGoal::startBuilder): copy network config
  files.

Fixes: guix/guix#4225
Change-Id: I38fc6374c5cecdcd16de06161db00b3825688f2a
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>
Config files like /etc/services may be symbolic links to files not available
in the build environment; copy them instead of creating dangling symlinks.

This also reverts 425aa1bf7c35839f5e500515ff3b5a861a7533d6, which would
potentially create dangling symlinks in the chroot, as reported by @cnx in
guix/guix#9072.

* nix/libstore/build.cc (DerivationGoal::startBuilder): copy network config
  files.

Fixes: guix/guix#4225
Change-Id: I38fc6374c5cecdcd16de06161db00b3825688f2a
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>daemon: Allow ADDR_NO_RANDOMIZE to be omitted if `--allow-aslr'.</title>
<updated>2026-05-27T16:25:16+00:00</updated>
<author>
<name>Reepca Russelstein</name>
<email>reepca@russelstein.xyz</email>
</author>
<published>2025-11-06T19:50:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=f519ddf7330f6dd05c880f0135336a8e9d9ca026'/>
<id>f519ddf7330f6dd05c880f0135336a8e9d9ca026</id>
<content type='text'>
Docker's default seccomp filter prevents use of the ADDR_NO_RANDOMIZE flag
with the personality system call.  It causes personality to return EPERM.  In
general, we assume that any result other than the only documented one, EINVAL,
is caused by seccomp.  If we detect that ADDR_NO_RANDOMIZE is blocked, and the
--allow-aslr option was passed, we simply don't use it.

This allows guix-daemon to continue to work even in these containers, without
any implicit weakening of reproducibility.

Since it is presumably desirable to be able to build guix itself in such an
environment, also pass --allow-aslr to guix-daemon in test-env.

* nix/libstore/globals.hh (Settings::allowASLR): new field.
* nix/nix-daemon/guix-daemon.cc (options): add --allow-aslr option.
  (parse_opt): use it to set Settings::allowASLR.
* nix/libstore/build.cc (DerivationGoal::startBuilder): detect when
  ADDR_NO_RANDOMIZE is blocked and --allow-aslr is passed and don't use it in
  that case.
* doc/guix.texi: document --allow-aslr in "Invoking guix-daemon".
* build-aux/test-env.in: always pass --allow-aslr.

Fixes: guix/guix#3917
Change-Id: I51c5899a9559e161f9e107c2e6a36df395ab3134
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Modified-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #4616
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Docker's default seccomp filter prevents use of the ADDR_NO_RANDOMIZE flag
with the personality system call.  It causes personality to return EPERM.  In
general, we assume that any result other than the only documented one, EINVAL,
is caused by seccomp.  If we detect that ADDR_NO_RANDOMIZE is blocked, and the
--allow-aslr option was passed, we simply don't use it.

This allows guix-daemon to continue to work even in these containers, without
any implicit weakening of reproducibility.

Since it is presumably desirable to be able to build guix itself in such an
environment, also pass --allow-aslr to guix-daemon in test-env.

* nix/libstore/globals.hh (Settings::allowASLR): new field.
* nix/nix-daemon/guix-daemon.cc (options): add --allow-aslr option.
  (parse_opt): use it to set Settings::allowASLR.
* nix/libstore/build.cc (DerivationGoal::startBuilder): detect when
  ADDR_NO_RANDOMIZE is blocked and --allow-aslr is passed and don't use it in
  that case.
* doc/guix.texi: document --allow-aslr in "Invoking guix-daemon".
* build-aux/test-env.in: always pass --allow-aslr.

Fixes: guix/guix#3917
Change-Id: I51c5899a9559e161f9e107c2e6a36df395ab3134
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Modified-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #4616
</pre>
</div>
</content>
</entry>
<entry>
<title>build: Fix out-of-tree make.</title>
<updated>2026-05-03T20:45:53+00:00</updated>
<author>
<name>Charles Roelli</name>
<email>charles@aurox.ch</email>
</author>
<published>2026-05-01T08:42:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=9d0bb1ef2671fd2c8f30a96660b4dfa2ee27ae4d'/>
<id>9d0bb1ef2671fd2c8f30a96660b4dfa2ee27ae4d</id>
<content type='text'>
* doc/local.mk (lang_to_texinfo): Refer to .texi files using srcdir.
(xref_command): Reference pre-inst-env using builddir.
($(srcdir)/%D%/guix.%.texi):
($(srcdir)/%D%/guix-cookbook.%.texi):
($(srcdir)/%D%/contributing.%.texi): Refer to source files using srcdir.
* nix/local.mk (etc/guix-gc.timer): Use the name of the prerequisite,
not just its file name.

Change-Id: I247bcd873c8355d0eae07870ec849d2eb8cfa6c5
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #8267
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* doc/local.mk (lang_to_texinfo): Refer to .texi files using srcdir.
(xref_command): Reference pre-inst-env using builddir.
($(srcdir)/%D%/guix.%.texi):
($(srcdir)/%D%/guix-cookbook.%.texi):
($(srcdir)/%D%/contributing.%.texi): Refer to source files using srcdir.
* nix/local.mk (etc/guix-gc.timer): Use the name of the prerequisite,
not just its file name.

Change-Id: I247bcd873c8355d0eae07870ec849d2eb8cfa6c5
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #8267
</pre>
</div>
</content>
</entry>
<entry>
<title>daemon: Dereference symlinks for /etc/services &amp; co.</title>
<updated>2026-03-29T20:20:58+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2026-03-25T17:58:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=425aa1bf7c35839f5e500515ff3b5a861a7533d6'/>
<id>425aa1bf7c35839f5e500515ff3b5a861a7533d6</id>
<content type='text'>
Fixes a regression on Guix System introduced in
c4298638ca27717be4a83cb033dcbfecdea88093 (from guix/guix#4178) where files in
/etc, such as /etc/services, would be symlinks.  Consequently, the chroot of
fixed-output derivations would contain a dangling symlink for /etc/services,
leading to name resolution failures in the chroot.

This also relates to 82f84f5e7fb34cc719ed6ea538a3d1ca7516f23d.

* nix/libstore/build.cc (DerivationGoal::startBuilder): Add call to
‘canonPath’.

Change-Id: If34c8e74447ffc03d9fa81a1ea6bc0aef7c4d0b3
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes a regression on Guix System introduced in
c4298638ca27717be4a83cb033dcbfecdea88093 (from guix/guix#4178) where files in
/etc, such as /etc/services, would be symlinks.  Consequently, the chroot of
fixed-output derivations would contain a dangling symlink for /etc/services,
leading to name resolution failures in the chroot.

This also relates to 82f84f5e7fb34cc719ed6ea538a3d1ca7516f23d.

* nix/libstore/build.cc (DerivationGoal::startBuilder): Add call to
‘canonPath’.

Change-Id: If34c8e74447ffc03d9fa81a1ea6bc0aef7c4d0b3
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>daemon: Resolve symlinks in /etc/resolv.conf for slirp4netns chroot.</title>
<updated>2026-03-19T14:32:46+00:00</updated>
<author>
<name>Roman Scherer</name>
<email>roman@burningswell.com</email>
</author>
<published>2026-03-07T12:10:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=82f84f5e7fb34cc719ed6ea538a3d1ca7516f23d'/>
<id>82f84f5e7fb34cc719ed6ea538a3d1ca7516f23d</id>
<content type='text'>
* nix/libstore/build.cc (prepareSlirpChrootAction): Use
canonPath(i, true) to resolve symlinks when adding /etc/resolv.conf
and /etc/hosts to the slirp4netns chroot, so that bindMount receives
a regular file path instead of a symlink.

On systems using systemd-resolved, /etc/resolv.conf is typically a
symlink:

  /etc/resolv.conf -&gt; /run/systemd/resolve/stub-resolv.conf

The slirp4netns chroot creates an empty /run/ directory, so when
bindMount copies the symlink verbatim (spawn.cc line 537-542), the
target does not exist and slirp4netns cannot determine the upstream
DNS server.  This causes all DNS resolution to fail for fixed-output
derivations that use the Guile-based git-fetch builder (e.g.
git-fetch/lfs), since they rely on slirp4netns for network access
in the build chroot.

Derivations using builtin:git-download are unaffected because they
run in the daemon process itself, which has full network access.

Change-Id: Ib73e69a8760e74eb8141dd0408c27aa8b3001e37
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #6959
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* nix/libstore/build.cc (prepareSlirpChrootAction): Use
canonPath(i, true) to resolve symlinks when adding /etc/resolv.conf
and /etc/hosts to the slirp4netns chroot, so that bindMount receives
a regular file path instead of a symlink.

On systems using systemd-resolved, /etc/resolv.conf is typically a
symlink:

  /etc/resolv.conf -&gt; /run/systemd/resolve/stub-resolv.conf

The slirp4netns chroot creates an empty /run/ directory, so when
bindMount copies the symlink verbatim (spawn.cc line 537-542), the
target does not exist and slirp4netns cannot determine the upstream
DNS server.  This causes all DNS resolution to fail for fixed-output
derivations that use the Guile-based git-fetch builder (e.g.
git-fetch/lfs), since they rely on slirp4netns for network access
in the build chroot.

Derivations using builtin:git-download are unaffected because they
run in the daemon process itself, which has full network access.

Change-Id: Ib73e69a8760e74eb8141dd0408c27aa8b3001e37
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #6959
</pre>
</div>
</content>
</entry>
<entry>
<title>daemon: Actually remove unreadable directories.</title>
<updated>2026-02-27T22:54:00+00:00</updated>
<author>
<name>Reepca Russelstein</name>
<email>reepca@russelstein.xyz</email>
</author>
<published>2026-02-15T18:39:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=865cb0188c282726008c56319a853c7dd82c4057'/>
<id>865cb0188c282726008c56319a853c7dd82c4057</id>
<content type='text'>
Fixes a regression introduced in 7173c2c0ca.  Additional discussion at
https://codeberg.org/guix/guix/pulls/5977.

* nix/libutil/util.cc (_deletePathAt): chmod directory and retry open when it
  fails with EACCES.  Do this using an O_PATH file descriptor referenced via
  /proc/self/fd whenever possible to avoid it being replaced by a
  non-directory immediately before being chmod'ed.
* nix/libutil/util.hh (deletePath): document TOCTTOU race on non-linux systems
  where hardlinks aren't protected.
* tests/derivations.scm ("unreadable directories in build tree can be
  removed"): new test.

Fixes: guix/guix#5891
Reported-by: Liliana Marie Prikler &lt;liliana.prikler@gmail.com&gt;
Change-Id: I749127fe5254ebabc8387a2f0ef47e3c116bfcc5
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #6460
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes a regression introduced in 7173c2c0ca.  Additional discussion at
https://codeberg.org/guix/guix/pulls/5977.

* nix/libutil/util.cc (_deletePathAt): chmod directory and retry open when it
  fails with EACCES.  Do this using an O_PATH file descriptor referenced via
  /proc/self/fd whenever possible to avoid it being replaced by a
  non-directory immediately before being chmod'ed.
* nix/libutil/util.hh (deletePath): document TOCTTOU race on non-linux systems
  where hardlinks aren't protected.
* tests/derivations.scm ("unreadable directories in build tree can be
  removed"): new test.

Fixes: guix/guix#5891
Reported-by: Liliana Marie Prikler &lt;liliana.prikler@gmail.com&gt;
Change-Id: I749127fe5254ebabc8387a2f0ef47e3c116bfcc5
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #6460
</pre>
</div>
</content>
</entry>
<entry>
<title>daemon: Remove unused entities in globals.{hh, cc}.</title>
<updated>2026-02-06T19:49:01+00:00</updated>
<author>
<name>Congcong Kuo</name>
<email>congcong.kuo@gmail.com</email>
</author>
<published>2026-01-29T14:39:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=dab3b8f64cd1b5255aa29150ace86610a13e1097'/>
<id>dab3b8f64cd1b5255aa29150ace86610a13e1097</id>
<content type='text'>
All these entities are not been used anywhere.

* nix/libstore/globals.hh (Settings): Remove 'overrides' member
and 'getOverrides' method declaration.
(nixVersion): Removed.
* nix/libstore/globals.cc (Settings::set): Do not update the 'overrides' map.
(Settings::getOverrides): Remove function definition.

Change-Id: If7dbb6df79178d2569cda21e1fe5e0ea3d8e59ba
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #6009
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
All these entities are not been used anywhere.

* nix/libstore/globals.hh (Settings): Remove 'overrides' member
and 'getOverrides' method declaration.
(nixVersion): Removed.
* nix/libstore/globals.cc (Settings::set): Do not update the 'overrides' map.
(Settings::getOverrides): Remove function definition.

Change-Id: If7dbb6df79178d2569cda21e1fe5e0ea3d8e59ba
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #6009
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'version-1.5.0'</title>
<updated>2026-01-22T12:27:13+00:00</updated>
<author>
<name>Rutherther</name>
<email>rutherther@ditigal.xyz</email>
</author>
<published>2026-01-22T12:27:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=7c0cd7e45b0240b842b4f3e767599501eac42ee1'/>
<id>7c0cd7e45b0240b842b4f3e767599501eac42ee1</id>
<content type='text'>
Change-Id: Id73c0c74600a3da3373b3a37236b505af65bfe31
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: Id73c0c74600a3da3373b3a37236b505af65bfe31
</pre>
</div>
</content>
</entry>
<entry>
<title>nix: Spelling corrections.</title>
<updated>2026-01-14T08:16:45+00:00</updated>
<author>
<name>Efraim Flashner</name>
<email>efraim@flashner.co.il</email>
</author>
<published>2026-01-08T11:55:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=9efc2a690e5b5ea891457e2ae170597a548a19e6'/>
<id>9efc2a690e5b5ea891457e2ae170597a548a19e6</id>
<content type='text'>
* nix/libstore/globals.hh,
nix/libstore/store-api.hh,
nix/libutil/util.hh: Fix misspellings in comments.

Change-Id: Id77ea2bde1c2582d1a7bec4ed256ea900998c4b8
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* nix/libstore/globals.hh,
nix/libstore/store-api.hh,
nix/libutil/util.hh: Fix misspellings in comments.

Change-Id: Id77ea2bde1c2582d1a7bec4ed256ea900998c4b8
</pre>
</div>
</content>
</entry>
<entry>
<title>daemon: Fix several format strings.</title>
<updated>2026-01-12T09:56:37+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2026-01-12T08:15:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=5ff038473e3f3d6a84e69c712446ba3e200aa9b2'/>
<id>5ff038473e3f3d6a84e69c712446ba3e200aa9b2</id>
<content type='text'>
This is a followup to 3af52f845fe2ceb448416ac7b9f48925673c594e and
6f1448ef89c8ad29e2a479099531fd3a87701e46.

* nix/libstore/local-store.cc (LocalStore::queryValidPathId): Change %1% to {}.
* nix/libstore/optimise-store.cc (LocalStore::optimisePath_): Likewise.
* nix/nix-daemon/guix-daemon.cc (open_unix_domain_socket): Likewise.
(main): Likewise.
* nix/libutil/affinity.cc (restoreAffinity): Remove useless %1%.

Change-Id: I3a7cd79cd69ab58f14118662f1dcf2fef067a6b7
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a followup to 3af52f845fe2ceb448416ac7b9f48925673c594e and
6f1448ef89c8ad29e2a479099531fd3a87701e46.

* nix/libstore/local-store.cc (LocalStore::queryValidPathId): Change %1% to {}.
* nix/libstore/optimise-store.cc (LocalStore::optimisePath_): Likewise.
* nix/nix-daemon/guix-daemon.cc (open_unix_domain_socket): Likewise.
(main): Likewise.
* nix/libutil/affinity.cc (restoreAffinity): Remove useless %1%.

Change-Id: I3a7cd79cd69ab58f14118662f1dcf2fef067a6b7
</pre>
</div>
</content>
</entry>
</feed>
