'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.

Reply via email to