activation: Don't create unneeded "/var/guix/gcroots/etc-directory". * gnu/build/activation.scm (activate-etc): Don't create "/var/guix/gcroots/etc-directory".
activation: Set the firmware search path. * gnu/build/activation.scm (activate-firmware): New procedure. * gnu/system.scm (<operating-system>)[firmware]: New field. (directory-union): New procedure. (%base-firmware): New variable. (operating-system-activation-script): Use 'directory-union', and call 'activate-firmware'. * doc/guix.texi (operating-system Reference): Document 'firmware'.
system: Allow Linux-libre to find our 'modprobe' command. Fixes <http://bugs.gnu.org/18525>. Reported by Mark H Weaver <mhw@netris.org>. * gnu/build/activation.scm (activate-modprobe): New procedure. * gnu/system.scm (modprobe-wrapper): New procedure. (operating-system-activation-script): Use both.
activation: Ensure existing user accounts have the right settings. * gnu/build/activation.scm (modify-user, ensure-user): New procedures. (activate-users+groups): Systematically call 'ensure-user'.
Merge branch 'master' into core-updates Conflicts: gnu-system.am
activation: Honor $GUIX_NEW_SYSTEM for use by 'guix system reconfigure'. * gnu/build/activation.scm (activate-current-system): Honor $GUIX_NEW_SYSTEM by default. * guix/scripts/system.scm (switch-to-system): Set $GUIX_NEW_SYSTEM before loading SCRIPT.
Merge branch 'master' into core-updates Conflicts: gnu/packages/image.scm
activation: Set the permissions of /etc/sudoers to 440. * gnu/build/activation.scm (activate-etc): Move 'rm-f' to a local 'define'. When TARGET is "sudoers", make it 440.
activation: Make the /bin/sh symlink at activation time. * gnu/build/install.scm (directives): Remove "/bin/sh". * gnu/build/activation.scm (activate-/bin/sh): New procedure. * gnu/system.scm (operating-system-activation-script): Use it.
activation: Make sure /etc/sudoers & co. are regular files. Before that, 'sudo' would exit with: sudo: /etc/sudoers is not a regular file sudo: no valid sudoers sources found, quitting * gnu/build/activation.scm (activate-etc): Check if SOURCE matches 'file-is-directory?'. If not, use 'copy-file' instead of 'symlink'.
activation: Remove outdated comment. * gnu/build/activation.scm (activate-etc): Remove outdated comment.
activation: Factorize the link-or-copy trick. * gnu/build/activation.scm (link-or-copy): New procedure. (activate-setuid-programs): Use it.
Merge branch 'master' into core-updates
Merge branch 'master' into core-updates
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: 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.
activation: Preserve /etc/groups upon reboots. This is a followup to e2fcc23. The /etc/group file would be cleared when booting. * guix/build/activation.scm (activate-users+groups)[touch]: Rewrite so it does not wipe out FILE's contents.
Merge branch 'master' into core-updates
activation: Only create groups that do not exist yet. Before that the effect would be to re-create groups at each boot, and thus remove any members of the groups. * guix/build/activation.scm (activate-users+groups): Call 'add-group' only when (getgrname name) fails.
Merge branch 'master' into core-updates