* guix/scripts/system.scm (service-upgrade): Move to...
* gnu/services/shepherd.scm (shepherd-service-upgrade): ... here.
* tests/system.scm ("service-upgrade: nothing to do", "service-upgrade:
one unchanged, one upgraded, one new", "service-upgrade: service
depended on is not unloaded", "service-upgrade: obsolete services that
depend on each other"): Move to...
* tests/services.scm: ... here. Adjust to 'service-upgrade' rename.
* gnu/services/shepherd.scm (shepherd-service-lookup-procedure): New
procedure.
(shepherd-service-back-edges)[provision->service]: Use it.
* tests/services.scm ("shepherd-service-lookup-procedure"): New test.
* gnu/services/herd.scm (<live-service>): New record type.
(current-services): Change to return a single value: #f or a list of
<live-service>.
* guix/scripts/system.scm (call-with-service-upgrade-info): Adjust
accordingly.
* gnu/tests/base.scm (run-basic-test)["shepherd services"]: Adjust
accordingly.
Previously we would create one 'file-system-service-type' instead per
file system. Now, we create only one instance for all the file
systems.
* gnu/services/base.scm (fstab-service-type)[compose]: Change to
CONCATENATE.
(file-system-shepherd-service): Change to return either one
<shepherd-service> or #f.
(file-system-service-type): Pluralize 'name'. Adjust
SHEPHERD-ROOT-SERVICE-TYPE extension to above changes. Add 'compose'
and 'extend'.
(file-system-service): Remove.
* gnu/system.scm (other-file-system-services): Rename to...
(non-boot-file-system-service): ... this. Change to return a single
FILE-SYSTEM-SERVICE-TYPE instance.
(essential-services): Adjust accordingly.
This allows users to use 'modify-services' and similar constructs for
all these service types.
* gnu/services/avahi.scm: export avahi-configuration.
* gnu/services/base.scm: export gpm-configuration and
rngd-configuration.
* gnu/services/databases.scm: export *-service-type and *-configuration.
* gnu/services/dbus.scm: export dbus-configuration.
* gnu/services/dict.scm: export dicod-service-type.
* gnu/services/lirc.scm: export lirc-configuration and
lirc-service-type.
* gnu/services/mail.scm: export dovecot-service-type.
* gnu/services/web.scm: export nginx-configuration and
nginx-service-type.
* gnu/services/xorg.scm: export screen-locker and screen-locker?.
* gnu/services/ssh.scm: export lsh-configuration and lsh-service-type.
* gnu/services/desktop.scm: export *-service, *-service-type
and *-configuration.
* gnu/services/networking.scm: export *-configuration
and *-service-type.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* gnu/system/pam.scm (<pam-limits-entry>): New record type.
(pam-limits-entry, pam-limits-entry->string): New procedures.
* gnu/services/base.scm (pam-limits-service-type): New variable.
(pam-limits-service): New procedure.
* doc/guix.texi (Base Services): Document it.
* gnu/services/ssh.scm (<dropbear-configuration>): New record type.
(dropbear-activation, dropbear-shepherd-service, dropbear-service): New
procedures.
(dropbear-service-type): New variable.
* doc/guix.texi (Networking Services): Document it.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* gnu/services/shepherd.scm (<shepherd-service>)[imported-modules]:
Remove.
(%default-imported-modules): Make private.
(shepherd-service-file): Use 'with-imported-modules'.
(shepherd-configuration-file): Remove 'modules' and the calls to
'imported-modules' and 'compiled-modules'. Use
'with-imported-modules' instead.
* doc/guix.texi (Shepherd Services): Adjust accordingly.
* gnu/services/base.scm (file-system-shepherd-service): Use
'with-imported-modules'. Remove 'imported-modules' field.
* gnu/system/mapped-devices.scm (device-mapping-service-type): Remove
'imported-modules'.
(open-luks-device): Use 'with-imported-modules'.
* gnu/tests.scm (marionette-shepherd-service): Remove 'imported-modules'
field and use 'with-imported-modules'.
* gnu/services/base.scm (<rngd-configuration>): New record type.
(rngd-service-type): New variable.
(rngd-service): New procedure.
* doc/guix.texi (Base Services): Document it.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* gnu/services/avahi.scm (<avahi-configuration>)[debug?]: New field.
(avahi-shepherd-service): Honor it.
(avahi-service): Add #:debug? and honor it.
* doc/guix.texi (Networking Services): Adjust accordingly.
This makes sure the service's 'start' finishes when avahi-daemon is
ready to process requests.
* gnu/services/avahi.scm (avahi-shepherd-service): Use --daemonize
instead of --syslog and add #:pid-file.
* gnu/services/mcron.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/tests/base.scm (%mcron-os, %test-mcron): New variables.
(run-mcron-test): New procedure.
* doc/guix.texi (Scheduled Job Execution): New node.
* gnu/services/desktop.scm (bluetooth-shepherd-service)
(bluetooth-service): New Prodecures.
(bluetooth-service-type): New variable.
* doc/guix.text (Desktop Services): Document it.
This makes 'dicod' listen on 'localhost' by default, whereas it was
previously listening on all the interfaces, which is not a good default
security-wise.
* gnu/services/dict.scm (<dicod-configuration>)[interfaces]: New field.
(dicod-configuration-file)[database->text]: New procedure, with code
formerly in 'dicod-configuration->text'.
[dicod-configuration->text]: Rename to...
[configuration->text]: ... this. Honor 'interfaces'.
* doc/guix.texi (Various Services): Document 'interfaces'.
* gnu/services/database.scm (<mysql-configuration>): New record type.
(%mysql-accounts, mysql-service-type): New variables.
(mysql-configuration-file, %mysql-activation, mysql-shepherd-services)
(mysql-services): New procedures.
* doc/guix.texi (Database Services): Document it.
* gnu/services/base.scm (urandom-seed-shepherd-service): Refresh the random
seed unconditionally at boot. Ensure directory structure for %random-seed-file
exists when shutting down.
(%urandom-seed-activation): Remove variable.
(urandom-seed-service-type): Remove deleted variable from list of extensions.
* gnu/services/networking.scm (connman-service): New procedure.
(connman-service-type, %connman-activation): New variables.
(connman-shepherd-service): New procedure.
* doc/guix.texi (Networking Services): Document it.
This makes (gnu services herd) independent of (guix ui).
* gnu/services/herd.scm (&shepherd-error, &service-not-found-error)
(&action-not-found-error, &action-exception-error)
(&unknown-shepherd-error): New error condition types.
(report-action-error): Remove.
(raise-shepherd-error): New procedure.
(display-message): Do not use 'info' and '_'.
(invoke-action): Use 'raise-shepherd-error' instead of
'report-action-error'. Do not use 'warning'.
(current-services): Do not use 'warning'.
* guix/scripts/system.scm (with-shepherd-error-handling): New macro.
(report-shepherd-error, call-with-service-upgrade-info): New
procedures.
(upgrade-shepherd-services): Use it.
* gnu/services/base.scm (console-keymap-service-type): Type procedure
takes a list of files instead of a single file.
(console-keymap-service): Take 'files' as rest arguments.
* doc/guix.texi (Base Services): Improve documentation of
'console-keymap-service'.
Before that, a session command with several items, such as
'gnome-session --disable-acceleration-check', would trigger the fallback
session.
* gnu/services/xorg.scm (xinitrc)[builder]: Accept command lines with
more than one arguments.
* gnu/services/desktop.scm (package-direct-input-selector): New
function.
(<gnome-desktop-configuration>, gnome-desktop-service-type)
(<xfce-desktop-configuration>, xfce-desktop-service-type): New
variables.
(gnome-desktop-service, xfce-desktop-service): New public variables.
* doc/guix.texi (Desktop Services): Document new variables.
Previously elogind was explicitly spawned by the Shepherd. Now it is
activated by dbus-daemon on demand.
* gnu/packages/freedesktop.scm (elogind)[arguments]: Add
'fix-service-file' phase.
* gnu/services/desktop.scm (elogind-shepherd-service): Remove.
(elogind-dbus-service): New procedure.
(elogind-service-type): Do not extend SHEPHERD-ROOT-SERVICE-TYPE. Use
'elogind-dbus-service' for DBUS-ROOT-SERVICE-TYPE.
* gnu/services/xorg.scm (%default-xorg-modules): New public variable.
(xorg-configuration-directory): New function.
(xorg-start-command): Add #:modules keyword argument, defaulting to
%default-xorg-modules. Build an xorg.conf.d directory from those
modules, and pass it to X via the -configdir parameter.
* gnu/services/desktop.scm (polkit-etc-files): Add the polkit package
itself to the list of packages to scan for .policy files. This add
support for pkexec.
Fixes <http://bugs.gnu.org/22548>.
Reported by Albin <albin@fripost.org>, Mark H Weaver, and Alex Kost.
* gnu/services/shepherd.scm (shepherd-configuration-file)[config]: Guard
against 'service-error?'.
Before that 'open-connection' would return #f, and thus
'current-services' would return a single #f value when its continuation
expects two.
Reported by calher on #guix.
* gnu/services/herd.scm (open-connection): Rethrow system-error
exceptions.
(with-shepherd): Expect CONNECTION to always be true; remove useless
'dynamic-wind'.
* guix/scripts/system.scm (warn-on-system-error): New macro.
(upgrade-shepherd-services): Wrap body in 'warn-on-system-error'.
Partly fixes <http://bugs.gnu.org/22039>.
* gnu/services/herd.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* gnu/services/shepherd.scm (shepherd-service-canonical-name): New
procedure.
(shepherd-service-file): Export.
* guix/scripts/system.scm (upgrade-shepherd-services): New procedure.
(switch-to-system): Use it.
* guix/ui.scm (info): New procedure.
* doc/guix.texi (Invoking guix system): Mention system services.
This fixes a bug whereby /dev/disk/by-{label,id} would be missing on
GuixSD (/dev/disk/by-id would still contain device-mapped partitions
though.)
Reported by Mark H Weaver <mhw@netris.org>.
* gnu/packages/linux.scm (eudev-with-blkid): New variable.
* gnu/services/base.scm (udev-service): #:udev defaults to
EUDEV-WITH-BLKID.
* gnu/system.scm (%base-packages): Replace EUDEV with EUDEV-WITH-BLKID.
* gnu/services/shepherd.scm (dmd-configuration-file): Rename to...
(shepherd-configuration-file): ... this. Use "shepherd.conf" name.
(dmd-boot-gexp): Use it.
* gnu/services/dmd.scm (dmd-boot-gexp): Use binary from 'shepherd' package.
(dmd-root-service-type): Use 'shepherd' package.
(%default-modules): Use (shepherd service) module.
* gnu/services/base.scm (%root-file-system-dmd-service): Use
'stop-logging' procedure to close shepherd log.
Fixes <http://bugs.gnu.org/22176>.
Reported by Florian Paul Schmidt <mista.tapas@gmx.net>.
* gnu/system/file-systems.scm (<file-system>)[mount?]: New field.
(file-system->spec): Adjust accordingly.
* gnu/services/base.scm (file-system-dmd-service): Return the empty list
when FILE-SYSTEM has 'mount?' set to false.
(user-processes-service): Select the subset of FILE-SYSTEMS that matches
'file-system-mount?'.
* doc/guix.texi (File Systems): Document it.
* gnu/services/base.scm (session-environment-service): New procedure.
(session-environment-service-type): New variable.
(environment-variables->environment-file): New procedure.
* gnu/services/networking.scm (<tor-configuration>, <hidden-service>):
New record types.
(tor-configuration->torrc): New procedure.
(tor-dmd-service): Use it.
(tor-hidden-service-activation): New procedure.
(tor-service-type)[extensions]: Extend ACTIVATION-SERVICE-TYPE.
[compose, extend]: New fields.
(tor-service): Use 'tor-configuration'.
(tor-hidden-service-type): New variable.
(tor-hidden-service): New procedure.
* gnu/services/networking.scm (network-manager-service): New procedure.
(network-manager-service-type, %network-manager-activation): New variables.
(network-manager-dmd-service): New procedure.
'slim-configuration' and 'slim-service-type' are needed if one wishes to
use 'modify-services' on a service list that includes the slim service.
* gnu/services/xorg.scm: Export 'slim-configuration' and
'slim-service-type'.
Fixes <http://bugs.gnu.org/19779>.
Reported by Mark H Weaver <mhw@netris.org>.
* gnu/services/dmd.scm (dmd-configuration-file)[config]: Wrap
'primitive-load' calls in 'call-with-error-handling'.
* gnu/services/dmd.scm (%default-imported-modules, %default-modules):
New variables.
* gnu/services/dmd.scm (<dmd-service>)[modules, imported-modules]: New
field.
* gnu/services/dmd.scm (dmd-service-file-name, dmd-service-file): New
procedures.
(dmd-configuration-file)[modules]: Compute based on the
'imported-modules' field of SERVICES.
(dmd-configuration-file): Remove 'use-modules' form. Use
'dmd-service-file', and call 'primitive-load' on each file.
* doc/guix.texi (dmd Services): Document the new fields.
* gnu/services/dmd.scm (assert-no-duplicates): Rename to...
(assert-valid-graph): ... this.
[provisions]: New variable.
[assert-satisfied-requirements]: New procedure.
Use it.
* tests/guix-system.sh: Add test with unmet dmd requirements.
* gnu/services/base.scm (<gpm-configuration>): New record type.
(gpm-dmd-service): New procedure.
(gpm-service-type): New variable.
(gpm-service): New procedure.
* doc/guix.texi (Base Services): Document it.
* gnu/services/base.scm (<guix-publish-configuration>): New record
type.
(guix-publish-dmd-service): New procedure.
(%guix-publish-accounts, guix-publish-service-type): New variables.
(guix-publish-service): New procedure.
* doc/guix.texi (Invoking guix publish): Add xref to
'guix-publish-service' anchor.
(Base Services): Document 'guix-publish-service'.
* gnu/services/desktop.scm (<udisks-configuration>): New record type.
(udisks-service-type): New variable.
(udisks-service): New procedure.
(%desktop-services): Use it.
* doc/guix.texi (Desktop Services): Document it.
* gnu/packages/polkit.scm (polkit)[source]: Adjust snippet so that rules
and actions are looked for under /etc/polkit-1.
* gnu/services/desktop.scm (<polkit-configuration>): New record type.
(polkit-directory, polkit-etc-files, polkit-setuid-programs): New
procedures.
(polkit-service-type)[compose, extend]: New fields.
(polkit-service): Refine docstring.
(colord-service-type): Extend POLKIT-SERVICE-TYPE.
(elogind-configuration-file): Extend POLKIT-SERVICE-TYPE.
* doc/guix.texi (Desktop Services): Update 'polkit-service'
documentation.
* gnu/services/networking.scm (tor-dmd-service): Take a 'config'
parameter and honor it.
(tor-service): Take a 'config-file' parameter. Pass it in the
service's value.
* doc/guix.texi (Networking Services): Adjust accordingly.
Fixes a regression introduced in commit 0adfe95.
* gnu/system.scm (other-file-system-services)[requirements]: Remove.
[add-dependencies]: New procedure.
Use it.
* gnu/system/file-systems.scm (<file-system>)[dependencies]: Update
comment.
* gnu/services/base.scm (mapped-device->dmd-service-name,
dependency->dmd-service-name): New procedures.
(file-system-service-type): Use it.
* gnu/services.scm (%modify-service, modify-services): New macros.
* gnu/services/base.scm (mingetty-service-type, guix-service-type):
Export.
* emacs/guix-devel.el (guix-devel-keywords): Add 'modify-services'.
Ditto in 'guix-devel-scheme-indent' call.
* doc/guix.texi (Using the Configuration System): Give an example of
'modify-services'.
(Service Reference): Document it.
* gnu/services/base.scm (<guix-configuration>)[substitute-urls]: New
field.
(guix-dmd-service): Honor it.
* doc/guix.texi (Base Services): Document it.
* gnu/services/dbus.scm (dbus-dmd-service): Rewrite using 'match-lambda'
so that the config's dbus package is used. Fixes a regression
introduced in 64643b9.
* gnu/services/dbus.scm (dbus-etc-files): New procedure.
(dbus-dmd-service): Remove the use of '--config-file'.
(dbus-configuration-directory): Adjust accordingly.
(dbus-root-service-type): Add extension of ETC-SERVICE-TYPE.
* gnu/services/base.scm (user-unmount-service-type): Change label and
dmd name to 'user-file-systems'.
(user-processes-service-type)[requirement]: Add 'user-file-systems'.
* gnu/services/avahi.scm (avahi-service): Mention the extension of
nscd.
* doc/guix.texi (Networking Services): Update accordingly.
(Name Service Switch): Remove '%my-base-services' example and
explanation.
This patch rewrites GuixSD services to make them extensible.
* gnu-system.am (GNU_SYSTEM_MODULES): Add gnu/services/dbus.scm.
* gnu/services.scm (<service>): Replace with new record type.
(<service-extension>, <service-type>): New record types.
(write-service-type, compute-boot-script, second-argument): New
procedures.
(%boot-service, boot-service-type): New variables.
(file-union, directory-union, modprobe-wrapper,
activation-service->script, activation-script,
gexps->activation-gexp): New procedures.
(activation-service-type, %activation-service): New variables.
(etc-directory, files->etc-directory, etc-service): New procedures.
(etc-service-type, setuid-program-service, firmware-service-type): New
variables.
(firmware->activation-gexp): New procedure.
(&service-error, &missing-target-service-error,
&ambiguous-target-service-error): New condition types.
(service-back-edges, fold-services): New procedures.
* gnu/services/avahi.scm (<avahi-configuration>): New record type.
(configuration-file): Replace keyword parameters with a single
'config' parameter.
(%avahi-accounts, %avahi-activation, avahi-service-type): New
variables.
(avahi-dmd-service): New procedure.
(avahi-service): Rewrite using 'service' and 'avahi-configuration'.
* gnu/services/base.scm (%root-file-system-dmd-service,
root-file-system-service-type): New variables.
(root-file-system-service): Use them.
(file-system->dmd-service-name): New procedure.
(file-system-service-type): New variable.
(file-system-service): Use it. Replace keyword parameters with a
single 'file-system' object.
(user-unmount-service-type): New variable.
(user-unmount-service): Use it.
(user-processes-service-type): New variable.
(user-processes-service): Use it.
(host-name-service-type): New variable.
(host-name-service): Use it.
(console-keymap-service-type): New variable.
(console-keymap-service): Use it.
(console-font-service-type): New variable.
(console-font-service): Use it.
(mingetty-pam-service, mingetty-dmd-service): New procedures.
(mingetty-service-type): New variable.
(mingetty-service): Use it.
(nscd-dmd-service): New procedure.
(nscd-activation, nscd-service-type): New variables.
(nscd-service): Use the latter.
(syslog-service-type): New variable.
(syslog-service): Use it.
(<guix-configuration>): New record type.
(%default-guix-configuration): New variable.
(guix-dmd-service, guix-accounts, guix-activation): New procedures.
(guix-service-type): New variable.
(guix-service): Replace list of keyword parameters with a single
'config' parameter. Rewrite using 'service'.
(<udev-configuration>): New record type.
(udev-dmd-service): New procedure.
(udev-service-type): New variable.
(udev-service): Use it.
(device-mapping-service-type): New variable.
(device-mapping-service): Use it.
(swap-service-type): New variable.
(swap-service): Use it.
* gnu/services/databases.scm (<postgresql-configuration>): New record
type.
(%postgresql-accounts, postgresql-activation): New variables.
(postgresql-dmd-service): New procedure.
(postgresql-service): Rewrite using 'service' and
'postgresql-configuration'.
* gnu/services/dbus.scm: New file.
* gnu/services/desktop.scm (dbus-configuration-directory, dbus-service):
Remove.
(wrapped-dbus-service): New procedure.
(<upower-configuration>): New record type.
(upower-configuration-file): Replace keyword parameters with single
<upower-configuration> parameter.
(%upower-accounts, %upower-activation): New variables.
(upower-dbus-service, upower-dmd-service): New procedures.
(upower-service-type): New variable.
(upower-service): Rewrite using 'service' and 'upower-configuration'.
(%colord-activation, %colord-accounts): New variables.
(colord-dmd-service): New procedure.
(colord-service-type): New variable.
(colord-service): Rewrite using 'service'.
(<geoclue-configuration>): New record type.
(geoclue-configuration-file): Replace keyword parameters with a single
'config' parameter.
(geoclue-dbus-service, geoclue-dmd-service): New procedures.
(%geoclue-accounts, geoclue-service-type): New variables.
(geoclue-service): Rewrite using 'service' and
'geoclue-configuration'.
(%polkit-accounts, %polkit-pam-services, polkit-service-type): New
variables.
(polkit-dmd-service): New procedure.
(polkit-service): Rewrite using 'service'.
(<elogind-configuration>)[elogind]: New field.
(elogind-dmd-service): New procedure.
(elogind-service-type): New variable.
(elogind-service): Rewrite using 'service'.
(%desktop-services): Remove argument to 'dbus-service'. Remove 'map'
over %BASE-SERVICES.
* gnu/services/dmd.scm (dmd-boot-gexp): New procedure.
(dmd-root-service-type, %dmd-root-service): New variables.
(dmd-service-type): New macro.
(<dmd-service>): New record type.
* gnu/services/lirc.scm (<lirc-configuration>): New record type.
(%lirc-activation): New variable.
(lirc-dmd-service): New procedure.
(lirc-service-type): New variable.
(lirc-service): Rewrite using 'service' and 'lirc-configuration'.
* gnu/services/networking.scm (<static-networking>): New record type.
(static-networking-service-type): New variable.
(static-networking-service): Rewrite using 'service' and
'static-networking'.
(dhcp-client-service-type): New variable.
(dhcp-client-service): Rewrite using 'service'.
(<ntp-configuration>): New record type.
(ntp-dmd-service): New procedure.
(ntp-service-type): New variable.
(ntp-service): New procedure.
(%tor-accounts, tor-service-type): New variable.
(tor-dmd-service): New procedure.
(tor-service): Rewrite using 'service'.
(<bitlbee-configuration>): New record type.
(bitlbee-dmd-service): New procedure.
(%bitlbee-accounts, %bitlbee-activation, bitlbee-service-type): New
variables.
(bitlbee-service): Rewrite using 'service'.
(%wicd-activation): New variable.
(wicd-dmd-service): New procedure.
(wicd-service-type): New variable.
(wicd-service): Rewrite using 'service'.
* gnu/services/ssh.scm (<lsh-configuration>): New record type.
(activation): Rename to...
(lsh-initialization): ... this.
(lsh-activation, lsh-dmd-service, lsh-pam-services): New procedures.
(lsh-service-type): New variable.
(lsh-service): Rewrite using 'service' and 'lsh-configuration'.
* gnu/services/web.scm (<nginx-configuration>): New record type.
(%nginx-accounts): New variable.
(nginx-activation, nginx-dmd-service): New procedures.
(nginx-service-type): New variable.
(nginx-service): Rewrite using 'service' and 'nginx-configuration'.
* gnu/services/xorg.scm (<slim-configuration>): New record type.
(slim-pam-service, slim-dmd-service): New procedures.
(slim-service-type): New variable.
(slim-service): Rewrite using 'service' and 'slim-configuration'.
* gnu/system.scm (file-union): Remove.
(other-file-system-services): Adjust to new 'file-system-service'
signature.
(essential-services): Add #:container? parameter. Add
%DMD-ROOT-SERVICE, %ACTIVATION-SERVICE, and calls to
'pam-root-service', 'account-service', 'operating-system-etc-service',
and a SETUID-PROGRAM-SERVICE instance.
(operating-system-services): Pass #:container? to 'essential-services.
(etc-directory): Remove.
(operating-system-etc-service): New procedure. Rewrite as a call to
'etc-service'.
(operating-system-accounts): Change to not return accounts required by
services.
(operating-system-etc-directory): Rewrite as a call to 'fold-services'
and 'etc-directory'.
(user-group->gexp, user-account->gexp, modprobe-wrapper): Remove.
(operating-system-activation-script): Rewrite as a call to
'fold-services' and 'activation-service->script'.
(operating-system-boot-script): Likewise.
(operating-system-derivation): Add call to 'lower-object'.
(emacs-site-file, emacs-site-directory, shells-file): Change to use
'computed-file' and 'scheme-file' instead of the monadic procedures.
* gnu/system/install.scm (cow-store-service-type): New variable.
(cow-store-service): Rewrite using 'service'.
(/etc/configuration-files): New procedure.
(configuration-template-service-type,
%configuration-template-service): New variables.
(configuration-template-service): Remove.
(installation-services): Adjust accordingly. Adjust argument to
'guix-service'.
* gnu/system/linux.scm (/etc-entry, pam-root-service): New procedures.
(pam-root-service-type): New variable.
* gnu/system/shadow.scm (user-group->gexp, user-account->gexp,
account-activation, etc-skel, account-service): New procedures.
(account-service-type): New variable.
* tests/services.scm: New file.
* doc/guix.texi (Base Services, Desktop Services): Adjust accordingly.
(Defining Services): Rewrite.
* doc/images/service-graph.dot: New file.
* doc.am (DOT_FILES): Add it.
* po/guix/POTFILES.in: Add gnu/services.scm.
* gnu/services/base.scm (<nscd-configuration>)[glibc, name-services]:
New fields.
(nscd-service): Remove #:glibc and #:name-services parameters. Adjust
body to take those from CONFIG.
* gnu/services/desktop.scm (%desktop-services): Adjust accordingly.
* doc/guix.texi (Base Services): Adjust accordingly.
(Name Service Switch): Adjust example.
* gnu/services/avahi.scm (configuration-file): Use 'plain-file' instead
of 'text-file'.
(avahi-service): Turn into a regular procedure that returns a <service>.
* gnu/services/base.scm (root-file-system-service, file-system-service,
user-unmount-service, user-processes-service, host-name-service,
console-keymap-service, console-font-service, mingetty-service,
nscd.conf-file, nscd-service): Likewise.
(%default-syslog.conf): New variable.
(syslog-service): Use it. Turn into a regular procedure.
(guix-service, udev-rules-union, kvm-udev-rule, udev-service,
device-mapping-service, swap-service): Likewise.
* gnu/services/databases.scm (%default-postgres-hba,
%default-postgres-ident): Use 'plain-file' instead of 'text-file'.
(%default-postgres-config): Use 'mixed-text-file' instead of
'text-file*'.
(postgresql-service): Use 'program-file' instead of 'gexp->script'.
Turn into a regular procedure.
* gnu/services/desktop.scm (dbus-configuration-directory): Use
'computed-file' instead of 'gexp->derivation'.
(upower-configuration-file, geoclue-configuration-file,
elogind-configuration-file): Use 'plain-file' instead of 'text-file'.
(dbus-service, upower-service, colord-service, geoclue-service,
polkit-service, elogind-service): Turn into regular procedures.
(%desktop-services): Remove use of 'mlet' when iterating on
%BASE-SERVICES.
* gnu/services/lirc.scm (lirc-service): Turn into a regular procedure.
* gnu/services/networking.scm (static-networking-service,
dhcp-client-service, ntp-service, tor-service, bitlbee-service,
wicd-service): Likewise.
* gnu/services/ssh.scm (lsh-service): Likewise.
* gnu/services/web.scm (nginx-service): Likewise.
* gnu/services/xorg.scm (xorg-configuration-file): Use 'mixed-text-file'
instead of 'text-file*'.
(xorg-start-command, slim-service): Turn into regular procedures.
(xinitrc): Use 'program-file' instead of 'gexp->script'.
* gnu/system/install.scm (cow-store-service,
configuration-template-service): Turn into regular procedures.
* gnu/system.scm (other-file-system-services, device-mapping-services,
swap-services, essential-services, operating-system-services,
user-shells, operating-system-accounts): Remove now unnecessary
'mlet' and turn into regular procedures.
(operating-system-etc-directory, operating-system-activation-script,
operating-system-boot-script): Adjust accordingly.
* doc/guix.texi (Base Services, Networking Services, X Window, Desktop
Services, Database Services, Web Services, Various Services, Name
Service Switch): Adjust accordingly.
* gnu/services/base.scm (mingetty-service): Change default value of
#:motd from a monadic value to a <plain-file>. Assume MOTD to be a
file-like object. Assume LOGIN-PROGRAM is a gexp or #f.
(%base-services): Use 'plain-file' instead of 'text-file' for motd.
* gnu/system/linux.scm (unix-pam-service): Update docstring to mention
that MOTD is a file-like object.
* doc/guix.texi (Base Services): Adjust 'mingetty-service' documentation
accordingly.
* gnu/system/install.scm (installation-services): Adjust accordingly.
(log-to-info): Use 'program-file' instead of 'gexp->script'.
* gnu/services/base.scm (mingetty-service): Change default value of
#:motd from a monadic value to a <plain-file>. Assume MOTD to be a
file-like object. Assume LOGIN-PROGRAM is a gexp or #f.
(%base-services): Use 'plain-file' instead of 'text-file' for motd.
* gnu/system/linux.scm (unix-pam-service): Update docstring to mention
that MOTD is a file-like object.
* doc/guix.texi (Base Services): Adjust 'mingetty-service' documentation
accordingly.
* gnu/services/desktop.scm (%desktop-services): Replace the 'udev-service'
from %base-services.
* gnu/services/base.scm (%base-services): Add a comment to keep them in sync.
* gnu/services/desktop.scm (<elogind-configuration>): New record type.
(elogind-configuration-file, elogind-service): New functions.
(%desktop-services): Add elogind-service.
* gnu/services/desktop.scm (bool): New top-level helper.
(upower-configuration-file): Use top-level `bool'.
(geoclue-application): New public function.
(%standard-geoclue-applications): New public variable.
(geoclue-service): New public variable.
(%desktop-services): Add GeoClue. Add a comment about activation.
* doc/guix.texi (Desktop Services): Document the GeoClue service.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* gnu/services/xorg.scm (xorg-configuration-file): New procedure, with code
formerly in 'xorg-start-command'.
(xorg-start-command): Remove #:drivers and #:resolutions; add
#:configuration-file; use it as well as 'xorg-configuration-file'.
Somehow, as of Linux 4.0.2, the interfaces are down by default, which
prevents 'dhclient' from actually using them.
* gnu/services/networking.scm (dhcp-client-service): Call
'set-network-interface-up' on each item of IFACES.
* gnu/services/colord.scm, gnu/services/dbus.scm,
gnu/services/upower.scm: Remove.
* gnu/services/desktop.scm: New file, with contents taken from the above
files.
* gnu-system.am (GNU_SYSTEM_MODULES): Adjust accordingly.
* doc/guix.texi (Desktop Services): New section.
(Various Services): Move colord-service and upower-service from
here to "Desktop Services".
* gnu/build/file-systems.scm (MS_REMOUNT): New constant.
(mount-file-system): Add 'flags' local variable. When FLAGS has
MS_BIND & MS_RDONLY, call 'mount' with MS_REMOUNT.
* gnu/services/base.scm (file-system-service) <start>: Likewise.
* gnu/services/avahi.scm (avahi-service): Change 'shell' to a gexp
referring to "nologin" in the SHADOW package.
* gnu/services/dbus.scm (dbus-service): Likewise.
* gnu/services/networking.scm (ntp-service, tor-service): Likewise.
* doc/guix.texi (Name Service Switch): Add link to nss-mdns. Add
example show how to pass #:name-services to 'nscd-service'.
(Base Services): Add link from 'nscd-service' to the above.
* gnu/services/base.scm (nscd-service): Update docstring accordingly.
Reported by 白い熊 @相撲道 <guix-devel_gnu.org@sumou.com>
at <http://lists.gnu.org/archive/html/guix-devel/2015-03/msg00264.html>.
* gnu/services/dmd.scm (assert-no-duplicates): New procedure.
(dmd-configuration-file): Use it.
* po/guix/POTFILES.in: Add gnu/services/dmd.scm.
* tests/guix-system.sh (errorfile): Add test.
Previously processes started from the window manager would have a couple
of leaked file descriptors: writable /var/log/slim.log and readable
/gnu/store/…-xinitrc.
* gnu/services/xorg.scm (xinitrc)[builder]: Add 'close-all-fdes'. Use
it in 'exec-from-login-shell'.
That makes WindowMaker the default session, by default.
* gnu/services/xorg.scm (xsessions-directory)[builder]: Prepend a number
in the file name to preserve the order of SESSIONS.
(slim-service): Augment docstring.
* doc/guix.texi (X Window): Adjust accordingly.
* gnu/services/base.scm (nscd-service): Add #:name-services parameter.
In 'start' field, set LD_LIBRARY_PATH based on #:name-services.
* doc/guix.texi (Base Services): Document it.
(Name Service Switch): Link to 'nscd-service'.
* gnu/services/xorg.scm (<session-type>): New record type.
(%windowmaker-session-type, %ratpoison-session-type): New variables.
(%default-xsessions): Use them.
(xsessions-directory): Expect SESSIONS to be a list of <session-type>
and rewrite accordingly.
(slim-service): Adjust docstring.
* doc/guix.texi (X Window): Update accordingly.
Includes fixes for CVE-2014-8091, CVE-2014-8092, CVE-2014-8093, CVE-2014-8094,
CVE-2014-8095, CVE-2014-8096, CVE-2014-8097, CVE-2014-8098, CVE-2014-8099,
CVE-2014-8100, CVE-2014-8101, CVE-2014-8102, and CVE-2014-8103.
See <http://www.x.org/wiki/Development/Security/Advisory-2014-12-09/>
* gnu/packages/xorg.scm (xorg-server): Update to 1.16.2.901. Move mesa,
resourceproto, scrnsaverproto, and xf86driproto from inputs to
propagated-inputs. Add dri3proto and presentproto to propagated-inputs.
Add eudev and libxshmfence to inputs. Add a 'pre-configure' phase instead
of modifying the 'configure' phase. Adapt substitution that avoids trying
to 'mkdir /var' to build system changes.
* gnu/services/xorg.scm (xserver.conf): Add xf86-input-evdev ModulePath line.
* gnu/packages/xorg.scm (xf86-video-modesetting): Remove a comment stating
that the libdrm used in this driver is incompatible with the one in mesa,
because it is no longer true.
* gnu/services/xorg.scm (xserver.conf): Uncomment 'xf86-video-modesetting'
ModulePath and remove associated comment.
Before that, as it was given an empty configuration file, nscd would
actually have all its caches disabled.
* gnu/services/base.scm (<nscd-configuration>, <nscd-cache>): New record
types.
(%nscd-default-caches, %nscd-default-configuration): New variables.
(nscd.conf-file): New procedure.
(nscd-service): Add 'config' parameter. Use 'nscd.conf-file', and
pass its result as the '-f' parameter of nscd.
* doc/guix.texi (Base Services): Update 'nscd-service' documentation
accordingly. Document 'nscd-configuration', 'nscd-cache',
'%nscd-default-configuration', and '%nscd-default-caches'.
This is a followup to 1d18d87, which fixes <http://bugs.gnu.org/19119>.
* gnu/services/xorg.scm (xinitrc)[builder]: Add 'exec-from-login-shell'
procedure. Use it instead of 'execl' when launching XSESSION, WMAKER,
or RATPOISON.
Suggested by Adam Pribyl <pribyl@lowlevel.cz>.
* gnu/services/ssh.scm (lsh-service): Update docstring with xrefs to
the lsh manual. Fix typos.
* doc/guix.texi (Networking Services): Synchronize.