Subject: [bug#43494] [PATCH 2/4] services: guix: Add guix-build-coordinator-service-type.

From: Ludovic Courtès <[email-masked]>
Date: Fri, 18 Sep 2020 22:20:58 +0200

Christopher Baines <[email-masked]> skribis:

> * gnu/services/guix.scm (<guix-build-coordinator-configuration>): New record
> type.
> (guix-build-coordinator-configuration, guix-build-coordinator-configuration?,
> guix-build-coordinator-configuration-package,
> guix-build-coordinator-configuration-user,
> guix-build-coordinator-configuration-group,
> guix-build-coordinator-configuration-datastore-uri-string,
> guix-build-coordinator-configuration-agent-communication-uri-string,
> guix-build-coordinator-configuration-client-communication-uri-string,
> guix-build-coordinator-configuration-allocation-strategy,
> guix-build-coordinator-configuration-hooks,
> guix-build-coordinator-configuration-guile,
> make-guix-build-coordinator-start-script,
> guix-build-coordinator-shepherd-services, guix-build-coordinator-activation,
> guix-build-coordinator-account): New procedures.
> (guix-build-coordinator-service-type): New variable.
> * gnu/tests/guix.scm (%test-guix-build-coordinator): New variable.
> * doc/guix.texi (Guix Services): Document it.

Yay!

> +@subsubheading Guix Build Coordinator
> +The @uref{https://git.cbaines.net/guix/build-coordinator/,Guix Build
> +Coordinator} aids in building derivations.  The Guix Daemon is still
                     ^
Maybe something like: “in distributing derivation builds among machines
running an @dfn{agent}”.

Also, s/Guix Daemon/build daemon/ or similar.

(In general I’m in favor of avoiding “brands” in documentation and
concept names.)

Maybe add a “@quotation Note” stating that it’s work in progress and
subject to change.

> +(define* (make-guix-build-coordinator-start-script database-uri-string
> +                                                   allocation-strategy
> +                                                   pid-file
> +                                                   guix-build-coordinator-package
> +                                                   #:key
> +                                                   agent-communication-uri-string
> +                                                   client-communication-uri-string
> +                                                   (hooks '())
> +                                                   (guile guile-3.0))
> +  (program-file
> +   "start-guix-build-coordinator"
> +   (with-extensions (cons guix-build-coordinator-package
> +                          ;; This is a poorly constructed Guile load path,
> +                          ;; since it contains things that aren't Guile
> +                          ;; libraries, but it means that the Guile libraries
> +                          ;; needed for the Guix Build Coordinator don't need
> +                          ;; to be individually specified here.
> +                          (map second (package-inputs
> +                                       guix-build-coordinator-package)))

Perhaps there should eventually be a ‘guix-build-coordinator’ command in
the package itself?

Otherwise LGTM, thanks!

One thing we discussed on IRC is the name and ways to set up one’s
monitor so that
guix-build-coordinator-configuration-client-communication-uri-string
fits on one line.  :-)

An idea that came to mind was “(Guix) dispatch(er)”, which is
synonymous.  You could use the (guix dispatch …) name space.
Food for thought!  (No rush, of course!)

Ludo’.