Without this fix, deploying `home-mcron-service-type' will strip user's PATH
variable from it's environment. This means that, programs such as `notmuch',
which use hooks which usually invoke `notmuch' from path, would need to be
updated with full paths; which makes it very inconvenient to use.
* gnu/services/mcron.scm (mcron-shepherd-services): respect user PATH variable.
Change-Id: I104aa0a818ad6c3266b2b8f73a9609bfb36e314d
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* gnu/services/mail.scm (opensmtpd-set-gids): Migrate to
PRIVILEGED-PROGRAM from SETUID-PROGRAM…
(opensmtpd-service-type): … and to PRIVILEGED-PROGRAM-SERVICE-TYPE
from SETUID-PROGRAM-SERVICE-TYPE.
Change-Id: Ide434aa480ea3316c971c58898088d72b5b6671f
Fixed the issue described here:
https://lists.gnu.org/archive/html/help-guix/2024-01/msg00034.html
Fix `syncthing-shepherd-service` failing to guess the correct `HOME`
environment variable when it's `<syncthing-configuration>` does not have a
value for the `home` or `user` fields.
* gnu/services/syncthing.scm (syncthing-shepherd-service): Change ‘HOME’
value in #:environment-variables argument.
Change-Id: I102bfe5feba1ebb349a0cde1c987c0c10ebbab7a
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* gnu/services/desktop.scm (<elogind-configuration>): Allow actions to be set
to 'suspend-then-hibernate'. Add configuration for 'hibernate-delay-seconds'
and 'suspend-estimation-seconds'.
* doc/guix.texi (Desktop Services): Add documentation for
'hibernate-delay-seconds' and 'suspend-estimation-seconds'.
Change-Id: Icf788fcc88451aa6174a608fbed309961b847430
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Previous value of #f lead to `head reload nginx' returning exit code 1,
complicating usage from scripts (and other actions). Returning #t fixes that.
Any actual failures are still covered by the invoke call above.
* gnu/services/web.scm (nginx-shepherd-service)[nginx-action]<-s>: Return #t.
Change-Id: I4ce1645798a85baddeb0f5bd702a2567db3c7aaa
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Reloading nginx lead to (harmless, yet annoying) alert being logged:
nginx: [alert] could not open error log file: open() "/gnu/store/9l2lznlqpjcm79znq1xas378maqgysc8-nginx-1.27.0/logs/error.log" failed (2: No such file or directory)
Since there already is prepared runtime directory for nginx, all that was
missing was to also pass it to the reload and reopen invocations.
* gnu/services/web.scm (nginx-shepherd-service)[reload, reopen]: Pass -p flag
with run-directory as value.
Change-Id: Id5c558d65def8c1fe5cf581a4a370508ac05e550
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* gnu/services/docker.scm (oci-container-configuration)
[shepherd-actions]: New field.
(sanitize-shepherd-actions): sanitize it.
(oci-container-shepherd-service): use it.
* doc/guix.texi: Document it.
Change-Id: I0ca9826542be7cb8ca280a07a9bff1a262c2a8a7
Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn>
* gnu/services/docker.scm (oci-container-configuration)
[respawn?]: New field.
(oci-container-shepherd-service): use it.
* doc/guix.texi: Document it.
Change-Id: I0d6367607fd0fd41f90a54b33d80bf4d4f43dd8b
Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn>
* gnu/services/docker.scm (oci-container-configuration)
[auto-start?]: New field.
(oci-container-shepherd-service): use it.
* doc/guix.texi: Document it.
Change-Id: Id093d93effbbec3e1be757f8be83cf5f62eaeda7
Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn>
* gnu/services/docker.scm (oci-container-configuration)
[log-file]: New field.
(oci-container-shepherd-service): use it.
* doc/guix.texi: Document it.
Change-Id: Icad29ac6342b6f5bafc0d9be13a93cee99674185
In the absence of the /etc/guix/channels.scm file, %default-channels is used
anyway. If user manually (or by extra-special-file) created the file, we
should respect it. This commit therefore changes the default to #f, hopefully
having zero impact on people not actively using the `channels' field.
* gnu/services/base.scm (<guix-configuration>)[channels]: Set default to #f.
Change-Id: I516c1735a037a153fabbebfc337051aaf0be2155
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This is a followup to 7c27bd115b.
* gnu/services/base.scm (file-system-shepherd-service): Catch
'system-error from ‘umount’ call when FILE-SYSTEM is marked as
mount-may-fail.
Change-Id: I2234f8da320b43089f4ee058cad8608ce9c078f8
When extra-content is a list, add 4 space indentation and a newline to every
line. If it's a string, continue inserting it directly. This makes the list
serialization behavior more consistent with other services.
* gnu/services/web (default-nginx-config): Support lists.
* doc/guix.texi (Web Services)[nginx-configuration]: Document it.
Change-Id: Iec8614ba3cfc37292a566197e8d39b352b04846a
Signed-off-by: Christopher Baines <mail@cbaines.net>
* gnu/services/networking.scm (dhcp-client-configuration) [config-file]: New
field.
(dhcp-client-configuration-config-file): New accessor.
(dhcp-client-shepherd-service): Use the config file when invoking
dhclient if supplied.
* doc/guix.texi: Document it.
Change-Id: I286de4ddf59c5e606bf1fe0a7510570869e62b1a
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
(match value (%unset-value ...)) is equivalent here to
(match value (_ ...)). Even if you set 'log-file to some path, it's always
"syslog" in the configuration file.
* gnu/services/audio.scm (mpd): Fix buggy 'match'.
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: If397919c2844d856c69fe00b8907b7b3fd86e564
* doc/guix.texi (radicale-configuration): Update documentation to reflect new
configuration, add new symbols.
* gnu/services/mail.scm (%default-radicale-config-file): Delete.
(radicale-auth-configuration, radicale-auth-configuration?)
(radicale-encoding-configuration, radicale-encoding-configuration?)
(radicale-logging-configuration, radicale-logging-configuration?)
(radicale-rights-configuration, radicale-rights-configuration?)
(radicale-server-configuration, radicale-server-configuration?)
(radicale-storage-configuration, radicale-storage-configuration?):
New configuration types and corresponding predicates.
(radicale-configuration, radicale-configuration?): Use define-configuration.
(radicale-activation, radicale-shepherd-service): Update to new
configuration format.
(radicale-activation): Use user-defined values for service files.
(radicale-service-type): Capitalize "Radicale" in description.
Change-Id: Ic88b8ff2750e3d658f6c7cee02d33417aa8ee6d2
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
As the shepherd adds these to the logs.
* gnu/services/guix.scm (make-guix-build-coordinator-start-script): Pass
#:timestamp-log-output? #f to make-build-coordinator.
(guix-build-coordinator-agent-shepherd-services): Add
--timestamp-log-output=false to the arguments.
Change-Id: I9073ee7b1cefa894d38fdf3831c59de693e087f6
gnu/services/docker.scm (oci-container-shepherd-service): When image is
oci-image, call %oci-image-loader.
Change-Id: I26105e82643affe9e7037975e42ec9690089545b
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>
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
This reverts commit dbeef44f3c.
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
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>
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>