diff options
author | Ian Eure <ian@retrospec.tv> | 2024-04-07 12:20:59 -0700 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2024-05-04 19:14:27 +0200 |
commit | ef8ab6ab66c4d629699d175938ef1912941d4dce (patch) | |
tree | baa3fdcf3bd8a0e9d66cef0621f0b48590f23942 /gnu/services | |
parent | dde37247fa9d56b26b8967bb4d70a7598ab2c330 (diff) | |
download | guix-ef8ab6ab66c4d629699d175938ef1912941d4dce.tar guix-ef8ab6ab66c4d629699d175938ef1912941d4dce.tar.gz |
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>
Diffstat (limited to 'gnu/services')
-rw-r--r-- | gnu/services/base.scm | 15 |
1 files changed, 8 insertions, 7 deletions
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 @@ 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 @@ archive' public keys, with GUIX." (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 @@ proxy of 'guix-daemon'...~%") #$(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 @@ proxy of 'guix-daemon'...~%") (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) |