On 5/9/19 2:55 PM, zna...@disroot.org wrote: > Hello! I try to reconfigure system with Gnome, sddm and wayland. > I also use sddm-configuration to define use wayland for greeter, but get the > error for my misconfiguration: > > # cat config.scm > ... > (services (cons* > ;(service xfce-desktop-service-type) > (service gnome-desktop-service-type) > (service dhcp-client-service-type) > (service sddm-service > (sddm-configuration > (display-server "wayland"))) > ... > ) > > # guix system reconfigure config.scm > Backtrace: > 14 (primitive-load "/root/.config/guix/current/bin/guix") > In guix/ui.scm: > 1734:12 13 (run-guix-command _ . _) > In ice-9/boot-9.scm: > 829:9 12 (catch _ _ #<procedure 7ff6047408f8 at guix/ui.scm:701…> …) > 829:9 11 (catch _ _ #<procedure 7ff604740910 at guix/ui.scm:824…> …) > In guix/scripts/system.scm: > 1301:8 10 (_) > In guix/status.scm: > 768:4 9 (call-with-status-report _ _) > In guix/scripts/system.scm: > 1159:4 8 (process-action _ _ _) > In guix/store.scm: > 623:10 7 (call-with-store _) > 1794:24 6 (run-with-store _ _ #:guile-for-build _ #:system _ # _) > In guix/scripts/system.scm: > 1175:13 5 (_ _) > 882:18 4 (perform-action reconfigure #<<operating-system> kerne…> …) > In gnu/system.scm: > 851:19 3 (operating-system-derivation _) > In gnu/services.scm: > 743:6 2 (instantiate-missing-services _) > In guix/combinators.scm: > 45:26 1 (fold2 #<procedure adjust-service-list (svc result ins…> …) > In gnu/services.scm: > 733:11 0 (adjust-service-list _ (#<<service> type: #<service…> …) …) > > gnu/services.scm:733:11: In procedure adjust-service-list: > In procedure struct_vtable: Wrong type argument in position 1 (expecting > struct): #<procedure sddm-service (#:optional config)> > Please, let me know how to understand such errors. Here, I saw the same > structure > https://www.gnu.org/software/guix/manual/en/guix.html#index-sddm_002dservice
(sddm-service ...) returns a service instance so you don't need to wrap it in (service ...). I think the key point to notice is it's `sddm-service` and not `sddm-service-type` - service types go in `(service ...)` as the second parameter but `service-*` functions replace the `(service ...)` call entirely. I'm not sure if there's more information you can get from the backtrace, but where it says: position 1 (expecting struct): #<procedure sddm-service (#:optional config)> it's saying it wanted a struct but got `sddm-service` which is a `procedure` (function). And the last line of the trace has: 733:11 0 (adjust-service-list _ (#<<service> type: #<service…> …) …) -- all the <service> things make me think that it's probably looking for a struct of type <service>. If you change it from `(service sddm-service)` to `(sddm-service (sddm-configuration))` it should work (although you might want to specify some values in sdm-configuration.