help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Nested modify-services


From: Fredrik Salomonsson
Subject: Nested modify-services
Date: Sun, 04 Jun 2023 19:53:21 +0000

Hi Guix,

Yesterday I encountered an issue when I updated my desktop machine:

  sudo -i guix pull && sudo -i guix system reconfigure 
~/projects/plt/plt/system/machines/surt.scm 
--8<----------------------------------------------------------------------------
…
guix system: warning: exception caught while executing 'eval' on service 'root':
error: remove: unbound variable
guix system: warning: some services could not be upgraded
hint: To allow changes to all the system services to take effect, you will need 
to reboot.

---------------------------------------------------------------------------->8--

But I didn't get that with my laptop.  Both share a lot of the same
system configuration as I've created my own channel[0], where I have both
configs inherting from a common config.  I traced the issue to how I was
setting up the extra services on my desktop machine[1]:

--8<----------------------------------------------------------------------------
(define plt-surt-os
  (operating-system
    (inherit %plt-base-operating-system)
    (host-name "surt")
  ;; …
  (services
    (cons*
      ;; …
      (service console-font-service-type
               (map (lambda (tty)
                      (cons tty (file-append font-terminus 
"/share/consolefonts/ter-132n")))
                    '("tty1" "tty2" "tty3" "tty4" "tty5" "tty6")))
       (modify-services
           %plt-base-services
         (delete console-font-service-type))))))

---------------------------------------------------------------------------->8--

Where my %plt-base-services[2] is defined as:

--8<----------------------------------------------------------------------------
(define %plt-base-services
  (cons*
   (service plt-home-rottlog-service-type)
   (service plt-automount-service-type)
   ;; …
   (modify-services
    %desktop-services
    (delete gdm-service-type)
    (network-manager-service-type
     config => (network-manager-configuration
                (inherit config)
                (dns "dnsmasq")
                (vpn-plugins (list network-manager-openconnect))))
   ;; …    
)))

---------------------------------------------------------------------------->8--

If I remove the modify-services call on my desktop machine, or move it
to %plt-base-services.  The error goes away.  I noticed that
there was a recent change in modify-services[3] that is most likely
behind my issue.

Is nesting modify-services supported, I.e call modify-services on a list
that already been modified by modify-services?  If not, what would be
the best way of sharing services between configurations and allow for
custom tweaks per machine.

Thanks!

[0] https://git.sr.ht/~plattfot/plt
[1] 
https://git.sr.ht/~plattfot/plt/tree/2abf21f5/item/plt/system/machines/surt.scm
[2] https://git.sr.ht/~plattfot/plt/tree/2abf21f5/item/plt/system/machines.scm
[3] 
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=dbbc7e946131ba257728f1d05b96c4339b7ee88b

-- 
s/Fred[re]+i[ck]+/Fredrik/g



reply via email to

[Prev in Thread] Current Thread [Next in Thread]