Subject: Re: bug#28445: match-error in 'device-sexp->device' while building system

From: Mark H Weaver <[email-masked]>
Date: Wed, 13 Sep 2017 14:32:26 -0400

Mark H Weaver <[email-masked]> writes:

> I just started getting this error while trying to build my x86_64 GuixSD
> system:
>
> mhw@jojen ~$ guix system build -K /etc/config-new.scm
[...]
> gnu/system.scm:238:4: In procedure device-sexp->device:
> gnu/system.scm:238:4: Throw to key `match-error' with args `("match" "no matching pattern" #f)'.

This is ultimately caused by the fact that
/var/guix/profiles/system-*-link/parameters, for every system I have,
includes:

  (store (device #f) (mount-point "/"))

It's worth noting that my root device is unusual: it is a btrfs
filesystem within a LUKS-encrypted partition.  See below for the
relevant excerpts of my OS configuration:

> (operating-system
[...]
>   ;; Specify a mapped device for the encrypted root partition.
>   ;; The UUID is that returned by 'cryptsetup luksUUID'.
>   (mapped-devices
>    (list (mapped-device
>           (source (uuid "a56c53e7-b345-4e24-a17b-6cf158dbc7d3"))
>           (target "jojen-root")
>           (type luks-device-mapping))))
>
>   (file-systems (cons* (file-system
>                          ;; XXX This doesn't seem to work
>                          ;; (device "jojen-root")
>                          ;; (title 'label)
>                          (device "/dev/mapper/jojen-root")
>                          (title 'device)
>                          (mount-point "/")
>                          (type "btrfs")
>                          (dependencies mapped-devices))
>                        %base-file-systems))

       Mark