Subject: Re: bug#31885: Bug when running guix system reconfigure after recent guix pull

From: Clément Lassieur <[email-masked]>
Date: Mon, 18 Jun 2018 22:45:42 +0200

Hello!

[email-masked] writes:

> gnu/services.scm:703:40: In procedure service-kind: Wrong type argument:
> #<<slim-configuration> slim: #<package [email-masked]
> gnu/packages/display-managers.scm:312 2963cc0> allow-empty-passwords?:
> #t auto-login?: #t default-user: "annika" theme: #<<file-append> base:
> #<origin #<<git-reference> url:
> "git://git.savannah.gnu.org/guix/guix-artwork.git" commit:
> "6998d30425289b087c64f63e7415df2241e591db" recursive?: #f>

[...]

>   (services (cons* 
> 		(slim-configuration
> 			(auto-login? #t)
> 			(default-user "swedebugia")
> 			(auto-login-session "xfdesktop"))
> 		(guix-configuration
> ;			#:authorize-keys (cons "/home/swedebugia/berlin.guixsd.org.pub"
> ;						%default-authorized-guix-keys)
> 			(substitute-urls (cons	"https://berlin.guixsd.org"
> 						%default-substitute-urls)))
> 		;; Is this correct?
> ;		(tlp-servicy-type
> ;			(tlp-configuration
> ;				;; Should I use parenteses instead of "#:"?
> ;				(cpu-scaling-govenor-on-ac (list "conservative"))
> ;				(cpu-scaling-govenor-on-bat (list "conservative"))))
> 		(xfce-desktop-service)
>                    %desktop-services))

This is because this 'services' field is expecting 'services' and gets
other things like 'configuration records' instead.

You might want something like this (not tested):

--8<---------------cut here---------------start------------->8---
(services (cons*
           (service slim-service-type
                    (slim-configuration
                     (auto-login? #t)
                     (default-user "swedebugia")
                     (auto-login-session "xfdesktop")))

           (service tlp-servicy-type
                    (tlp-configuration
                     (cpu-scaling-governor-on-ac (list "conservative"))
                     (cpu-scaling-governor-on-bat (list "conservative"))))

           (xfce-desktop-service)

           (modify-services %desktop-services
             (guix-service-type
              config =>
              (guix-configuration
               (inherit config)
               (substitute-urls (cons "https://berlin.guixsd.org"
                                      %default-substitute-urls))
               (authorized-keys (cons "/home/swedebugia/berlin.guixsd.org.pub"
                                      %default-authorized-guix-keys)))))))
--8<---------------cut here---------------end--------------->8---

The guix-service-type service needs to be modified because it is already
in %desktop-services, and you can't have it twice.

> ;				;; Should I use parenteses instead of "#:"?

Things ending with '-configuration' are usually macros that can be used
to instantiate the corresponding records.  They take arguments like
'(field value)'.  '#:' is used when passing arguments to normal
functions.

This is complex, but you can usually know what things expect by looking
at the examples in the documentation.

If you have similar issues, please email [email-masked] instead.

Good luck, and don't hesitate to ask! :-)
Clément