Subject: bug#46555: LVM swap continuously fails guix system: error: service 'swap-/dev/mapper/guix-swap' requires 'device-mapping-guix-swap', which is not provided by any service

From: Ludovic Courtès <[email-masked]>
Date: Mon, 01 Mar 2021 10:26:01 +0100

Hi Shyam,

Shyam Saran <[email-masked]> skribis:

> Result of application of system build command
>
> $ guix  system   build ~/tmp/config.scm
>
>                2s
> guix system: warning: the following groups appear more than once: users
> guix system: error: service 'swap-/dev/mapper/guix-swap' requires
> 'device-mapping-guix-swap', which is not provided by any service

The problem here is that you had:

  (file-system
    (mount-point "/")
    ;; …
    (needed-for-boot? #t)
    (dependencies %localmachine-mapped-devices))

All the needed-for-boot file systems had all the mapped devices in
‘dependencies’.  Thus, no ‘device-mapping-guix-swap’ Shepherd service
was created, because that device mapping was needed at boot.

The solution is to remove the ‘dependencies’ field for all your file
systems.  Since they have /dev/mapper/… as their ’device’, you don’t
need ‘dependencies’: it’s automatically inferred.  If, after this
change, you run:

  guix system shepherd-graph /tmp/config.scm| xdot -

you can see that the ‘swap-/dev/mapper/guix-swap’ service depends on
‘device-mapping-guix-swap’.

HTH!

Ludo’.