* gnu/system.scm (union): Allow (PACKAGE OUTPUT), (PACKAGE), and
PACKAGE.
(<operating-system>)[packages]: Make the default a list of package?
objects.
* gnu/system/vm.scm (%demo-operating-system): Likewise. Add a few
packages.
* gnu/system/shadow.scm (<user-account>)[inputs]: New field.
(passwd-file): Bind the 'shell' field of each account.
* gnu/system/vm.scm (%demo-operating-system): Remove 'shell' field.
* gnu/system/dmd.scm (guix-build-accounts): Store a monadic value in
'shell'. Add 'inputs' field.
* gnu/system.scm (operating-system-derivation): Remove 'shell' field for
'root' account. Add all the 'user-account-inputs' to EXTRAS.
* gnu/system/vm.scm (lower-inputs): Move to monads.scm.
(qemu-image): Don't add GRUB-CONFIGURATION to the INPUTS-TO-COPY.
(union, file-union, etc-directory): Move to gnu/system.scm.
(%demo-operating-system): New variable.
(system-qemu-image): Add 'os' parameter. Rewrite in terms of
'operating-system-derivation'.
* guix/monads.scm (lower-inputs): New procedure.
* gnu/system/grub.scm (grub-configuration-file): Change 'entries' to be
a plain list instead of a list of monadic values.
* gnu/system.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/web.scm (perl-http-daemon): Propagate inputs perl-http-date,
perl-http-message and perl-lwp-mediatypes; drop input perl-uri
(propagated by perl-http-message).
* gnu/packages/web.scm (perl-http-cookies): Propagate inputs perl-http-date
and perl-http-message; drop input perl-uri (itself propagated from
perl-http-message).
* gnu/system/shadow.scm (guix-build-accounts): Move to...
* gnu/system/dmd.scm (guix-build-accounts): ... here.
(<service>)[user-accounts, user-groups]: New fields.
(guix-service): New #:build-user-id and #:build-accounts parameters.
Use 'guix-build-accounts' and set the 'user-accounts' and
'user-groups' fields accordingly.
* gnu/system/vm.scm (system-qemu-image): Remove use of
'guix-build-accounts'. Augment ACCOUNTS and GROUPS from what SERVICES
demand.
* HACKING (Building from Git): As a follow-up to ff1cbb9, update the
error reported when pkg.m4 is missing. Suggested by
John Darrington <john@darrington.wattle.id.au>.
* gnu/system/vm.scm (etc-directory): Remove 'resolv.conf'.
(system-qemu-image): Use 'static-networking-service' with
#:name-servers. Don't populate the image with /etc/resolv.conf.
* gnu/system/dmd.scm (static-networking-service): Add #:name-servers
parameter. Use it to populate /etc/resolv.conf.
* gnu/system/vm.scm (expression->derivation-in-linux-vm)[lower-inputs]:
Move to top-level...
(lower-inputs): ... here. New variable.
(file-union, etc-directory): New procedures.
(system-qemu-image): Use 'etc-directory'; remove redundant code, and
register the result of 'etc-directory' as a GC root.