system: Use (guix profiles) to build the system profile.
* gnu/system.scm (union): Remove.
(operating-system-profile): Use 'profile-derivation' and related
procedures instead of 'union'.
system: Add the 'system?' field for user groups.
Suggested by Mark H. Weaver.
* gnu/system/shadow.scm (<user-group>)[system?]: New field.
(%base-groups): Introduce 'system-group' macro, and use it.
* gnu/system.scm (user-group->gexp): Pass the 'system?' field.
* guix/build/activation.scm (add-group): Add #:system? and honor it.
(activate-users+groups): Handle the 'system?' field.
* gnu/system/file-systems.scm (%tty-gid): Choose an ID below 1000.
* doc/guix.texi (User Accounts): Document the 'system?' field.
system: Recognize more file system flags.
* 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'.
system: Add 'create-mount-point?' file system option.
* gnu/system/file-systems.scm (<file-system>)[create-mount-point?]: New
field.
* gnu/services/base.scm (file-system-service): Add #:create-mount-point?
parameter and honor it.
* gnu/system.scm (other-file-system-services): Update
'file-system-service' call accordingly.
* doc/guix.texi (File Systems): Document it.
system: Add e2fsprogs to the base packages.
* gnu/system.scm (%base-packages): Add E2FSPROGS.
system: Use kmod instead of module-init-tools.
* gnu/system.scm (%base-packages): Use kmod instead of
module-init-tools.
system: Add 'nano' and 'lsof' to the base packages.
* gnu/system.scm (%base-packages): Add NANO and LSOF.
system: Add 'which' to the base packages.
* gnu/system.scm (%base-packages): Add WHICH.
linux-initrd: Rename 'qemu-initrd' to 'base-initrd'.
* gnu/system/linux-initrd.scm (qemu-initrd): Rename to...
(base-initrd): ... this.
* gnu/system.scm (<operating-system>)[initrd]: Update accordingly.
* gnu/system/vm.scm (expression->derivation-in-linux-vm,
system-disk-image, virtualized-operating-system): Likewise.
system: Set $LINUX_MODULE_DIRECTORY as a function or /run/booted-system.
* gnu/system.scm (etc-directory): Remove #:kernel parameter. Set
LINUX_MODULE_DIRECTORY as a function or /run/booted-system.
(operating-system-etc-directory): Update accordingly.
system: Add a 'system?' field to user accounts.
* 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.
system: Adjust the set of fields with default values.
* gnu/system.scm (<operating-system>)[file-systems]: Remove default.
[locale]: Add default value.
guix system: Add 'reconfigure' action.
* guix/scripts/system.scm (%system-profile): New variable.
(switch-to-system, previous-grub-entries): New procedures.
(unless-file-not-found): New macro.
(show-help): Add 'reconfigure'.
(guix-system): Handle it.
* gnu/system.scm: Export 'operating-system-activation-script'.
* doc/guix.texi (Invoking guix system): Document it.
system: Support the addition of old entries in the GRUB menu.
* gnu/system.scm (operating-system-grub.cfg): Add 'old-entries'
parameter. Pass it to 'grub-configuration-file'.
* gnu/system/grub.scm (grub-configuration-file): Add #:old-entries
parameter. Honor it.
system: Store boot parameters in the system derivation.
* gnu/system.scm (operating-system-parameters-file): New procedure.
(operating-system-derivation): Use it to produce a 'parameters' files.
system: Factorize GRUB menu entry label.
* gnu/system.scm (kernel->grub-label): New procedure.
(operating-system-grub.cfg): Use it.
services: Add udev service, and add it to '%base-services'.
* gnu/services/base.scm (udev-service): New procedure.
(%base-services): Use it.
* gnu/system.scm (%base-packages): Add UDEV.
system: Augment the default set of groups.
* gnu/system/shadow.scm (%base-groups): New variable.
* gnu/system.scm (<operating-system>)[groups]: Use it as the default.
Merge branch 'core-updates'