Subject: Re: bug#29881: guix system reconfigure fails if config.scm contains LUKS mapped-devices

From: Mark H Weaver <[email-masked]>
Date: Wed, 10 Jan 2018 16:47:26 -0500

[email-masked] (Ludovic Courtès) writes:

> Diego Nicola Barbato <[email-masked]> skribis:
>
>> When running `guix system reconfigure /etc/config.scm' as root I get the
>> following error:
>>
>> guix system: error: failed to load '/etc/config.scm':
>> /etc/config.scm:24:9: /etc/config.scm:24:9: In procedure allocate-struct: Wrong type argument in position 2: 3
>
> I’m afraid you’ll have to “rm -rf ~/.cache/guile/ccache” (Guile’s
> auto-compilation cache) to work around
> e2721a05e7d778bdf845b7cb7a42fd9f76095b69.

FYI, more recently there has been another change that caused "guix
system build" to fail for me, and once again it was fixed by clearing
the auto-compilation cache for my system configuration.

Here's the error I got:

--8<---------------cut here---------------start------------->8---
mhw@jojen ~$ (guix system build /etc/config-sddm.scm --keep-going --keep-failed --no-grafts; guix system build /etc/config-sddm.scm --keep-going --keep-failed; guix package -m mhw-manifest.scm --keep-going --keep-failed)
Backtrace:
In guix/store.scm:
  1443:24 19 (run-with-store _ _ #:guile-for-build _ #:system _ # _)
In guix/scripts/system.scm:
  1031:13 18 (_ _)
   736:18 17 (perform-action build #<<operating-system> kernel: #<p…> …)
In gnu/system.scm:
   813:19 16 (operating-system-derivation _ #:container? _)
In gnu/services.scm:
   697:26 15 (loop #<<service> type: #<service-type system 1ac8dc0> …>)
In srfi/srfi-1.scm:
   592:17 14 (map1 (#<<service> type: #<service-type profile 1ac8…> …))
In gnu/services.scm:
   697:26 13 (loop #<<service> type: #<service-type profile 1ac8b40>…>)
In srfi/srfi-1.scm:
   592:17 12 (map1 (#<<service> type: #<service-type shepherd-roo…> …))
In gnu/services.scm:
   698:26 11 (loop #<<service> type: #<service-type shepherd-root 1a…>)
In srfi/srfi-1.scm:
   592:29 10 (map1 (#<<service> type: #<service-type file-systems…> …))
   592:29  9 (map1 (#<<service> type: #<service-type user-file-sy…> …))
   592:29  8 (map1 (#<<service> type: #<service-type root-file-sy…> …))
   592:29  7 (map1 (#<<service> type: #<service-type user-process…> …))
   592:29  6 (map1 (#<<service> type: #<service-type host-name 1b…> …))
   592:29  5 (map1 (#<<service> type: #<service-type account 1ac8…> …))
   592:29  4 (map1 (#<<service> type: #<service-type udev 1bb0780…> …))
   592:29  3 (map1 (#<<service> type: #<service-type nscd 1bb0960…> …))
   592:17  2 (map1 (#<<service> type: #<service-type guix 1bb0870…> …))
In gnu/services/base.scm:
  1471:43  1 (guix-shepherd-service _)
In unknown file:
           0 (symbol->string ("--gc-keep-derivations=yes" "--gc-ke…"))

ERROR: In procedure symbol->string:
ERROR: In procedure symbol->string: Wrong type argument in position 1 (expecting symbol): ("--gc-keep-derivations=yes" "--gc-keep-outputs=yes")
Backtrace:
In guix/store.scm:
  1443:24 19 (run-with-store _ _ #:guile-for-build _ #:system _ # _)
In guix/scripts/system.scm:
  1031:13 18 (_ _)
   736:18 17 (perform-action build #<<operating-system> kernel: #<p…> …)
In gnu/system.scm:
   813:19 16 (operating-system-derivation _ #:container? _)
In gnu/services.scm:
   697:26 15 (loop #<<service> type: #<service-type system 254ffa0> …>)
In srfi/srfi-1.scm:
   592:17 14 (map1 (#<<service> type: #<service-type profile 254f…> …))
In gnu/services.scm:
   697:26 13 (loop #<<service> type: #<service-type profile 254fc80>…>)
In srfi/srfi-1.scm:
   592:17 12 (map1 (#<<service> type: #<service-type shepherd-roo…> …))
In gnu/services.scm:
   698:26 11 (loop #<<service> type: #<service-type shepherd-root 25…>)
In srfi/srfi-1.scm:
   592:29 10 (map1 (#<<service> type: #<service-type file-systems…> …))
   592:29  9 (map1 (#<<service> type: #<service-type user-file-sy…> …))
   592:29  8 (map1 (#<<service> type: #<service-type root-file-sy…> …))
   592:29  7 (map1 (#<<service> type: #<service-type user-process…> …))
   592:29  6 (map1 (#<<service> type: #<service-type host-name 26…> …))
   592:29  5 (map1 (#<<service> type: #<service-type account 254f…> …))
   592:29  4 (map1 (#<<service> type: #<service-type udev 2653820…> …))
   592:29  3 (map1 (#<<service> type: #<service-type nscd 2653a00…> …))
   592:17  2 (map1 (#<<service> type: #<service-type guix 2653910…> …))
In gnu/services/base.scm:
  1471:43  1 (guix-shepherd-service _)
In unknown file:
           0 (symbol->string ("--gc-keep-derivations=yes" "--gc-ke…"))

ERROR: In procedure symbol->string:
ERROR: In procedure symbol->string: Wrong type argument in position 1 (expecting symbol): ("--gc-keep-derivations=yes" "--gc-keep-outputs=yes")
--8<---------------cut here---------------end--------------->8---

and the relevant excerpt from my system configuration:

--8<---------------cut here---------------start------------->8---
       (modify-services (remove (lambda (svc)
                                  (eq? (service-kind svc)
                                       wicd-service-type))
                                %base-services)
         (guix-service-type config =>
                            (guix-configuration
                              (inherit config)
                              (use-substitutes? #f)
                              (authorized-keys '())
                              (substitute-urls '())
                              (extra-options '("--gc-keep-derivations=yes"
                                               "--gc-keep-outputs=yes")))))
--8<---------------cut here---------------end--------------->8---

I guess that maybe the 'guix-configuration' record was changed, but I
haven't taken the time to find the commit that broke my cached
etc/config-sddm.go.

       Mark