summaryrefslogtreecommitdiff
path: root/gnu/services
AgeCommit message (Collapse)Author
2025-06-20services: knot: Depend on `user-processes'.vicvbcun
* gnu/services/dns.scm (knot-shepherd-service): Add `user-processes' to the `requirement' field. Change-Id: I59f95aeb25c02944418eb3ea20a42d344703a011 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-06-15gnu: services: base: Set a home directory for the "greeter" user.Quentin Vincent
Fix a problem that caused an "unable to set working directory: no such file or directory (os error 2)" error before every login prompt. The reason for this is that greetd starts agreety as the "greeter" user. The working directory for the newly created process is, by default, "/home/greeter", which does not exist (per our instructions). * gnu/services/base.scm (greetd-accounts)[home-directory]: Set to /var/empty [shell]: Set to /sbin/nologin. Change-Id: I6d971968e8b6a7825c261d4695caf0dd70127e5d Signed-off-by: Danny Milosavljevic <dannym@friendly-machines.com>
2025-06-15services: directory-server: Fix backend-userroot-configuration export.Hilton Chain
* gnu/services/ldap.scm (backend-userroot-configuration): Fix export. Change-Id: I06b9c87016ad117ba56a675f45d9c950040e0b0a
2025-06-09gnu: %standard-geoclue-applications: Add more programs.Ian Eure
If Firefox merits a spot on this list, LibreWolf and IceCat certainly do. Redshift also requires geoclue to work, add it. * gnu/services/desktop.scm (%standard-geoclue-applications): Add LibreWolf and Redshift. Change-Id: Ide54f6bfe8ad8d9282da6105eca07bbd4bd27c14 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-06-08services: Deprecate dhcp-client-service-type.Sören Tempel
ISC's dhcclient has reached its end-of-life in 2022 and is since unsupported [1]. I have added a service for dhcpcd as an alternative a few months ago [2]. Presently, I am not aware of any issues with it; hence, I believe it is now time to deprecate dhcp-client-service-type in favor of dhcpcd-service-type. See also: https://issues.guix.gnu.org/68619 * gnu/services/networking.scm (dhcp-client-service-type): Deprecate. [1]: https://www.isc.org/blogs/isc-dhcp-eol/ [2]: https://issues.guix.gnu.org/75934 Change-Id: I282c6a68570ccc5dfbb21176758c71cf03864ddd Signed-off-by: Hilton Chain <hako@ultrarare.space>
2025-06-06services: iwd: Use the official name.Ludovic Courtès
* gnu/services/networking.scm (iwd-shepherd-service): Fix name and mention “iwd” in ‘description’. * doc/guix.texi (Networking Setup): Correct iwd’s name and add link. Change-Id: I7605488f2018b8ac60664c6617a82f05ddadf6ec
2025-06-06services: iwd: Provide default value in <iwd-settings>.Ludovic Courtès
Fixes a failure of ‘tests/guix-system.sh’, when running ‘guix system search .’: 2296:10 3 (iwd-environment _) 2165:0 2 (%iwd-network-settings-name-resolving-service-procedure #) In ice-9/boot-9.scm: 1685:16 1 (raise-exception _ #:continuable? _) 1685:16 0 (raise-exception _ #:continuable? _) ice-9/boot-9.scm:1685:16: In procedure raise-exception: In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): %unset-marker% * gnu/services/networking.scm (iwd-settings)[network]: Provide default value. Change-Id: I2ea28853f698583ceeaa0b56cde8447fe3546dc3
2025-06-06services: rsync: Remove Shepherd 0.9.0 compatibility shim.Ludovic Courtès
* gnu/services/rsync.scm (rsync-shepherd-service): Remove ‘inetd-style?’. Change-Id: Iab4a72ade621add1cf6e186c6c6a8be415829d11
2025-06-06services: iwd: Fix expression.Ashish SHUKLA
This is a follow-up to c4e1081f82c4f45e34cf6aca1e3f3347dd384c79. The return value of ‘iwd-environment’ wasn't quoted. * gnu/services/networking.scm (iwd-environment): Return list in a G-expression. Change-Id: I5c2fb9ecd5d5c1aa61bd7758b66c7284f6e568b3 Signed-off-by: Hilton Chain <hako@ultrarare.space> Fixes: https://codeberg.org/guix/guix/issues/450
2025-06-05services: networking: Add iwd-service-type.Sergey Trofimov
* gnu/services/networking.scm (iwd-service-type): New service type. (iwd-configuration), (iwd-settings), (iwd-scan-settings), (iwd-general-settings), (iwd-network-settings): New configuration types. * doc/guix.texi (Networking setup): Document it. Change-Id: I852115b9c6768b3ec4eedb34a7f9e66438bd1429 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-06-05services: network-manager: Require wireless-daemon.Sergey Trofimov
* gnu/services/networking.scm (<network-manager-configuration>)[shepherd-requirement]: Replace wpa-supplicant with wireless-daemon. * doc/guix.texi (Networking Setup): Adjust. Change-Id: Id1a51429ccb6ea24839fc2aacd051a3ffe91c33c Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-06-05services: wpa-supplicant: Add 'wireless-daemon' provision.Sergey Trofimov
* gnu/services/networking.scm (wpa-supplicant-configuration): [requirement]: Deprecate, [shepherd-requirement]: New field, [shepherd-provision]: Extract to a field. Add 'wireless-daemon to it. * doc/guix.texi (Networking Setup): Document it. Change-Id: Icc6fdd695e6e96ef168a085524989da639f77cd3 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-06-05services: networking: Add shepherd-requirement for dhcpcd.Sergey Trofimov
* gnu/services/networking.scm (dhcpcd-configuration): Add shepherd-requirement field. (dhcpcd-shepherd-service): Use it. * doc/guix.texi (Networking Setup): Regenerate dhcpcd-configuration documentation. (File Systems): Fix typo. Change-Id: Id347e2bed2569237685a47be82dbf686640db25b Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-06-05services: configuration: Add define-enumerated-field-type helper.Sergey Trofimov
* gnu/services/cups.scm (define-enumerated-field-type): Move... * gnu/services/configuration.scm (define-enumerated-field-type): ...here. * gnu/services/vpn.scm (define-enumerated-field-type): Remove. * gnu/services/power.scm (define-enum): Replace with define-enumerated-field-type. Change-Id: I89ec40f479e3f800268e714f1f88d638be017c7e Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-06-04services: static-networking: Remove use of unbound variable.Ludovic Courtès
Use of ‘G_’ was added in 670d985cabf81a28660c4a8024f752decc495dce but it’s actually unbound. * gnu/services/base.scm (network-set-up/linux): Remove uses of ‘G_’, which is unbound. Change-Id: I6e879688ceee2fcb738e5e213cd3d539c9d89e20
2025-06-02services: dnsmasq: Install dbus config.Sergey Trofimov
While DBUS service is enabled in dnsmasq, it does not work without installing a config file to the system. * gnu/packages/dns.scm (dnsmasq): Install dbus config. * gnu/services/dns.scm (dnsmasq): Extend dbus-root-service-type. Change-Id: I5187f65e1f2892eb10fb95e6f51955559f64dbef Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-05-30services: xorg: Make startx respect XDG_VTNR.Sergey Trofimov
To allow X server to be started by shepherd, without resorting to login managers, the determine-vty procedure has to be adjusted. Shepherd would set /proc/self/fd/0 to /dev/null when starting the service, so the TTY has to be extracted by other means. * gnu/services/xorg.scm (xorg-start-command-xinit): Use XDG_VTNR environment variable to determine VTY. Closes: #52 Change-Id: I390217e292f6534b31d18083c9a49c009a836aad Signed-off-by: 宋文武 <iyzsong@member.fsf.org>
2025-05-26services: Modernize and test nftables service.Maxim Cournoyer
* doc/guix.texi (Networking Services) <nftables>: Update doc. * gnu/services/networking.scm (list-of-debug-levels?): (debug-level?, maybe-list-of-debug-levels?): (nftables-configuration): Rewrite using `define-configuration'. [debug-levels]: New field. (nftables-shepherd-service): Honor it. * gnu/tests/networking.scm (%inetd-echo-port): Extract to top level. (run-iptables-test): Adjust accordingly. (make-nftables-os): New procedure. (%default-nftables-ruleset-for-tests): New variable. (%nftables-os): Likewise. (%test-nftables): New test. Change-Id: I2889603342ff6d2be6261c3de6e4fddd9a9bbe2d
2025-05-26services: Add vte-integration-service-type to %desktop-services.Maxim Cournoyer
* gnu/services/desktop.scm (desktop-services-for-system): Fixes: <https://issues.guix.gnu.org/72172> Fixes: <https://issues.guix.gnu.org/35424> Change-Id: Ib29468468e327801a4e95361610159de61f7e8d6
2025-05-26system: Factorize bashrc default configuration.Maxim Cournoyer
This factorizes out the remaining bashrc bits from /etc/skel/.bashrc to a the template used for both /etc/bashrc on Guix System and ~/.bashrc for home-bash-service-type. Rationale: The use of /etc/skel introduce state: the file is only copied originally when the user account is created, and never (automatically) refreshed again. * gnu/system.scm (operating-system-etc-service): <profile>: Guard against souring /etc/bashrc in non-interactive, SSH case. <bashrc>: Use %default-bashrc, having migrated the remaining definitions to... * gnu/system/shadow.scm (%default-bashrc): ... here. Factorize aliases to... * gnu/services.scm (%default-bash-aliases): ... here. (%default-bashrc-d-aliases): New variable. (%default-etc-bashrc-d-files): Include it in the default configuration. * gnu/services/base.scm (%base-services): Register etc-bashrc-d-service-type. * gnu/home/services/shells.scm (add-bash-configuration): Do not set PS1, now part of %default-bashrc. (home-bash-configuration) [guix-defaults?]: Update doc. [aliases]: Set %default-bash-aliases as the default value. Update doc. * doc/guix.texi (Shells Home Services): Update documentation. (Service Reference): Update example. Change-Id: I340c614983a78fd20a9c4a9705e7fc542ae9b513
2025-05-25services: guix-data-service: Fix data-service-setup-database script.Christopher Baines
* gnu/services/guix.scm (guix-data-service-shepherd-services): Use begin rather than lambda, add some logging and use guile from the data service package. Change-Id: I915682e513a3cc8e3cbf324e3c650c65d2852a96
2025-05-24services: readymedia: Fix typo.Sughosha
* gnu/services/upnp.scm (readymedia-configuration)[home-service?]: Fix typo. Change-Id: Ie7062fbeb88f93d698bbafacf50f8a74766d4202 Signed-off-by: Ian Eure <ian@retrospec.tv>
2025-05-18home: services: Add readymedia.Sughosha
* gnu/home/services/upnp.scm: New file. * gnu/local.mk: Register it. * gnu/services/upnp.scm: Export readymedia-activation and readymedia-shepherd-service. (<readymedia-configuration>)[home-service?]: New field. [cache-directory]: Adjust value depending on 'for-home?'. [log-directory]: Ditto. (readymedia-shepherd-service): Adjust 'requirement' and 'start' according to 'home-service?'. (readymedia-activation): Adjust creating 'media-directories' with permissions according to 'home-service?'. * gnu/tests/upnp.scm (%readymedia-configuration-test): Configure port with %readymedia-default-port. * doc/guix.texi (Miscellaneous Home Services): Document Readymedia Service. (Miscellaneous Services): Add cross-reference. Change-Id: I5c48595d84a815d98e03c7f68a716f048903720c Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-05-18home: Add home-restic-backup service.Giacomo Leidi
* gnu/services/backup.scm: Drop mcron obsolete export. (restic-backup-job-program): Generalize to restic-program. (lower-restic-backup-job): New procedure implementing a standard way to lower restic-backup-job records into lists. (restic-program): Implement general way to run restic commands, for example to initialize repositories. (restic-backup-configuration): Reimplement with (guix records). (restic-backup-job-{logfile,command,requirement,modules}): Add new procedures and add support for Guix Home environments. (restic-backup-job->shepherd-service): Add support for Guix Home environments. (restic-backup-service-activation): Drop procedure as now the Shepherd takes care of creating timers log file directories. (restic-backup-service-type): Drop profile and activation services extensions. * gnu/home/services/backup.scm: New file. * gnu/local.mk: Add this. * doc/guix.texi: Document this. Change-Id: Ied1c0a5756b715fba176a0e42ea154246089e6be Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-05-16gnu: /etc/qemu/firmware: Produce only /etc/qemu/firmware instead of /etc/qemuRutherther
The service unnecessarily populates /etc/qemu with a symlink, so it's not possible to write files like /etc/qemu/bridge.conf or /etc/qemu/host.conf anymore. Since etc-service-type uses file-union, it's possible to put files in subdirectories. This restores the behavior suggested by manual where user can extend etc-service-type with qemu/host.conf etc. * gnu/services/virtualization.scm (/etc/qemu/firmware): Extend with qemu/firmware instead of qemu Change-Id: I7c1ea790e5abf7ad05dce56b7901ac6eb90208fd Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-05-16services: dnsmasq: Add stats and reload shepherd actions.Alexey Abramov
* gnu/services/dns.scm (dnsmasq-service-reload-action): New function. Implements SIGHUP handling for reloading configurations. (dnsmasq-service-stats-action): New function. Implements SIGUSR1 handling for dumping statistics. (dnsmasq-shepherd-service): Use new actions. * doc/guix.texi: Document new actions with examples. * gnu/tests/networking.scm (%test-dnsmasq): Add tests to verify the functionality of new actions. Change-Id: I31f0eb4b26a582e95f7bfdb240110c139f0e16cc Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-05-16services: dnsmasq: Add pid-file, conf-file and conf-dir configuration fields.Alexey Abramov
* gnu/services/dns.scm (<dnsmasq-configuration>) [pid-file]: New field to specify alternate path for dnsmasq PID. [conf-file]: New field to specify one or more configuration files. [conf-dir]: New field to read configuration files from a directory. [extra-options]: Move to the end of the definition as a last resort option. (dnsmasq-shepherd-service): Use new fields instead of hardcoded values. * gnu/services/dns.scm: Export all record accessors. * doc/guix.texi: Document new configuration options. Change-Id: Iaec361e7d8bfd60af04f023f57d422b55b0c1eea Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-05-16services: dnsmasq: Add shepherd-provision and shepherd-requirement fields.Alexey Abramov
* gnu/services/dns.scm (<dnsmasq-configuration>)[provision]: Mark filed as deprecated with a warning. Set default to #f. [shepherd-provision]: Add new field for consistency with other services. [shepherd-requirement]: Add new field. (dnsmasq-shepherd-service): Use them. * doc/guix.texi: Document these changes. * doc/guix-cookbook.texi (Custom NAT-based network for libvirt): Update example to use 'shepherd-provision' instead of 'provision'. Change-Id: Icad4d9c4be5bf58368e8c416f1fdde1f9065557d Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-05-15services: oci-container-configuration: Move to (gnu services containers).Giacomo Leidi
This patch moves the oci-container-configuration and related configuration records to (gnu services containers). Public symbols are still exported for backwards compatibility but since the oci-container-service-type will be deprecated in favor of the more general oci-service-type, everything is moved outside of the docker related module. * gnu/services/docker.scm: Move everything related to oci-container-configuration to... * gnu/services/containers.scm: ...here.scm. Change-Id: Iae599dd5cc7442eb632f0c1b3b12f6b928397ae7 Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-05-15services: rootless-podman: Use login shell.Giacomo Leidi
This commit allows for having PATH set when changing the owner of /sys/fs/group. * gnu/services/containers.scm (crgroups-fs-owner): Use login shell. Change-Id: I9510c637a5332325e05ca5ebc9dfd4de32685c50 Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-05-14services: udev: Also create subsystem nodes at boot.Maxim Cournoyer
This is a more correct fix to CDROM/DVDROM events/auto-mounting than was made in the now-reverted commit 670724edcfe7d ("gnu: eudev: Fix optical discs detection/auto-mounting.") This changes causes the 60-block.rules udev rules file shipped with eudev to correctly set the default polling period to 2000 ms on block devices, which is necessary for kernel events to be fired for CDROM drives for example. To validate it is set: # cat /sys/module/block/parameters/events_dfl_poll_msecs 2000 Before, it would return 0. * gnu/services/base.scm (udev-shepherd-service): <#:start>: Add a 'udevadm trigger --change=add --type=subsystems' invocation, so that it also creates subsystem nodes, as done in Void Linux or LinuxFromScratch init scripts for example. * gnu/tests/base.scm (run-basic-test): Add test. Fixes: <https://issues.guix.gnu.org/35584> Change-Id: Idc0eb5640163b27e41b72cc0c1885412a60805c1
2025-05-12system: Only add guix artwork on a desktop system.Efraim Flashner
* gnu/system.scm (%base-packages): Remove %base-packages-artwork. * gnu/services/desktop.scm (desktop-services-for-system): Add guix-artwork profile service. Change-Id: I4071e8137609dbb7dfdba174d1da2d8811421a00 Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-05-11services: guix-build-coordinator: Allow passing extra arguments.Christopher Baines
To avoid needing to support all possible configuration options in the Guix service. * gnu/services/guix.scm (guix-build-coordinator-configuration-extra-build-coordinator-arguments): New procedure. * gnu/services/guix.scm (make-guix-build-coordinator-start-script): Support extra-build-coordinator-arguments and include them when calling make-build-coordinator. (guix-build-coordinator-shepherd-services): Pass extra-build-coordinator-arguments through when calling make-guix-build-coordinator-start-script. Change-Id: I6531275bf2922f762b3422746c6207b834656b5c
2025-05-09services: Add mosquitto-service-type.Evgeny Pisemsky
* gnu/services/messaging.scm (<mosquitto-configuration>): New record type. (mosquitto-accounts): New procedure. (mosquitto-shepherd-service): New procedure. (mosquitto-service-type): New variable. * doc/guix.texi (Messaging Services): Document it. Change-Id: I3500c5b6b69084c1f4a6da66ea45bfd42c871f3f Signed-off-by: Danny Milosavljevic <dannym@friendly-machines.com>
2025-05-05services: guix: Fix case when /etc/guix/acl is a dangling symlink.Rutherther
One possible solution for an issue when /etc/guix/acl file exists, but points to a non-existent location. This can for example happen if one is reinitializing the system, and remove only /gnu/store and /var/guix, keep the rest okay. This is a major advantage of guix as compared to other distros that usually need you to reinitialize the whole root partition. But this will leave the user with acl file pointing to non-existent location. The file-exists? procedure will return #f for broken symbolic links. I think that another reason one would get this issue is, if one was booted in a live iso, chrooted, fixing their system. They would switch generations to one with different acl file, delete other generations gc rooting the original acl file and then gc. One could do this approach for example when recovering from file corruptions in the store, to get rid of the unsubstitutable paths that can't be repaired with guix gc --verify. This fixes the issue by looking for type of a file through lstat, instead of relying on file-exists?. If the symlink is a broken symlink, it is removed. Other than that the old behavior is kept: - If regular file, back it up - If symlink pointing to the store, remove it - If symlink not pointing to the store, back it up * gnu/services/base.scm (substitute-key-authorization): Check if acl file is a possibly-dangling symbolic link. Change-Id: I2f8170606b2f4afeea48f04acfd738b04cafc7cf Signed-off-by: Ludovic Courtès <ludo@gnu.org> Modified-by: Ludovic Courtès <ludo@gnu.org>
2025-05-04Partial revert "services: plasma: Fix kded not being started."Sughosha
This partially reverts cea6eedfcea2defa526bc58d4fb2085cc8c0cb36. * gnu/services/desktop.scm (plasma-dbus-service): Remove kded. Change-Id: Iaf441f6c779170a24ab2bec8908da81b182e32b1 Signed-off-by: Zheng Junjie <z572@z572.online>
2025-05-04services: plasma: Fix kded not being started.Sergio Pastor Pérez
`kded' is a daemon responsible for many features of the Plasma desktop, it provides media keys handling, a system tray, 'Background Services' control through 'kcmshell6 kcm_kded'... * gnu/packages/kde-plasma.scm (plasma): Add `kded' to propagated inputs. * gnu/services/desktop.scm (plasma-dbus-service): Add `kded' to the list of services passed to `dbus-configuration'. Change-Id: Ifffdaecdb28a6369727ab8d118a775d73ee342e9 Signed-off-by: Zheng Junjie <z572@z572.online>
2025-05-02services: kwallet: New service.Sergio Pastor Pérez
Change-Id: I1330ce5e1648a8ddf6ddd507255a73335d6baa51 Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-05-02services: postgresql-role: Add support for password files.Giacomo Leidi
This commit adds a password-file to the postgresql-role field. It allows users to provision Postgres roles with a set password. * gnu/services/databases.scm (postgresql-role): Add password-file field. (postgresql-role-configuration): Add requirement field. (postgresql-create-roles): Add support for setting passwords from a file without leaking passwords to the command line. (postgresql-role-shepherd-service): Add support for customizable requirements. (postgresql-role-service-type): Pass on postgresql-role-configuration fields values by default, this way user configured fields are not lost. * gnu/tests/databases.scm: Test it. * doc/guix.texi: Document the new field and fix the extension point example. Change-Id: I3aabaa10b0c5e826c5aa874e5649e25a3508a585 Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-05-02services: Normalize and improve libvirt-configuration documentation.Maxim Cournoyer
* gnu/services/virtualization.scm (libvirt-configuration): Fix typos and punctuation, and decorate with more Texinfo adornments. Remove extraneous text. Convert enumerations to sentences re-generating the Texinfo documentation with configuration->documentation doesn't require fixing these by hand after (the text is re-flowed, breaking enumerations). Mention the use of 'log-filters' is preferable to 'log-level', as commented in the defaut libvirt.conf template. * doc/guix.texi (Virtualization Services): Re-generate. Change-Id: Icc2abe21a787b4bb6ac3b35a95f6aaaf3bbda9aa
2025-04-30services/udev: Allow configuring udev to run in debug mode.Maxim Cournoyer
This re-introduces commit dd64f441d3dcff9165927b821da2b69b1fc6a24f, which had been reverted due to previously causing a system hang when debug? was enabled, a problem that appears to have been resolved within Shepherd. * gnu/services/base.scm (<udev-configuration>): <debug?>: New field. * gnu/services/base.scm (udev-shepherd-service): Use it to add '--debug' to the command line, if applicable. * doc/guix.texi (Base Services): Document it. Change-Id: I88243fb4f321ff0876dd227e3c2b22082d37cfcf
2025-04-26services: elogind: Split sleep.conf and port to define-configuration.Maxim Cournoyer
* gnu/services/desktop.scm (pascal-case): New procedure. (<elogind-configuration>): Rewrite in terms of define-configuration. (elogind-configuration-file): Delete. (maybe-list-of-suspend-states?, maybe-list-of-suspend-modes?) maybe-list-of-user-names?, maybe-boolean?maybe-package?) (maybe-action?, maybe-percent?, maybe-list-of-strings?) (maybe-list-of-hibernation-modes?, maybe-non-negative-integer?) (non-negative-integer?, percent?, char-set:user-name, user-name?) (list-of-user-names?, %elogind-actions, action?, %linux-suspend-states) (string->symbol/maybe, suspend-state?, list-of-suspend-states?) (%linux-suspend-modes, suspend-mode?, list-of-suspend-modes?) (%linux-hibernation-modes, hibernation-mode?, list-of-hibernation-modes?) (elogind-deprecated-empty-serializer, list-of-file-likes?) (elogind-serialize-boolean, elogind-base-serializer, elogind-serialize-action) (elogind-serialize-non-negative-integer, elogind-serialize-percent) (elogind-list-serializer, elogind-serialize-list-of-strings) (elogind-serialize-list-of-user-names, elogind-serialize-list-of-suspend-states) (elogind-serialize-list-of-suspend-modes) (elogind-serialize-list-of-hibernation-modes) (%elogind-configuration-sleep-fields, logind.conf, sleep.conf): New procedures. (elogind-etc-directory): Create the main configuration files there too. (elogind-dbus-service): Adjust for package accessor name change. (pam-extension-procedure, elogind-shepherd-service) (elogind-service-type): Likewise. (shepherd-configuration-action*): New procedure. * doc/guix.texi (Desktop Services): Fully document configuration options. Fixes: https://issues.guix.gnu.org/77806 Change-Id: I8767891871d83e58d64995ec986a7d01689fa6d8 Reported-by: Ludovic Courtès <ludo@gnu.org>
2025-04-23services: postgresql-service-type: Allow allowing to log into the user.Tomas Volf
It is often useful to be able to use the `postgres' user for management tasks, so this commit allows setting that. The default behavior is not changed. I have also added missing exports and sorted them by alphabet. * gnu/services/databases.scm (%default-home-directory): New variable. (<postgresql-configuration>): Add home-directory, allow-login? fields. (create-postgresql-account): Use them. * doc/guix.texi (Database Services): Document it. Change-Id: I2212e5082ff4e87c49a5a8a4711bf929dd08626a Signed-off-by: Ludovic Courtès <ludo@gnu.org> Modified-by: Ludovic Courtès <ludo@gnu.org>
2025-04-22services: pounce: New service.Maxim Cournoyer
* gnu/services/messaging.scm (pounce-serialize-boolean): (pounce-serialize-string, pounce-serialize-list-of-strings) (pounce-serialize-pair, power-of-two?) (pounce-serialize-number, pounce-serialize-power-of-two) (pounce-serialize-port, pounce-serialize-maybe-boolean) (pounce-serialize-maybe-number, pounce-serialize-maybe-pair) (pounce-serialize-maybe-port, pounce-serialize-maybe-port (pounce-maybe-power-of-two, pounce-serialize-maybe-string) (pounce-serialize-maybe-list-of-strings): New procedures. (pounce-configuration): New configuration. (pounce-activation): New procedure. (serialize-pounce-configuration, pounce-wrapper): Likewise. (pounce-service-type): New service type. * gnu/tests/messaging.scm (ngircd-tls-cert-service-type): New variable. (%pounce-os): Likewise. (run-pounce-test): New procedure. (%test-pounce): New test. * doc/guix.texi (Messaging Services): Document it. Change-Id: I4bbd2bc4821072a93c2c4017b86df329c4b240cb Reviewed-by: Ludovic Courtès <ludo@gnu.org>
2025-04-22services: herd: Use a smarter default for %shepherd-socket-file.Maxim Cournoyer
This makes it possible to use it for the privileged (root) user as well as an unprivileged user. * gnu/services/herd.scm (%shepherd-socket-file): Use /run/user/$uid/shepherd/socket when using an unprivileged user. Change-Id: I62cf358ffc233aba61cc64235c4b67c4fc944d2e
2025-04-20services: guix: Allow ‘guix-daemon’ to run without root privileges.Ludovic Courtès
* gnu/services/base.scm (run-with-writable-store) (guix-ownership-change-program): New procedures. (<guix-configuration>)[privileged?]: New field. (guix-shepherd-service): Rename to… (guix-shepherd-services): … this. Add the ‘guix-ownership’ service. Change ‘guix-daemon’ service to depend on it; when unprivileged, prefix ‘daemon-command’ by ‘run-with-writable-store’ and omit ‘--build-users-group’; adjust socket activation endpoints. (guix-accounts): When unprivileged, create the “guix-daemon” user and group in addition to the others. (guix-service-type)[extensions]: Adjust to name change. * gnu/tests/base.scm (run-guix-daemon-test): Add ‘name’ parameter. (%test-guix-daemon): Adjust accordingly. (%test-guix-daemon-unprivileged): New test. * doc/guix.texi (Base Services): Document ‘privileged?’. (Migrating to the Unprivileged Daemon): Explain that this is automatic on Guix System. Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Change-Id: I28a9a22e617416c551dccb24e43a253b544ba163
2025-04-19services: ngircd: Require networking.Maxim Cournoyer
Otherwise the service could fail starting if the networking interface takes some time to be created during the boot (one such example are WireGuard interfaces). * gnu/services/messaging.scm (ngircd-configuration) [shepherd-requirement]: Add networking. * doc/guix.texi (Messaging Services): Update. Change-Id: I387ae5780a35cad5b74d9883ac53f13de1a08c78
2025-04-19services: ngircd: Streamline wrapper definition.Maxim Cournoyer
* gnu/services/messaging.scm (ngircd-shepherd-service): Streamline wrapper definition. Change-Id: Ie48a02d141ab329a5b684897fb2562b4e6745452
2025-04-14gnu: speakersafetyd: Add log file.Roman Scherer
* gnu/services/sound.scm (speakersafetyd-configuration) [log-file]: New field. (speakersafetyd): Use it via #:log-file. Change-Id: I870bc7bfd69249da3a9c981f627e751395386bd2
2025-04-14gnu: speakersafetyd: Run as unprivileged user.Roman Scherer
* gnu/services/sound.scm (speakersafetyd): Run as unprivileged user. (speakersafetyd-accounts): New procedure. (speakersafetyd-activation): Likewise. (speakersafetyd-shepherd-service): Specify the #:group, #:user and #:supplementary-groups arguments. (speakersafetyd-service-type): Extend activation-service-type. Change-Id: I870bc7bfd69249da3a9c981f627e751395386bd2