Message ID | 7d5b40b2df8b68e1aafc881080680824e6655460.1712517547.git.ian@retrospec.tv |
---|---|
State | New |
Headers | show |
Series | [bug#70263] gnu: guix-configuration: Improve offload build-machines. | expand |
Hi Ian, Ian Eure <ian@retrospec.tv> skribis: > 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. That makes a lot of sense to me. Applied, thanks! Ludo’.
diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 3f912225a0..5cf6083821 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -212,6 +212,7 @@ (define-module (gnu services base) guix-configuration-guix guix-configuration-build-group guix-configuration-build-accounts + guix-configuration-build-machines guix-configuration-authorize-key? guix-configuration-authorized-keys guix-configuration-use-substitutes? @@ -1848,8 +1849,8 @@ (define-record-type* <guix-configuration> (default #f)) (tmpdir guix-tmpdir ;string | #f (default #f)) - (build-machines guix-build-machines ;list of gexps | #f - (default #f)) + (build-machines guix-configuration-build-machines ;list of gexps | '() + (default '())) (environment guix-configuration-environment ;list of strings (default '()))) @@ -2044,10 +2045,10 @@ (define (guix-activation config) #$(and channels (install-channels-file channels)) ;; ... and /etc/guix/machines.scm. - #$(if (guix-build-machines config) + #$(if (null? (guix-configuration-build-machines config)) + #~#f (guix-machines-files-installation - #~(list #$@(guix-build-machines config))) - #~#f)))) + #~(list #$@(guix-configuration-build-machines config))))))) (define-record-type* <guix-extension> guix-extension make-guix-extension @@ -2093,9 +2094,9 @@ (define guix-service-type (substitute-urls (append (guix-extension-substitute-urls extension) (guix-configuration-substitute-urls config))) (build-machines - (and (or (guix-build-machines config) + (and (or (guix-configuration-build-machines config) (pair? (guix-extension-build-machines extension))) - (append (or (guix-build-machines config) '()) + (append (guix-configuration-build-machines config) (guix-extension-build-machines extension)))) (chroot-directories (append (guix-extension-chroot-directories extension)