Next: Linux Services, Previous: PAM Mount Service, Up: Services [Contents][Index]
The Build Farm Front-End assists with building Guix packages in bulk. It’s responsible for submitting builds and displaying the status of the build farm.
Service type for the Build Farm Front-End. Its value must be a
bffe-configuration
object.
Data type representing the configuration of the Build Farm Front-End.
package
(default: bffe
)The Build Farm Front-End package to use.
user
(default: "bffe"
)The system user to run the service as.
group
(default: "bffe"
)The system group to run the service as.
arguments
A list of arguments to the Build Farm Front-End. These are passed to
the run-bffe-service
procedure when starting the service.
For example, the following value directs the Build Farm Front-End to
submit builds for derivations available from data.guix.gnu.org
to
the Build Coordinator instance assumed to be running on the same
machine.
(list #:build (list (build-from-guix-data-service (data-service-url "https://data.guix.gnu.org") (build-coordinator-url "http://127.0.0.1:8746") (branches '("master")) (systems '("x86_64-linux" "i686-linux")) (systems-and-targets (map (lambda (target) (cons "x86_64-linux" target)) '("aarch64-linux-gnu" "i586-pc-gnu"))) (build-priority (const 0)))) #:web-server-args '(#:event-source "https://example.com" #:controller-args (#:title "example.com build farm")))
extra-environment-variables
(default: ’())Extra environment variables to set via the shepherd service.
The Guix Build Coordinator aids in distributing derivation builds among machines running an agent. The build daemon is still used to build the derivations, but the Guix Build Coordinator manages allocating builds and working with the results.
The Guix Build Coordinator consists of one coordinator, and one or more connected agent processes. The coordinator process handles clients submitting builds, and allocating builds to agents. The agent processes talk to a build daemon to actually perform the builds, then send the results back to the coordinator.
There is a script to run the coordinator component of the Guix Build Coordinator, but the Guix service uses a custom Guile script instead, to provide better integration with G-expressions used in the configuration.
Service type for the Guix Build Coordinator. Its value must be a
guix-build-coordinator-configuration
object.
Data type representing the configuration of the Guix Build Coordinator.
package
(default: guix-build-coordinator
)The Guix Build Coordinator package to use.
user
(default: "guix-build-coordinator"
)The system user to run the service as.
group
(default: "guix-build-coordinator"
)The system group to run the service as.
database-uri-string
(default: "sqlite:///var/lib/guix-build-coordinator/guix_build_coordinator.db"
)The URI to use for the database.
agent-communication-uri
(default: "http://0.0.0.0:8745"
)The URI describing how to listen to requests from agent processes.
client-communication-uri
(default: "http://127.0.0.1:8746"
)The URI describing how to listen to requests from clients. The client API allows submitting builds and currently isn’t authenticated, so take care when configuring this value.
allocation-strategy
(default: #~basic-build-allocation-strategy
)A G-expression for the allocation strategy to be used. This is a procedure that takes the datastore as an argument and populates the allocation plan in the database.
hooks
(default: ’())An association list of hooks. These provide a way to execute arbitrary code upon certain events, like a build result being processed.
parallel-hooks
(default: ’())Hooks can be configured to run in parallel. This parameter is an association list of hooks to do in parallel, where the key is the symbol for the hook and the value is the number of threads to run.
guile
(default: guile-3.0-latest
)The Guile package with which to run the Guix Build Coordinator.
extra-environment-variables
(default: ’())Extra environment variables to set via the shepherd service.
Service type for a Guix Build Coordinator agent. Its value must be a
guix-build-coordinator-agent-configuration
object.
Data type representing the configuration a Guix Build Coordinator agent.
package
(default: guix-build-coordinator/agent-only
)The Guix Build Coordinator package to use.
user
(default: "guix-build-coordinator-agent"
)The system user to run the service as.
coordinator
(default: "http://localhost:8745"
)The URI to use when connecting to the coordinator.
authentication
Record describing how this agent should authenticate with the coordinator. Possible record types are described below.
systems
(default: #f
)The systems for which this agent should fetch builds. The agent process will use the current system it’s running on as the default.
max-parallel-builds
(default: #f
)The number of builds to perform in parallel.
max-parallel-uploads
(default: #f
)The number of uploads to perform in parallel.
max-allocated-builds
(default: #f
)The maximum number of builds this agent can be allocated.
max-1min-load-average
(default: #f
)Load average value to look at when considering starting new builds, if the 1 minute load average exceeds this value, the agent will wait before starting new builds.
This will be unspecified if the value is #f
, and the agent will
use the number of cores reported by the system as the max 1 minute load
average.
derivation-substitute-urls
(default: #f
)URLs from which to attempt to fetch substitutes for derivations, if the derivations aren’t already available.
non-derivation-substitute-urls
(default: #f
)URLs from which to attempt to fetch substitutes for build inputs, if the input store items aren’t already available.
extra-options
(default: ’())Extra command line options for guix-build-coordinator-agent
.
Data type representing an agent authenticating with a coordinator via a UUID and password.
uuid
The UUID of the agent. This should be generated by the coordinator process, stored in the coordinator database, and used by the intended agent.
password
The password to use when connecting to the coordinator.
Data type representing an agent authenticating with a coordinator via a UUID and password read from a file.
uuid
The UUID of the agent. This should be generated by the coordinator process, stored in the coordinator database, and used by the intended agent.
password-file
A file containing the password to use when connecting to the coordinator.
Data type representing an agent authenticating with a coordinator via a dynamic auth token and agent name.
agent-name
Name of an agent, this is used to match up to an existing entry in the database if there is one. When no existing entry is found, a new entry is automatically added.
token
Dynamic auth token, this is created and stored in the coordinator database, and is used by the agent to authenticate.
Data type representing an agent authenticating with a coordinator via a dynamic auth token read from a file and agent name.
agent-name
Name of an agent, this is used to match up to an existing entry in the database if there is one. When no existing entry is found, a new entry is automatically added.
token-file
File containing the dynamic auth token, this is created and stored in the coordinator database, and is used by the agent to authenticate.
The Guix Data Service processes, stores and provides data about GNU Guix. This includes information about packages, derivations and lint warnings.
The data is stored in a PostgreSQL database, and available through a web interface.
Service type for the Guix Data Service. Its value must be a
guix-data-service-configuration
object. The service optionally
extends the getmail service, as the guix-commits mailing list is used to
find out about changes in the Guix git repository.
Data type representing the configuration of the Guix Data Service.
package
(default: guix-data-service
)The Guix Data Service package to use.
user
(default: "guix-data-service"
)The system user to run the service as.
group
(default: "guix-data-service"
)The system group to run the service as.
port
(default: 8765
)The port to bind the web service to.
host
(default: "127.0.0.1"
)The host to bind the web service to.
getmail-idle-mailboxes
(default: #f
)If set, this is the list of mailboxes that the getmail service will be configured to listen to.
commits-getmail-retriever-configuration
(default: #f
)If set, this is the getmail-retriever-configuration
object with
which to configure getmail to fetch mail from the guix-commits mailing
list.
extra-options
(default: ’())Extra command line options for guix-data-service
.
extra-process-jobs-options
(default: ’())Extra command line options for guix-data-service-process-jobs
.
git-repositories
(default: #f)List of git-repository information to insert into the database.
build-servers
(default: #f)List of build-server information to insert into the database.
The Guix Home service is a way to let Guix System deploy the home
environment of one or more users (see Home Configuration, for more
on Guix Home). That way, the system configuration embeds declarations
of the home environment of those users and can be used to deploy
everything consistently at once, saving users the need to run
guix home reconfigure
independently.
Service type for the Guix Home service. Its value must be a list of lists containing user and home environment pairs. The key of each pair is a string representing the user to deploy the configuration under and the value is a home-environment configuration.
(use-modules (gnu home)) (define my-home (home-environment …)) (operating-system (services (append (list (service guix-home-service-type `(("alice" ,my-home)))) %base-services)))
This service can be extended by other services to add additional home environments, as in this example:
(simple-service 'my-extra-home guix-home-service-type `(("bob" ,my-extra-home))))
The Nar Herder is a utility for managing a collection of nars.
Service type for the Guix Data Service. Its value must be a
nar-herder-configuration
object. The service optionally
extends the getmail service, as the guix-commits mailing list is used to
find out about changes in the Guix git repository.
Data type representing the configuration of the Guix Data Service.
package
(default: nar-herder
)The Nar Herder package to use.
user
(default: "nar-herder"
)The system user to run the service as.
group
(default: "nar-herder"
)The system group to run the service as.
port
(default: 8734
)The port to bind the server to.
host
(default: "127.0.0.1"
)The host to bind the server to.
mirror
(default: #f
)Optional URL of the other Nar Herder instance which should be mirrored. This means that this Nar Herder instance will download it’s database, and keep it up to date.
database
(default: "/var/lib/nar-herder/nar_herder.db"
)Location for the database. If this Nar Herder instance is mirroring another, the database will be downloaded if it doesn’t exist. If this Nar Herder instance isn’t mirroring another, an empty database will be created.
database-dump
(default: "/var/lib/nar-herder/nar_herder_dump.db"
)Location of the database dump. This is created and regularly updated by taking a copy of the database. This is the version of the database that is available to download.
storage
(default: #f
)Optional location in which to store nars.
storage-limit
(default: "none"
)Limit in bytes for the nars stored in the storage location. This can also be set to “none” so that there is no limit.
When the storage location exceeds this size, nars are removed according to the nar removal criteria.
storage-nar-removal-criteria
(default: '()
)Criteria used to remove nars from the storage location. These are used in conjunction with the storage limit.
When the storage location exceeds the storage limit size, nars will be checked against the nar removal criteria and if any of the criteria match, they will be removed. This will continue until the storage location is below the storage limit size.
Each criteria is specified by a string, then an equals sign, then another string. Currently, only one criteria is supported, checking if a nar is stored on another Nar Herder instance.
ttl
(default: #f
)Produce Cache-Control
HTTP headers that advertise a time-to-live
(TTL) of ttl. ttl must denote a duration: 5d
means 5
days, 1m
means 1 month, and so on.
This allows the user’s Guix to keep substitute information in cache for ttl.
new-ttl
(default: #f
)If specified, this will override the ttl
setting when used for
the Cache-Control
headers, but this value will be used when
scheduling the removal of nars.
Use this setting when the TTL is being reduced to avoid removing nars while clients still have cached narinfos.
negative-ttl
(default: #f
)Similarly produce Cache-Control
HTTP headers to advertise the
time-to-live (TTL) of negative lookups—missing store items, for
which the HTTP 404 code is returned. By default, no negative TTL is
advertised.
log-level
(default: 'DEBUG
)Log level to use, specify a log level like 'INFO
to stop logging
individual requests.
cached-compressions
(default: '()
)Activate generating cached nars with different compression details from the stored nars. This is a list of nar-herder-cached-compression-configuration records.
min-uses
(default: 3
)When cached-compressions are enabled, generate cached nars when at least this number of requests are made for a nar.
workers
(default: 2
)Number of cached nars to generate at a time.
nar-source
(default: #f
)Location to fetch nars from when computing cached compressions. By default, the storage location will be used.
extra-environment-variables
(default: '()
)Extra environment variables to set via the shepherd service.
Data type representing the cached compression configuration.
type
Type of compression to use, e.g. 'zstd
.
workers
(default: #f
)Level of the compression to use.
directory
(default: #f
)Location to store the cached nars. If unspecified, they will be stored in /var/cache/nar-herder/nar/TYPE.
directory-max-size
(default: #f
)Maximum size in bytes of the directory.
unused-removal-duration
(default: #f
)If a cached nar isn’t used for unused-removal-duration
, it will
be scheduled for removal.
unused-removal-duration must denote a duration: 5d
means 5
days, 1m
means 1 month, and so on.
ttl
(default: #f
)If specified this overrides the ttl
used for narinfos when this
cached compression is available.
new-ttl
(default: #f
)As with the new-ttl
option for nar-herder-configuration
,
this value will override the ttl
when used for narinfo requests.
Next: Linux Services, Previous: PAM Mount Service, Up: Services [Contents][Index]