services: oci-container: Fix provided image is string.
gnu/services/docker.scm (oci-container-shepherd-service): When image is
oci-image, call %oci-image-loader.
Change-Id: I26105e82643affe9e7037975e42ec9690089545b
services: base: Add optional delayed mount of file-systems
Add a mechanism to only require mounting a subset of file-system entries
during early Shepherd initialization. Any file-system with additional Shepherd
service requirements (e.g. networking) is not required to provision
'file-systems.
* gnu/services/base.scm (file-system-shepherd-service): Splice
file-system-requirements into the Shepherd service requirement list.
(file-system-shepherd-services): Provision 'file-system only when file system
services without additional Shepherd requirements are started.
* gnu/system/file-systems.scm (file-system): Add shepherd-requirements field
to the file-system record. This field is used for adding additional Shepherd
requirements to a file-system Shepherd service.
* doc/guix.texi: Add documentation for file-system shepherd-requirements.
Change-Id: If0392db03d48e8820aa53df1df482c12ec72e1a5
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
services: nscd: Enable ‘passwd’ and ‘group’ caches by default.
This allows users to specify NSS plugins such as LDAP via the
‘name-services’ field of <nscd-configuration>. Failing that, user code
will dlopen whatever passwd/group plugins are listed in
/etc/nsswitch.conf, which is likely to fail, typically because those are
not in $LD_LIBRARY_PATH.
* gnu/services/base.scm (%nscd-default-caches): Add ‘passwd’ and ‘group’
caches.
Change-Id: I9c03346a1de2710685f7801eccd2e08007427f5d
services: darkstat: Depend on ‘user-processes’.
* gnu/services/monitoring.scm (darkstat-shepherd-service): Add
‘user-processes’ to ‘requirement’.
Change-Id: I6abaefd88c6075a0379e5867838653765dfaa08e
services: avahi: Use socket activation and log to stderr.
* gnu/services/avahi.scm (avahi-shepherd-service): Change to systemd
style. Remove ‘--daemonize’ option and #:pid-file. Add #:lazy-start?
and #:log-file.
Change-Id: I1915243f057ff3bbe281f46f17826f24b124f659
services: dbus: Log to stderr rather than syslog.
* gnu/services/dbus.scm (dbus-shepherd-service): Remove ‘--syslog-only’
option and pass #:log-file unconditionally.
Change-Id: I9e42f241e08b95ff01e9ad69551bc2c7ce869d6d
services: tor: Log to stderr rather than syslog.
* gnu/services/networking.scm (tor-configuration->torrc): Change ‘Log’
directive to ‘stderr’.
(tor-shepherd-service): Remove /dev/log file system mapping.
Change-Id: I2e33ad8033f884ce59d929a4181172325331efe0
services: nscd: ‘log-file’ defaults to #f.
* gnu/services/base.scm (<nscd-configuration>)[log-file]: Default to #f.
* doc/guix.texi (Base Services): Clarify documentation.
Change-Id: Ia75914fc2665db13bef688d53659083a615ebef4
Revert "services: home: Use pairs instead of lists."
This reverts commit dbeef44f3c520816251bde74c1005915a637e1ef.
Despite the more semantically correct data type, it doesn't follow the style
of the most services and also breaks user-facing API.
Change-Id: Ib4ef4e9cd2f53ac853a5b7c7c90e57c35c99a5ea
services: home: Use pairs instead of lists.
* gnu/services/guix.scm: Use pairs instead of lists.
* doc/guix.texi: Update accordingly.
* gnu/tests/guix.scm: Update accordingly.
Change-Id: I0b8d3fa5b214add89bdb84a11fa20d1b319435f0
services: xorg: Add startx-command-service-type.
* gnu/services/xorg.scm (startx-command-profile-service,
startx-command-service-type): New variables.
* doc/guix.texi (X Window): Document startx-command-service-type.
Change-Id: Ia2a7c3b2d5ebf6bcfff40cb2640b17d3baf6eba0
Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
services: xorg: Add xorg-start-command-xinit procedure.
When the user does not use any desktop environment, the typical sequence is to
log in and then type `startx' into the tty to get a window manager running.
Most distributions do provide a startx by default, but Guix has only an
xorg-start-command that is not suitable for this.
This commit adds a second procedure, xorg-start-command-xinit, that correctly
picks a virtual terminal to use, sets up XAUTHORITY and starts xinit with the
correct arguments. That should make running Guix without a desktop
environment more approachable.
* gnu/services/xorg.scm (xorg-start-command-xinit): New public procedure.
* doc/guix.texi (X Window): Document it.
Change-Id: I17cb16093d16a5c6550b1766754700d4fe014ae9
Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
services: nix: Mount Nix store read only.
* gnu/services/nix.scm (nix-shepherd-service): Add requirements.
(%nix-store-directory): New variable.
(nix-service-type): Add file-system-service-type extension.
Change-Id: I18a5d58c92c1f2b5b6dcecc3d5b439cc15bf4e49
services: shepherd: Failure to load a service does not prevent booting.
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
gnu: docker: Allow passing tarballs for images in oci-container-configuration.
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: docker: Allow setting Shepherd dependencies in oci-container-configuration.
* gnu/services/docker.scm (oci-container-configuration)
[requirement]: New field;
(list-of-symbols): sanitize it;
(oci-container-shepherd-service): use it.
* doc/guix.texi: Document it.
Change-Id: Ic0ba336a2257d6ef7c658cfc6cd630116661f581
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
gnu: docker: Allow setting host environment variables in oci-container-configuration.
* gnu/services/docker.scm (oci-container-configuration)
[host-environment]: New field;
(oci-sanitize-host-environment): sanitize it;
(oci-container-shepherd-service): use it.
* doc/guix.texi: Document it.
Change-Id: I4d54d37736cf09f042a71cb0b6e673abc0948d9c
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
gnu: docker: Provide escape hatch in oci-container-configuration.
* 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>
services: Add restic-backup service.
* gnu/services/backup.scm: New file.
* gnu/local.mk: Add this.
* doc/guix.texi: Document this.
Change-Id: I9efd5559bb445b484107a7c27c2d0a65ccad1e66
Signed-off-by: Ludovic Courtès <ludo@gnu.org>