Allow users to specify additional configuration files for NetworkManager.
These files will be added to /etc/NetworkManager/conf.d (NetworkManager's
default configuration directory location).
* gnu/services/networking.scm (<network-manager-configuration>)
[extra-configuration-files]: New field.
(network-manager-activation): Honor the new field.
* doc/guix.texi (Networking Setup): Document the new field.
Change-Id: I07479958e4d0aa318328c666a9630b779230b300
Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
* doc/guix.texi (On Trusting Binaries): Document that combining --check and
--no-grafts with 'guix build' forces the rebuild of a package.
Change-Id: I4eb6be04243a52f70d0fc298f76e62f10e3d376e
Co-authored-by: Leo Famulari <leo@famulari.name>
Signed-off-by: Leo Famulari <leo@famulari.name>
This was erroneously renamed during the review of commit
ee0d1b144c ("services: greetd: Improve greeter configurations."). The field
*adds* to the intrinsic requirements of the service, so the 'extra-' prefixes
communicates this better.
* gnu/services/base.scm (<greetd-terminal-configuration>): Rename
shepherd-requirement field to extra-shepherd-requirement.
* doc/guix.texi (Base Services): Adjust doc accordingly.
Change-Id: I4b970bdd63864ed86d61fde9cad2487a293417ce
This improvement focuses on providing common user session scripts
for use by multiple greeters. Now user session entry point is
factored out into '<greetd-user-session>', which can be reused
as is with different greeters. By default it uses 'bash' as
first user process. Then user normally starts additional programs
with '.profile' or '.bashrc'. Using 'command', 'command-args' and
'extra-env' one can specify something else, which could be
'dbus-session' wrapped process, some desktop environment or else.
While the above is possible, one is still encouraged to use
'.bashrc', '.profile' or similar.
It also fixes incorrect use of 'XDG_RUNTIME_DIR' for 'wlgreet'.
'wlgreet' requires a compositor to run. We provide common sway based
greeter script, which can be shared by other graphical greeters.
* gnu/services/base.scm (<greetd-user-session>): Common user session
factored out, for shared use by multiple greeters.
(<greetd-agreety-session>): Switch to common user session.
(<greetd-wlgreet-configuration>): Refactor 'wlgreet' configuration.
(<greetd-wlgreet-sway-session>): Switch to common user session.
(<greetd-terminal-configuration>): Add 'extra-shepherd-requirement'
for establishing configurable Shepherd service dependency.
* gnu/tests/desktop.scm (%minimal-services): Reflect configuration
changes.
* doc/guix.texi (Base Services): Document refactoring changes.
Change-Id: I9d45a592b355eb9c438be5b1d4d15555ce4956fa
Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This is a followup to commit a1fa230147.
Perhaps it was caused by a conflict resolution error during a rebase or
merge?
* gnu/services/desktop.scm: Stop exporting the non-existent variable
xfce-desktop-service.
* doc/guix.texi (Desktop Services): Adjust accordingly.
Change-Id: I7ca24331365fa395fcee47de7ad0239e08aafbe3
This patch implements restic backup with Shepherd services. It is
supposed not to break any existing setup.
* gnu/services/backup.scm (restic-backup-job): Add Shepherd
configuration options;
(restic-backup-job->mcron-job): Replace with...;
(restic-job-log-file): New procedure;
(restic-backup-job->shepherd-service): New procedure;
(restic-backup-activation): New procedure;
(restic-backup-service-type): Replace mcron with Shepherd extension and add
activation extension hook.
* doc/guix.texi: Document it.
Change-Id: I66de3b6a1cb6177f9e4ee0c2acf3013ecbcdd338
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
At the same time the reference text is adjusted. I found it confusing for
link to the `Top' to be labeled `Introduction'. So let us just link to the
`Introduction', it is probably what the author intended.
* doc/htmlxref.cnf (stow): Add both mono and node versions.
* doc/guix.texi (Essential Home Services): Link to `Introduction' node of GNU
Stow's manual.
Change-Id: Ib82d2eecfb655694a0af73e1aec9fcd68c3994e3
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
The write-file-hooks is deprecated since Emacs 22.1, so switch to the
suggested replacement.
* doc/htmlxref.cnf (add-hook): Use 'write-file-functions.
Change-Id: Ia652ace9a5b5ffb971999372348fa4133f909a4e
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
* gnu/home.scm (%base-home-services): New variable.
(<home-environment>)[services]: Change default to ‘%base-home-services’.
* guix/scripts/home/import.scm (manifest+configuration-files->code): Use
‘%base-home-services’ by default.
* tests/home-import.scm (match-home-environment-no-services)
(match-home-environment-transformations)
(match-home-environment-no-services-nor-packages)
(match-home-environment-bash-service)
(match-home-environment-bash-service-with-alias): Adjust accordingly.
* doc/he-config-bare-bones.scm: Use ‘%base-home-services’.
* doc/guix.texi (Declaring the Home Environment): Add index entry for
‘%base-home-services’.
Change-Id: Id95ede62b97a976aad138bfc4b63fc0bdf37c7de
* gnu/home/services/admin.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* doc/guix.texi (Shepherd Home Service): Document it.
Change-Id: I37ac171147c236b05d6d3b226e9072ab7524dfe9
This is a semi-incompatible change: gexps previously provided in the
‘schedule’ field will no longer work.
* gnu/services/admin.scm (unattended-upgrade-mcron-jobs): Rename to…
(unattended-upgrade-shepherd-services): … this. Return a list of one
Shepherd service. Remove custom logging and time limitation facilities
from ‘code’.
(unattended-upgrade-service-type): Extend ‘shepherd-root-service-type’
instead of ‘mcron-service-type’.
(<unattended-upgrade-configuration>)[services-to-restart]: Change
default.
* doc/guix.texi (Unattended Upgrades): Adjust ‘schedule’ and
‘services-to-restart’ documentation.
Change-Id: I1b239c5946e71cf9e2af9b24fe4b01366b57fb7a
This is a semi-incompatible change: gexps previously provided in the
‘schedule’ field will no longer work.
* gnu/services/admin.scm (log-cleanup-mcron-jobs): Remove.
(log-cleanup-shepherd-services): New procedure.
(log-cleanup-service-type): Extend SHEPHERD-ROOT-SERVICE-TYPE instead of
MCRON-SERVICE-TYPE.
* doc/guix.texi (Log Rotation): Adjust ‘schedule’ documentation
accordingly.
Change-Id: I2a3beb7dffbc9992b714a29423674db9c7dc6cab
* gnu/services/admin.scm (%default-log-rotation-calendar-event): New
variable.
(<log-rotation-configuration>): New record type.
(log-rotation-shepherd-services): New procedure.
(log-rotation-service-type): New variable.
Change-Id: I4400035f3b6065ec147ac932110b690120d739c2
This allows using Unbound as a local DNSSEC-enabled resolver. This
commit also allows configuration of the Unbound DNS resolver via a
Scheme API. The API currently provides very common options and
includes an escape hatch to enable less common configurations.
* gnu/service/dns.scm (unbound-serialize-field): New procedure.
(unbound-serialize-alist, unbound-serialize-section)
(unbound-serialize-string, unbound-serialize-boolean)
(unbound-serialize-list-of-strings): New procedures.
(unbound-zone): New record type.
(unbound-serialize-unbound-zone)
(unbound-serialize-list-of-unbound-zone): New procedures.
(unbound-remote): New record type.
(unbound-serialize-unbound-remote): New procedure.
(unbound-server): New record type.
(unbound-serialize-unbound-server): New procedure.
(unbound-configuration): New record type.
(unbound-config-file, unbound-shepherd-service): New procedures.
(unbound-account-service): New variable.
(unbound-service-type): New services.
* gnu/tests/dns.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* doc/guix.texi (DNS Services): Document it.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Change-Id: I4c9646c9e17d4882e596d33ff8f738e1877fa1ae
* doc/guix-cookbook.texi (Build system arguments)
Remove recommendation on phase return value.
Ensure code examples can run and are up-to-date.
Change-Id: I143babf79983751578d6d4e20b20195ea000656d
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Sometimes you would want to skip on actually installing the podman package in
order to save disk space and bandwidth. Even without installing it globally,
podman can still be fetched via guix shell when required.
* gnu/services/containers.scm (package-or-#f?): New procedure.
(rootless-podman-configuration)<podman>: Change type to package-or-#f.
(rootless-podman-service-profile): Produce empty list if not podman package.
* doc/guix.texi (Miscellaneous Services): Document the change.
Change-Id: If533d913ea190558ce7e206d98ada4d805270594
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Allow users to have multiple dnsmasq instances by specifying different
`provision` values for the corresponding Shepherd services, similar to
what is done with `static-networking-service-type`.
* gnu/services/dns.scm (<dnsmasq-configuration>)[provision]: new option.
(dnsmasq-shepherd-service): Use supplied provision value.
* doc/guix.texi (DNS Services)[dnsmasq-configuration]: Document it.
Change-Id: I78c7f015cb1db239a600bc5373b2fd80e8b9b9f4
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Particularly to cover the case where things might need to happen with the
build farms if changes are reverted.
* doc/contributing.texi (Commit Access): Add guidance on reverting commits.
Change-Id: Iba320b76b0927b693c75054b5473a50bdd77c7ee
Allow the user to specify scripts to be added into Elogind's hook
directories. These scripts will be run before/after
suspend/hibernate/poweroff/reboot.
Also allow setting the associated config options.
* gnu/services/desktop.scm (elogind-configuration): add
`system-sleep-hook-files`, `system-shutdown-hook-files`,
and 4 new config options.
(elogind-configuration-file): Add entries for the new config options
under the `[Sleep]` section.
(elogind-etc-directory): New procedure.
(elogind-service-type): Extend `etc-service-type` using `/etc/elogind`.
* doc/guix.texi (Desktop Services): Document the new options.
Change-Id: I7e22cbaa9d031049b9d085ba0ce4cc8a8b4f16ff
Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
The default value of #f for the ‘file-system’ field is invalid and would
trigger a type error when running ‘guix system search’.
* gnu/services/admin.scm (<resize-file-system-configuration>)[file-system]:
Remove default value.
(resize-file-system-service-type)[default-value]: Remove.
* doc/guix.texi (Miscellaneous Services): Adjust accordingly.
Change-Id: If73f8923f49d38827059ba98bd53636a7f3917fe
This allows rebooting straight into the new system with ‘reboot -k’.
* guix/scripts/system/reconfigure.scm (kexec-loading-program)
(load-system-for-kexec): New procedures.
* gnu/tests/reconfigure.scm (run-kexec-test): New procedure.
(%test-upgrade-kexec): New variable.
* guix/scripts/system.scm (perform-action): Add #:load-for-kexec?.
Call ‘load-system-for-kexec’.
(show-help, %options): Add ‘--no-kexec’.
(%default-options): Add ‘load-for-kexec?’.
(process-action): Honor it and pass it to ‘perform-action’.
* gnu/machine/ssh.scm (deploy-managed-host): Add call to
‘load-system-for-kexec’.
* doc/guix.texi (Invoking guix system): Document it.
Change-Id: I86d11f1c348e4359bc9e73c86e5aebff60fe875c