* 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.
Fixes <http://bugs.gnu.org/19119>.
Reported by David Thompson <dthompson2@worcester.edu>.
* gnu/services/xorg.scm (xinitrc): Augment $PATH to include
~/.guix-profile/bin.
* gnu/artwork.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* gnu/services/xorg.scm: Use it.
(%artwork-repository): Remove.
* gnu/system/grub.scm: Use it.
(%artwork-repository): Remove.
* gnu/services/base.scm (user-unmount-service): New procedure.
* gnu/system.scm (essential-services): Use it.
* gnu/system/install.scm (cow-store-service): Mention it in comment.
* gnu/services/xorg.scm (xorg-start-command): Add #:drivers parameter.
Add 'device-section' procedure, and use it in 'xserver.conf'.
* doc/guix.texi (X Window): Document it.
* gnu/packages/xorg.scm (xf86-video-modesetting): New variable.
* gnu/services/xorg.scm (xorg-start-command)[xserver.conf]: Add
ModulePath line for XF86-VIDEO-MODESETTING, commented out.
* gnu/services/base.scm (user-processes-service): Increase the default
value of 'grace-delay'. This leaves more time for processes to clean
up their PID files, /tmp/.X0-lock, etc.
* gnu/packages/xorg.scm (xf86-input-vmmouse): Remove. This driver
implement the mouse protocol of a proprietary emulator.
* gnu/services/xorg.scm (xorg-start-command): Remove reference.
* gnu/services/base.scm (kvm-udev-rule): New procedure.
(udev-service): Use it, and add it to RULES.
(guix-build-accounts): Add "kvm" to the 'supplementary-groups' field.
* gnu/system/shadow.scm (%base-groups): Add "kvm".
* gnu/services/base.scm (swap-service): New procedure.
* gnu/system.scm (<operating-system>)[swap-devices]: New field.
(swap-services): New procedure.
(essential-services): Use it.
* gnu/system/file-systems.scm (<mapped-device-type>): New record type.
(<mapped-device>)[command]: Remove field.
[type]: New field.
* gnu/services/base.scm (device-mapping-service): Rename 'command'
parameter to 'open'. Add 'close' parameter and honor it.
* gnu/system.scm (luks-device-mapping): Rename to...
(open-luks-device): ... this.
(close-luks-device): New procedure.
(luks-device-mapping): New variable.
(device-mapping-services): Get the type of MD, and pass its 'open' and
'close' fields to 'device-mapping-service'.
Reported by DusXMT on #guix.
* gnu/services/networking.scm (static-networking-service): Add
'requirement' field. Change 'documentation' to be a string literal.
* gnu/system/file-systems.scm (<mapped-device>): New record type.
* gnu/system.scm (<operating-system>)[mapped-devices]: New field.
(luks-device-mapping): New procedure.
(other-file-system-services)[device-mappings, requirements]: New
procedures. Pass #:requirements to 'file-system-service'.
(device-mapping-services): New procedure.
(essential-services): Use it. Append its result to the return value.
(operating-system-initrd-file): Add comment.
* gnu/services/base.scm (file-system-service): Add #:requirements
parameter and honor it.
(device-mapping-service): New procedure.
* gnu/system/linux-initrd.scm (base-initrd): Add comment.
* gnu/services/base.scm (udev-rules-union): New procedure.
(udev-service): Add #:rules parameter. Call 'udev-rules-union' and
create udev.conf. Set $UDEV_CONFIG_FILE before spawning udevd.
* guix/build/linux-initrd.scm (MS_NOSUID, MS_NODEV, MS_NOEXEC): New
variables.
(mount-flags->bit-mask): New procedure.
(mount-file-system)[flags->bit-mask]: Remove.
Use 'mount-flags->bit-mask' instead.
In /etc/mtab, use the empty string when OPTIONS is false.
* gnu/services/base.scm (file-system-service): Add #:flags parameter and
honor it.
* gnu/system.scm (other-file-system-services): Pass FLAGS to
'file-system-service'.
* gnu/services/base.scm (unicode-start, console-font-service): New
procedures.
(%base-services): Call 'console-font-service' for TTY1 to TTY6.
* gnu/system/install.scm (installation-services): Add comment about the
console font. Call 'console-font-service' for TTY1 to TTY6.
* gnu/services/networking.scm (tor-service): New procedure.
* doc/guix.texi (Networking Services): Document it.
* build-aux/hydra/demo-os.scm: Use it. Add TOR and TORSOCKS to
'packages'.
* gnu/services/networking.scm (static-networking-service): Use -i, -A,
and --up with Inetutils' ifconfig. Do 'route del -net default' only
when GATEWAY is true.
* gnu/services/networking.scm (static-networking-service): Add
#:provision parameter; use it.
* gnu/services/base.scm (%base-services): Call
'static-networking-service' for "lo".
* gnu/services/base.scm (udev-service)[start]: Add 'wait-for-udevd', and
call it before running 'udevadm trigger'. Pass --action=add to
'udevadm trigger'. Call 'udevadm settle' after 'udevadm trigger'.
* gnu/services/xorg.scm (xorg-start-command)[xserver.conf]: Add
'ModulePath' entries for xf86-video-{fbdev,cirrus,intel,mach64,nv} and
xf86-input-{synaptics,vmmouse}.
* gnu/system/shadow.scm (<user-account>)[system?]: New field.
* gnu/system.scm (user-account->gexp): Add it.
* guix/build/activation.scm (add-user): Add #:system? parameter and
honor it.
(activate-users+groups): Handle the 'system?' part of user tuples.
Pass it to 'add-user'. Don't create PROFILE-DIR when SYSTEM? is
true.
* gnu/services/dbus.scm (dbus-service): Add 'system?' field for
"messagebus" account.
* gnu/services/base.scm (guix-build-accounts): Likewise.
* gnu/services/avahi.scm (avahi-service): Likewise.
This partly reverts commit 185f669 ("services: Make sure the store's
group is the build group.")
* gnu/services/base.scm (guix-service)[activate]: Remove 'chown' call.
Add 'id' field to 'user-group' form.
* guix/build/install.scm (directives): Set the store's GID to 30000.
* gnu/services/base.scm (guix-service)[activate]: New variable. Add
'chown' call for (%store-prefix). Set the 'activate' field to
ACTIVATE.
* guix/build/install.scm (directives): Add comment about STORE's group.
* gnu/system/file-systems.scm (<file-system>)[title]: New field.
* gnu/services/base.scm (file-system-service): Add #:title parameter.
In 'start' gexp, use 'canonicalize-device-spec' and honor TITLE.
* gnu/system.scm (other-file-system-services,
operating-system-root-file-system, operating-system-initrd-file):
Adjust accordingly.
* gnu/system/linux-initrd.scm (file-system->spec): Likewise.
* gnu/system/vm.scm (system-disk-image): Add 'title' field for the root
file system.
* guix/build/linux-initrd.scm (mount-file-system): Expect the second
element of SPEC to be the title.
(boot-system)[root-mount-point?, root-fs-type]: Likewise.
* gnu/services/dmd.scm (dmd-configuration-file): Select
'canonicalize-device-spec'.
* gnu/system.scm (etc-directory): Change default value of #:profile.
Change contents of SHELLS. Use /run/current-system/profile/{s,}bin in
BASHRC.
(operating-system-boot-script)[%modules]: Add (guix build
linux-initrd). Add call to 'activate-current-system' in gexp.
(operating-system-initrd-file, operating-system-grub.cfg): New
procedures.
(operating-system-derivation): Don't build grub.cfg here and remove it
from the file union.
* gnu/system/vm.scm (qemu-image): Remove #:populate.
(operating-system-build-gid, operating-system-default-contents):
Remove.
(system-qemu-image): Remove call to
'operating-system-default-contents'. Use 'operating-system-grub.cfg'
to get grub.cfg. Add GRUB.CFG to #:inputs.
(system-qemu-image/shared-store): Likewise, but don't add GRUB.CFG to
#:inputs.
(system-qemu-image/shared-store-script): Pass --system kernel option.
* guix/build/activation.scm (%booted-system, %current-system): New
variables.
(boot-time-system, activate-current-system): New procedures.
* guix/build/install.scm (evaluate-populate-directive): Add case
for ('directory name uid gid mode).
(directives, populate-root-file-system): New procedures.
* guix/build/vm.scm (initialize-hard-disk): Replace calls to
'evaluate-populate-directive' by a call to
'populate-root-file-system'.
* gnu/services/dmd.scm (dmd-configuration-file): Use
/run/current-system/profile/bin.
* gnu/services/xorg.scm (slim-service): Likewise.
* guix/build/linux-initrd.scm (pidof): New procedure.
(mount-root-file-system)[mark-as-not-killable]: New procedure.
Use it for unionfs when VOLATILE-ROOT?.
* gnu/services/base.scm (%do-not-kill-file): New variable.
(user-processes-service)[stop]: Honor it.
* gnu/services/base.scm (file-system-service): New procedure.
(user-processes-service): Add 'requirements' parameter.
* gnu/services/dmd.scm (dmd-configuration-file): Use (guix build
linux-initrd).
* guix/build/linux-initrd.scm (guix): Export 'check-file-system'.
* gnu/system.scm (file-union): New procedure.
(essential-services): Use it. Add that to the returned list.
* gnu/services/dmd.scm (dmd-configuration-file): Add derivations for
the (guix build syscalls) module, and add that to the load path of
dmd.conf.
* gnu/services/base.scm (root-file-system-service): Rewrite using the
'sync' and 'mount' procedures.
* gnu/services.scm (<service>)[inputs]: Remove.
* gnu/system.scm (links): Remove.
(etc-directory): Add PASSWD and SHADOW to #:inputs.
(operating-system-boot-script): Pass ETC to 'dmd-configuration-file'.
(operating-system-derivation): Remove EXTRAS from the union.
* gnu/system/linux.scm (pam-service->configuration): Rewrite in terms of
'gexp->derivation'. Compute the contents on the build side. Expect
'arguments' to contain a list of gexps.
(pam-services->directory): Rewrite in terms of 'gexp->derivation'.
(unix-pam-service): Change 'arguments' to a list of one gexp.
* gnu/system/shadow.scm (<user-account>)[inputs]: Remove.
[shell]: Change default value to a gexp.
(passwd-file): Rewrite in terms of 'gexp->derivation'. Compute
contents on the build side.
* gnu/services/base.scm (host-name-service, mingetty-service,
nscd-service, syslog-service, guix-service): Change 'start' and 'stop'
to gexps; remove 'inputs' field.
(guix-build-accounts): Change 'shell' field to a gexp.
* gnu/services/networking.scm (static-networking-service): Change
'start' and 'stop' to gexps; remove 'inputs' field.
* gnu/services/xorg.scm (slim-service): Likewise.
* gnu/services/dmd.scm (dmd-configuration-file): Expect ETC to be a
derivation. Change 'config' to a gexp. Use 'gexp->file' instead of
'text-file'.
* doc/guix.texi (Defining Services): Update nscd example with gexps, and
without 'inputs'. Add xref to "G-Expressions".
* gnu/services/base.scm (%base-services): New variable.
* gnu/system.scm (<operating-system>)[services]: Change the default
value to %BASE-SERVICES.
* doc/guix.texi (Using the Configuration System): Change
'%standard-services' to '%base-services'.