* gnu/system/shadow.scm (guix-build-accounts): New procedure.
* gnu/system/vm.scm (system-qemu-image): Use it. Add the "guixbuild"
group.
* gnu/system/dmd.scm (guix-service): Add 'builder-group' parameter.
Pass 'guix-daemon' the '--build-users-group' option.
* scripts/guix.in: Change '-s' to '--no-auto-compile'. This avoids
annoying messages about auto-compilation, and avoids permission denied
issues when running without write access in the usual places.
* gnu/system/vm.scm (system-qemu-image): Add a "guest" user and a
"users" user group. Make /home/guest. Add /etc/group. Update
/etc/issue to mention it.
* guix/build-system/trivial.scm (trivial-build): When SOURCE is true,
add it to INPUTS.
(trivial-cross-build): Likewise.
* tests/packages.scm ("trivial with source"): New test.
* guix/scripts/package.scm (switch-to-previous-generation): New function.
(roll-back): Use the new function instead of 'switch-link'.
(show-help): Add '--delete-generations'.
(%options): Likewise.
(guix-package)[process-actions]: Add 'current-generation-number',
'display-and-delete', and 'delete-generation'. Add support for
'--delete-generations', and reindent the code.
* tests/guix-package.sh: Test '--delete-generations'.
* doc/guix.texi (Invoking guix-package): Document '--delete-generations'.
* gnu/system/vm.scm (system-qemu-image): Use
'static-networking-service'. Add /etc/resolv.conf. Add Inetutils to
the profile.
* gnu/system/dmd.scm (static-networking-service): New procedure.
* gnu/system/dmd.scm (host-name-service): New procedure.
(mingetty-service): Require the 'host-name' service.
* gnu/system/vm.scm (system-qemu-image): Add the 'host-name' service.
Set PS1 in /etc/bashrc to something sensible.
* gnu/system/vm.scm (system-qemu-image): Build a 'motd' and an 'issue'
file. Pass 'unix-pam-service' that motd. Have /etc/issue point to
the 'issue' file.
* gnu/system/vm.scm (qemu-image): Add Guix as an input when
INITIALIZE-STORE?.
(union): New procedure.
(system-qemu-image): Use it. Build /etc/profile. Pass PROFILE among
#:inputs-to-copy instead of listing all the individual profiles.
Remove explicit 'build-derivations' call.
* gnu/system/vm.scm (expression->derivation-in-linux-vm)[input-alist]:
Add case for derivation? objects.
Same for #:inputs values.
(qemu-image)[input->name+derivation]: Likewise.
* guix/scripts/package.scm (guix-package)[process-query]: Show that a
generation is the current one if the profile points to it.
* tests/guix-package.sh: Test it.
* guix/scripts/package.scm (guix-package)[process-query]: Change
'list-generation' to not list the zeroth generation.
* tests/guix-package.sh: Test it.
* doc/guix.texi (Invoking guix package): Document it, and use the
right term when talking about generations.
* guix/scripts/package.scm (guix-package)[process-query]: Exit with 1
when a generation does not exist or the profile points to the zeroth
generation.
* tests/guix-package.sh: Test the former case.
* gnu/packages/fontutils.scm (fontconfig): Add gs-fonts as an input and
register it in the configuration file; so any porgram using fontconfig
should at least have the gs-fonts at its disposal.
This fixes a bug whereby 'guix-register' would bail out when trying to
create NIX_STORE_DIR/.links when NIX_STORE_DIR is read-only.
* nix/guix-register/guix-register.cc (parse_opt): Initialize
'settings.nixStore' to PREFIX + NIX_STORE_DIR.
(main): Change 'settings.nixStore' once the 'LocalStore' has been
instantiated.
* nix/guix-register/guix-register.cc (prefix): New variable.
(parse_opt): Use it.
(register_validity): Change 'info.path' to the final store name.
Hash the final under its real path.
* tests/guix-register.sh: Adjust the contents of $closure accordingly.
Rename 'NIX_LOCALSTATE_DIR' to 'NIX_STATE_DIR'. Don't try to call
'valid-path?'. Add test using 'sqlite3'.