'guix system init' fails immediately when the target is the Hurd,
because guix/scripts/system.scm passes the 'hurd' package object to
'in-vicinity', which expects a directory name string.
Version: guix fb51a0a35847a95cc7b6946498d0db669b2bfc44 (master, as of
2026-09-26), from git.savannah.gnu.org.
Command:
guix system init --target=x86_64-pc-gnu --no-bootloader --skip-checks \
hurd-config.scm /mnt
where hurd-config.scm inherits %hurd-default-operating-system.
Error:
guix/ui.scm:1034:18: In procedure string-length: Wrong type argument
in position 1 (expecting string): #<package
[email protected] gnu/packages/hurd.scm:393>
Relevant backtrace frame:
ice-9/boot-9.scm:2173:25 (in-vicinity #<package [email protected]...> ...)
The call is at guix/scripts/system.scm:243, inside 'install':
(when (target-hurd?)
(make-hurd-device-nodes #:hurd (in-vicinity hurd "hurd") #:root target))
'make-hurd-device-nodes' in gnu/build/hurd-boot.scm is declared as:
(define* (make-hurd-device-nodes #:key (root "/") (hurd "/hurd"))
so #:hurd is expected to be a path string, and already defaults to
"/hurd". The other call site, at hurd-boot.scm:404, passes no arguments
at all and relies on that default.
Removing the #:hurd argument, i.e.
(make-hurd-device-nodes #:root target))
lets 'guix system init' run to completion and populate the target
filesystem correctly. I have tested this only on a native x86_64-linux
host installing to a local partition; I do not know whether a store path
was intended there for cross-installation cases, so I have reported this
rather than sending it as a patch.