aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaku Laesvuori <saku@laesvuori.fi>2023-12-11 09:26:14 +0200
committerLudovic Courtès <ludo@gnu.org>2023-12-14 23:12:24 +0100
commit59d65f66c505884cc46d7277889d34d3672a8378 (patch)
treeaf498718b337f20dddfc76f4f225952c11bb38da
parenta1347d09f12ed315507e5c0b8644ba1eb350eca7 (diff)
downloadguix-59d65f66c505884cc46d7277889d34d3672a8378.tar.gz
guix-59d65f66c505884cc46d7277889d34d3672a8378.zip
services: guix: Allow gexps evaluating to a list of build-machines.
* gnu/services/base.scm (guix-machines-files-installation): Handle machines being a mixed list of build-machines and lists of build-machines. * doc/guix.texi (Base Services): Document it. Change-Id: Ie404562ca0b564413233c3a624046da831893dc3 Co-authored-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--doc/guix.texi6
-rw-r--r--gnu/services/base.scm8
2 files changed, 11 insertions, 3 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 4c0f6b54e5..4a196ce04a 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -19399,7 +19399,8 @@ and DNS-SD.
@anchor{guix-configuration-build-machines}
@item @code{build-machines} (default: @code{#f})
This field must be either @code{#f} or a list of gexps evaluating to a
-@code{build-machine} record (@pxref{Daemon Offload Setup}).
+@code{build-machine} record or to a list of @code{build-machine} records
+(@pxref{Daemon Offload Setup}).
When it is @code{#f}, the @file{/etc/guix/machines.scm} file is left
untouched. Otherwise, the list of of gexps is written to
@@ -19468,7 +19469,8 @@ A list of file-like objects where each element contains a public key.
A list of strings where each element is a substitute URL.
@item @code{build-machines} (default: @code{'()})
-A list of gexps that evaluate to @code{build-machine} records
+A list of gexps that evaluate to @code{build-machine} records or to a list of
+@code{build-machine} records.
(@pxref{Daemon Offload Setup}).
Using this field, a service may add new build machines to receive builds
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index dc001fdef6..6539bfd6ce 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1767,7 +1767,13 @@ archive' public keys, with GUIX."
(mkdir-p (dirname machines-file)))
;; Installed the declared machines file.
- (symlink #+(scheme-file "machines.scm" machines)
+ (symlink #+(scheme-file "machines.scm"
+ #~((@ (srfi srfi-1) append-map)
+ (lambda (entry)
+ (if (build-machine? entry)
+ (list entry)
+ entry))
+ #$machines))
machines-file))))
(define-record-type* <guix-configuration>