Archived
1
0
Fork 0

gnu: guix-configuration: Improve offload build-machines.

It’s currently difficult to programmatically add a build-machine, because the
`service-extension' mechanism is the only facility which can do that.  It
relies on the `guix-service-type', ala:

    (service-extension guix-service-type
      (guix-extension (build-machines (list ...))))

...but `guix-service-type' is already instantiated as part of
`%base-services', and replacing it may lose other configuration, like
substitute servers and authorized keys.

Additionally, a default value of `#f' for the build-machines field requires
guarding uses of the field with:

    (or (guix-build-machines config) '())

Changing the default to be the empty list avoids that.  One can now add
build-machines with code such as:

    (modify-services %base-services
      (guix-service-type
       config =>
       (guix-configuration
        (inherit config)
        (authorized-keys
         (cons %build-machine-key
               (guix-configuration-authorized-keys config)))
        (build-machines (cons #~(build-machine ...)
                              (guix-configuration-build-machines config))))))

* gnu/services/base.scm (guix-configuration): Rename `guix-build-machines' to
`guix-configuration-build-machines' and export it.  Change the default from
`#f' to the empty list.
* gnu/services/base.scm (guix-activation): Update the build-machines test and
reverse the conditions.

Change-Id: I6780c6a5579fd9d4b4f22ee2b2bf7ba7a0454407
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Ian Eure 2024-04-07 12:20:59 -07:00 committed by Ludovic Courtès
parent dde37247fa
commit ef8ab6ab66
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -212,6 +212,7 @@
guix-configuration-guix guix-configuration-guix
guix-configuration-build-group guix-configuration-build-group
guix-configuration-build-accounts guix-configuration-build-accounts
guix-configuration-build-machines
guix-configuration-authorize-key? guix-configuration-authorize-key?
guix-configuration-authorized-keys guix-configuration-authorized-keys
guix-configuration-use-substitutes? guix-configuration-use-substitutes?
@ -1848,8 +1849,8 @@ archive' public keys, with GUIX."
(default #f)) (default #f))
(tmpdir guix-tmpdir ;string | #f (tmpdir guix-tmpdir ;string | #f
(default #f)) (default #f))
(build-machines guix-build-machines ;list of gexps | #f (build-machines guix-configuration-build-machines ;list of gexps | '()
(default #f)) (default '()))
(environment guix-configuration-environment ;list of strings (environment guix-configuration-environment ;list of strings
(default '()))) (default '())))
@ -2044,10 +2045,10 @@ proxy of 'guix-daemon'...~%")
#$(and channels (install-channels-file channels)) #$(and channels (install-channels-file channels))
;; ... and /etc/guix/machines.scm. ;; ... and /etc/guix/machines.scm.
#$(if (guix-build-machines config) #$(if (null? (guix-configuration-build-machines config))
#~#f
(guix-machines-files-installation (guix-machines-files-installation
#~(list #$@(guix-build-machines config))) #~(list #$@(guix-configuration-build-machines config)))))))
#~#f))))
(define-record-type* <guix-extension> (define-record-type* <guix-extension>
guix-extension make-guix-extension guix-extension make-guix-extension
@ -2093,9 +2094,9 @@ proxy of 'guix-daemon'...~%")
(substitute-urls (append (guix-extension-substitute-urls extension) (substitute-urls (append (guix-extension-substitute-urls extension)
(guix-configuration-substitute-urls config))) (guix-configuration-substitute-urls config)))
(build-machines (build-machines
(and (or (guix-build-machines config) (and (or (guix-configuration-build-machines config)
(pair? (guix-extension-build-machines extension))) (pair? (guix-extension-build-machines extension)))
(append (or (guix-build-machines config) '()) (append (guix-configuration-build-machines config)
(guix-extension-build-machines extension)))) (guix-extension-build-machines extension))))
(chroot-directories (chroot-directories
(append (guix-extension-chroot-directories extension) (append (guix-extension-chroot-directories extension)