Subject: Re: [bug#70263] [PATCH] gnu: guix-configuration: Improve offload build-machines.

From: Ludovic Courtès <[email-masked]>
Date: Sat, 04 May 2024 19:12:59 +0200

Hi Ian,

Ian Eure <[email-masked]> 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’.