Fixes <https://issues.guix.gnu.org/71144>.
Fixes a bug whereby, when loading a service file would fail, for
instance due to an unbound variable, a REPL would be opened on the
console, preventing the system from booting.
This fixes that by isolating service load errors and making them
non-fatal.
* gnu/services/shepherd.scm (shepherd-configuration-file)[config]:
Remove call to ‘call-with-error-handling’. Use ‘filter-map’ instead of
‘map’ to iterate over service files, and catch exceptions raised by
‘load-compiled’.
Change-Id: Ie6e76ea514837f85386232f797bc77b2882b5c22
This commit allows for loading an OCI image tarball before running an
OCI backed Shepherd service. It does so by adding a one shot Shepherd
service to the dependencies of the OCI backed service that at boot runs
docker load on the tarball.
* gnu/services/docker.scm (oci-image): New record;
(lower-oci-image): new variable, lower it;
(string-or-oci-image?): sanitize it;
(oci-container-configuration)[image]: allow also for oci-image records;
(oci-container-shepherd-service): use it;
(%oci-image-loader): new variable.
Change-Id: Ie504f479ea0d47f74b0ec5df9085673ffd3f639d
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* gnu/services/docker.scm (exports): Add missing procedures;
(oci-container-service-type)[description]: Docker and OCI images should
mean the same thing;
(oci-container-configuration): clarify field types;
[extra-arguments]: new field;
(oci-sanitize-extra-arguments): sanitize it;
(oci-container-shepherd-service): use it.
* doc/guix.texi: Document it.
Change-Id: I64e9d82c8ae538d59d1c482f23070a880156ddf7
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* gnu/services/pm.scm
(power-profiles-configuration): New configuration.
(power-profiles-daemon-shepherd-service): New procedure.
(power-profiles-daemon-activation): New variable.
(power-profiles-daemon-service-type): New procedure.
* doc/guix.texi (Power Management Services): Document it.
Change-Id: Ib035d993ed82eec2a43f3ba2b4c92f77e08a0fd7
Signed-off-by: Christopher Baines <mail@cbaines.net>
The ‘action’ method was deprecated in Shepherd 0.10.0.
* gnu/services/base.scm (shepherd-set-http-proxy-action)
(shepherd-discover-action): Use ‘perform-service-action’ instead of the
now-deprecated ‘action’ method.
Change-Id: Ibe1c79a44148596292c2c8907011ec787f8a9ddd
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>
As of Cuirass commit 9a1452ee021c9f773424961cfeef47ca0b7c5c5a, this option
seems to be unused and kept for back compatibility there.
* gnu/services/cuirass.scm (<cuirass-configuration>): Remove use-substitutes?
field.
(cuirass-shepherd-service): Remove the option.
* doc/guix.texi (Continuous Integration): Remove option documentation.
Change-Id: I933550ce76eecdf918b07891aa8212fd30a7c87e
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Currently, "extra-options" is passed to both "cuirass register" and "cuirass
web" processes. This makes it impractical since the extra parameters have to
be intended for and supported by both processes.
* gnu/services/cuirass.scm (<cuirass-configuration>): Add a web-extra-options
field.
(cuirass-shepherd-service): Replace extra-options with web-extra-options for
cuirass web.
* doc/guix.texi (Continuous Integration): Document the changes.
Change-Id: Iba79c559ea8267aaf8f25248f3d18ed7b352cb60
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This patch adds a Guix Home service, which allows for configuring/deploying an
operating-system declaration with an associated home-environment.
* gnu/services/guix.scm: Add guix-home-service and guix-home-shepherd-service
* gnu/home/services/shepherd.scm: Don't attempt to launch user shepherd when
the system shepherd runs guix-home-<user>
* doc/guix.texi: Add documentation for guix-home-service
* gnu/tests/guix.scm: Add a test to verify guix-home-service-type is able to
activate a home environment
Change-Id: Ifbcc0878d934aa4abe34bb2123b5081fb432aa8e
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Previously, if /etc/guix/machines.scm was a dangling symlink, it would
be kept (because ‘file-exists?’ would return #f) and thus the following
‘symlink’ call would throw with EEXIST.
* gnu/services/base.scm (guix-machines-files-installation): Use ‘lstat’
rather than ‘file-exists?’.
Change-Id: I07c7eed842dacabbd19ae2a17ac3e59cf26e46b2
* gnu/services/guix.scm (nar-herder-configuration-new-ttl,
nar-herder-cached-compression-configuration-unused-removal-duration,
nar-herder-cached-compression-configuration-ttl,
nar-herder-cached-compression-configuration-new-ttl): New procedure.
(nar-herder-shepherd-services): Handle the new options.
* doc/guix.texi (Guix Services): Document the new nar-herder options.
Change-Id: I161e490221a3ce394e32ada685dca27df60638bb
The #:lazy-start? parameter was added in the Shepherd 0.10.0, which is
required since commit 477d4f7d24.
* gnu/services/base.scm (guix-publish-shepherd-service): Use
‘make-systemd-constructor’ unconditionally and pass #:lazy-start?.
Change-Id: I95aa079732cd21e32091c7deea2ed2f1bc50f2f2
These are useless when offloading yet were causing problems on systems
where the default substitute servers are unreachable.
* gnu/services/virtualization.scm (%virtual-build-machine-operating-system):
Add ‘use-substitutes?’ field to ‘guix-configuration’.
Change-Id: I7d5e380a6f2e2d537de43fdb3c550958ed4db255
* gnu/services/xorg.scm (<gdm-configuration>): Change the default value for
wayland? from '#f' to '#t'.
Change-Id: Ic966dfc462b1140894aa6c38c23e229d6252d340
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
These imports were needed for a short time to consider two variants of finding
udev/polkit configuration files. They are no longer needed, since the
respective procedures use all packages now.
* gnu/services/desktop.scm: Strip use of (guix diagnostics) and (srfi srfi-35).
As with our udev extension, this makes it so that all inputs are considered
modulo a new ignorelist.
* gnu/services/desktop.scm (gnome-desktop-configuration): Add
polkit-ignorelist.
(gnome-polkit-settings): Adjust accordingly.
Our udev service is capable of handling both rules and hardware databases.
This patch makes it so that gnome can install any such needed rules or
databases, while also allowing users to supply a list of names to ignore
(via regular expressions).
* gnu/services/desktop.scm (gnome-desktop-configuration): Add udev-ignorelist.
(gnome-udev-resources): Rename to…
(gnome-udev-configuration-files): … this. Account for udev-ignorelist.
(gnome-desktop-service-type): Adjust accordingly.
Change-Id: I6df4b896652581c42a35ea3ba1e4849ad72d12ef
This is a followup to e0ade40c2b, which
didn’t have the desired effect.
* gnu/services/virtualization.scm (virtual-build-machine-default-image):
Add ‘volatile-root?’ field.
Change-Id: I1a622f22cdd0f8f83860a6eb4a852518db3b46b7
* gnu/services/virtualization.scm (check-vm-availability): Check the
value of ‘live-service-running’.
Change-Id: Iba858ea0fa417d9276e026b72b4b78791932482e
This is safer and more appropriate than redirecting to localhost.
* gnu/services/networking.scm (%unroutable-ipv4, %unroutable-ipv6): New
variables.
(facebook-host-aliases): Use them.
Change-Id: Idd4b1fec903c52d542d177a52fec1814eded4119
So far the partition had too little free space.
* gnu/services/virtualization.scm (%default-virtual-build-machine-image-size):
New variable.
(virtual-build-machine-default-image): Define ‘partitions’ field.
Change-Id: Iffe0f316eecad8754d29f8c811cdc4836a818a3f
This provides /dev/pts and other things that are important for
builds (for example, Python 2.x has ‘openpty’ unit tests that can only
succeed when /dev/pts is available.)
* gnu/services/virtualization.scm (%virtual-build-machine-operating-system)
[file-systems]: Add %BASE-FILE-SYSTEMS.
Change-Id: I7d12a4cb491e957bf55e6c5f9dd09c013473ca42
Until now, the secret service had a hard-coded TCP endpoint on port
1004. This change lets users specify arbitrary socket addresses.
* gnu/build/secret-service.scm (socket-address->string): New procedure,
taken from Shepherd.
(secret-service-send-secrets): Replace ‘port’ by ‘address’ and adjust
accordingly.
(secret-service-receive-secrets): Likewise.
* gnu/services/virtualization.scm (secret-service-shepherd-services):
Likewise.
(secret-service-operating-system): Add optional ‘address’ parameter and
honor it. Adjust ‘start’ method accordingly.
Change-Id: I87a9514f1c170dca756ce76083d7182c6ebf6578
Otherwise, modules will be loaded before udev starts, and load events won't be
handled.
* gnu/services/linux.scm (kernel-module-loader-shepherd-service)[requirement]:
Add 'udev.
Change-Id: Ib65028978f96012604b54b27a56501d4388b0f34