Commit Graph

186 Commits

Author SHA1 Message Date
Ludovic Courtès 6892f0a247
store-copy: 'read-reference-graph' returns a list of records.
The previous implementation of 'read-reference-graph' was good enough
for many use cases, but it discarded the graph structure, which is
useful information in some cases.

* guix/build/store-copy.scm (<store-info>): New record type.
(read-reference-graph): Rewrite to return a list of <store-info>.
(closure-size, populate-store): Adjust accordingly.
* gnu/services/base.scm (references-file): Adjust accordingly.
* gnu/system/vm.scm (system-docker-image): Likewise.
* guix/scripts/pack.scm (squashfs-image, docker-image): Likewise.
* tests/gexp.scm ("gexp->derivation #:references-graphs"): Likewise.
2018-06-14 11:16:58 +02:00
Ludovic Courtès 0d56d9c714
services: fstab: Properly handle file system labels.
Fixes a regression introduced in
a5acc17a3c.

Reported by Tobias Geerinckx-Rice <me@tobias.gr>.

* gnu/services/base.scm (file-system->fstab-entry): Pass LABEL, not
FILE-SYSTEM, to 'file-system-label->string'.
2018-05-29 15:09:44 +02:00
Ludovic Courtès a5acc17a3c
file-systems: Remove 'title' field and add <file-system-label>.
The 'title' field was easily overlooked and was an endless source of
confusion.  Now, the value of the 'device' field is self-contained.

* gnu/system/file-systems.scm (<file-system>): Change constructor name
to '%file-system'.
[title]: Remove.
(<file-system-label>): New record type with printer.
(report-deprecation, device-expression)
(process-file-system-declaration, file-system): New macros.
(file-system-title): New procedure.
(file-system->spec, spec->file-system): Adjust to handle
<file-system-label>.
* gnu/system.scm (bootable-kernel-arguments): Add case for
'file-system-label?'.
(read-boot-parameters): Likewise.
(mapped-device-user): Avoid 'file-system-title'.
(fs->boot-device): Remove.
(operating-system-boot-parameters): Use 'file-system-device' instead of
'fs->boot-device'.
(device->sexp): Add case for 'file-system-label?'.
* gnu/bootloader/grub.scm (grub-root-search): Add case for
'file-system-label?'.
* gnu/system/examples/bare-bones.tmpl,
gnu/system/examples/beaglebone-black.tmpl,
gnu/system/examples/lightweight-desktop.tmpl,
gnu/system/examples/vm-image.tmpl: Remove uses of 'title'.
* gnu/system/vm.scm (virtualized-operating-system): Remove uses of
'file-system-title'.
* guix/scripts/system.scm (check-file-system-availability): Likewise,
and adjust fix-it hint.
(check-initrd-modules)[file-system-/dev]: Likewise.
* gnu/build/file-systems.scm (canonicalize-device-spec): Remove 'title'
parameter.
[canonical-title]: Remove.
Match on SPEC's type rather than on CANONICAL-TITLE.
(mount-file-system): Adjust caller.
* gnu/build/linux-boot.scm (boot-system): Interpret ROOT here.
* gnu/services/base.scm (file-system->fstab-entry): Remove use of
'file-system-title'.
* doc/guix.texi (File Systems): Remove documentation of the 'title'
field.  Rewrite documentation of 'device' and document
'file-system-label'.
2018-05-28 13:24:11 +02:00
Ludovic Courtès 5986e94118
services: gpm: Provide a default value and document 'gpm-service-type'.
* gnu/services/base.scm (%default-gpm-options): New variable.
(<gpm-configuration>)[gpm, options]: Add default values.
(gpm-service-type)[default-value]: New field.
(gpm-service): Use %DEFAULT-GPM-OPTIONS and mark as deprecated.
* doc/guix.texi (Base Services): Document 'gpm-service-type' and
'gpm-configuration'.  Remove 'gpm-service'.
2018-04-30 14:22:43 +02:00
Danny Milosavljevic c9436025a9
services: Move static-networking to (gnu services base).
* gnu/services/networking.scm (static-networking, static-networking?,
static-networking-interface, static-networking-ip, static-networking-netmask,
static-networking-gateway, static-networking-requirement,
static-networking-service, static-networking-service-type): Move to...
* gnu/services/base.scm: ...here.
2018-04-30 03:47:14 +02:00
Ludovic Courtès bb3062ad62
services: Add 'virtual-terminal'.
Fixes <https://bugs.gnu.org/30505>.
Suggested by Danny Milosavljevic <dannym@scratchpost.org>.

* gnu/services/base.scm (unicode-start): Remove.
(virtual-terminal-service-type): New variable.
(console-font-shepherd-services): Remove 'modules'; remove call to
'unicode-start'.  Add 'virtual-terminal' to 'requirement'.
(mingetty-shepherd-service, kmscon-service-type): Likewise.
(%base-services): Add 'virtual-terminal-service-type'.
* gnu/system/install.scm (%installation-services): Likewise.
2018-03-15 11:37:18 +01:00
Danny Milosavljevic c32e3ddedd
services: agetty: Call default-serial-port only when starting.
* gnu/services/base.scm (agetty-shepherd-service): Call default-serial-port
only when starting.
2018-03-08 13:16:30 +01:00
Ludovic Courtès 6c4458172d
services: file-systems: Include 'user-file-systems' service.
Previously the KNOWN-FS value used in 'essential-services' would be
incomplete: it would lack all the file systems provided by services that
extend 'file-system-service-type' (/sys/fs/cgroup,
/proc/sys/fs/binfmt_misc, etc.)  Consequently, upon shutdown,
'user-processes' would unmount these file systems before their
corresponding service had been stopped; when their corresponding (e.g.,
'file-system-/proc/sys/fs/binfmt_misc') was stopped, its 'umount' call
would fail.

This was harmless in practice, but this patch makes sure things work as
intended and file systems are unmounted in the right order.

* gnu/services/base.scm (file-system-shepherd-services): Instantiate
'user-file-systems' Shepherd service from here.
(user-unmount-service-type, user-unmount-service): Remove.
* gnu/system.scm (essential-services): Remove call to 'user-unmount-service'.
* gnu/system/install.scm (cow-store-service-type): Adjust comment.
2018-03-07 11:22:42 +01:00
Ludovic Courtès ce0a62f6c5
services: console-font: Don't emit the IUTF8 console code.
Fixes <https://bugs.gnu.org/30505>.

* gnu/services/base.scm (unicode-start): Remove 'display' call to FD for
"\x1b%G" console code.
2018-02-19 22:04:10 +01:00
Danny Milosavljevic 7e0a6fac0b
services: mingetty: Move tty optionality to agetty.
Follow-up to 5a9902c8ac.

* gnu/services/base.scm (mingetty-shepherd-service): Move tty optionality check to...
(agetty-shepherd-service): ...here.
2018-02-15 12:32:18 +01:00
Danny Milosavljevic 5a9902c8ac
services: agetty: Add agetty instance to base services. Make its tty optional.
* gnu/services/base.scm (%base-services): Instantiate agetty-service.
(default-serial-port): New variable.
(agetty-shepherd-service): Make tty optional, default to the above.
* doc/guix.texi (agetty-configuration): Update "tty" documentation.
* gnu/system/install.scm (agetty-default-service): Delete variable.
(embedded-installation-os): Remove agetty-default-service instance.
Add "console" kernel-argument.
2018-02-15 12:05:21 +01:00
Ludovic Courtès 88554b5d05
services: guix: Add 'chroot-directories' field.
* gnu/services/base.scm (<guix-configuration>)[chroot-directories]: New
field.
(guix-shepherd-service): Honor it.
(references-file): New procedure.
(guix-service-type)[compose, extend]: New fields.
2018-01-11 14:30:00 +01:00
Ludovic Courtès f4596f7630
services: guix: Add 'log-compression' option.
* gnu/services/base.scm (<guix-configuration>)[log-compression]: New
field.
(guix-shepherd-service): Use 'match-record' instead of 'match'.  Honor
'log-compression'.
* doc/guix.texi (Base Services): Document 'log-compression'.
2018-01-08 10:40:17 +01:00
Marius Bakke db8ed7cee8
services: networking: Add a dependency override mechanism to <static-networking>.
* gnu/services/networking.scm (<static-networking>)[requirement]: New field.
(static-networking-shepherd-service): Don't override requirement for loopback.
(static-networking-service): Expose 'requirement' parameter.  Default to UDEV.
* gnu/services/base.scm (%base-services): Add (requirement '()) for loopback service.
* doc/guix.texi (Networking Services): Document it.
2017-12-29 14:06:26 +01:00
Ludovic Courtès 4a32f58aa1
services: urandom-seed: Depend on udev.
Suggested by Leo Famulari <leo@famulari.name>.

* gnu/services/base.scm (urandom-seed-shepherd-service): Add 'udev' to
'requirement'.
2017-12-22 08:56:50 +01:00
Ludovic Courtès 8faaf8d7cc
services: urandom-seed: Deprecate the 'urandom-seed-service' procedure.
* gnu/services/base.scm (urandom-seed-service-type)[default-value]: New
field.
(urandom-seed-service): Mark as deprecated.
(%base-services): Use URANDOM-SEED-SERVICE-TYPE directly.
* gnu/services/base.scm (%base-services):
* doc/guix.texi (Base Services): Document 'urandom-seed-service-type'
instead of 'urandom-seed-service'.
2017-12-22 08:56:50 +01:00
Ludovic Courtès 4e9fd50857
services: urandom-seed: Become a dependency of 'user-processes'.
This ensures that 'urandom-seed' is started before programs that rely on
sources of randomness.

Fixes <https://bugs.gnu.org/29773>.
Reported by Leo Famulari <leo@famulari.name>.

* gnu/services/base.scm (urandom-seed-shepherd-service): Change
'requirement' to (file-systems).
(urandom-seed-service-type): Extend USER-PROCESSES-SERVICE-TYPE.
2017-12-22 08:56:50 +01:00
Ludovic Courtès 206a28d84a
services: 'user-processes-service-type' can now be extended.
* gnu/services/base.scm (user-processes-shepherd-service): New
procedure, taken from former 'user-processes-service-type'.  Add
REQUIREMENTS argument; remove GRACE-DELAY argument.
(user-processes-service-type): Redefine in terms of 'service-type'.
(user-processes-service): Remove.
(file-system-service-type): Extend USER-PROCESSES-SERVICE-TYPE.
* gnu/system.scm (essential-services): Use USER-PROCESSES-SERVICE-TYPE
directly.
2017-12-22 08:56:50 +01:00
Leo Famulari 9a56cf2b5b
services: urandom-seed: Try using a HWRNG to seed the Linux CRNG at boot.
* gnu/services/base.scm (urandom-seed-shepherd-service): Try to read from
'/dev/hwrng' at boot, as a supplement to any saved random seed.
* doc/guix.texi (Base Services): Document the new feature.
2017-12-19 11:31:24 -05:00
Danny Milosavljevic 86e6b4c931
services: base: Use make-static-device-nodes.
Fixes <https://bugs.gnu.org/22050>.

* gnu/services/base.scm (udev-shepherd-service): Use make-static-device-nodes.
2017-12-16 07:33:12 +01:00
Ludovic Courtès 787e8a80d5
services: console-font: Use 'tcsetattr' instead of invoking 'unicode_start'.
This is more robust, faster, and incidentally gets rid of remaining
"error in the finalization thread: Bad file descriptor" messages.

* gnu/services/base.scm (unicode-start): Rewrite to use 'tcgetattr' and
'tcsetattr'.
(console-font-shepherd-services)[start]: Add 'loop' to check whether
DEVICE is ready.  Tolerate EX_OSERR return from 'setfont'.
[modules]: New field.
2017-12-06 08:52:31 +01:00
Ludovic Courtès be5622e7f1
maint: Add 'berlin.guixsd.org.pub'.
* bayfront.guixsd.org.pub: Rename to...
* berlin.guixsd.org.pub: ... this.
* Makefile.am (dist_pkgdata_DATA): Adjust accordingly.
* gnu/services/base.scm (%default-authorized-guix-keys): Likewise.
2017-12-04 17:57:37 +01:00
Ludovic Courtès a0fea77dbb
services: guix: Remove dependency on 'lsof'.
This is a followup to b8f59cdc20e9d83ce63523ef917e95fcee07f134:
'list-runtime-roots' no longer depends on 'lsof'.

* gnu/services/base.scm (<guix-configuration>)[lsof]: Remove.
(guix-shepherd-service): Adjust accordingly.
* doc/guix.texi (Base Services): Adjust accordingly.
* gnu/system.scm (%base-packages): Remove LSOF.
2017-11-13 11:36:28 +01:00
Hartmut Goebel 0af94ad52f
gnu: service: Update comment.
* gnu/services/base.scm (guix-activation): Update comment.
2017-11-08 18:23:06 +01:00
Maxim Cournoyer 6e644cfdb3
services: base: Add file->udev-rule function.
This function allows passing a file-like object to the udev service.

* gnu/services/base.scm (file->udev-rule): New function.
* doc/guix.texi (Base Services): Document it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-10-22 22:09:00 -07:00
Ludovic Courtès 1c65cca574
file-systems: 'mount-file-system' now takes a <file-system> object.
* gnu/build/file-systems.scm (mount-file-system): Rename 'spec' to 'fs'
and assume it's a <file-system>.
* gnu/build/linux-boot.scm (boot-system): Assume MOUNTS is a list of
<file-system> and adjust accordingly.
* gnu/build/linux-container.scm (mount-file-systems): Remove
'file-system->spec' call.
* gnu/services/base.scm (file-system-shepherd-service): Add
'spec->file-system' call.  Add (gnu system file-systems) to 'modules'.
* gnu/system/linux-initrd.scm (raw-initrd): Use (gnu system
file-systems).  Add 'spec->file-system' call for #:mounts.
2017-10-11 11:12:33 +02:00
Ludovic Courtès fbc31dc124
services: Move 'session-environment-service-type' to pam.scm.
* gnu/services/base.scm (environment-variables->environment-file)
(session-environment-service-type)
(session-environment-service): Move to...
* gnu/system/pam.scm: ... here.
2017-09-22 00:05:08 +02:00
Ludovic Courtès 6b9e1fefa4
services: base: Add descriptions.
* gnu/services/base.scm (fstab-service-type)
(file-system-service-type, urandom-seed-service-type)
(session-environment-service-type)
(console-font-service-type)
(login-service-type, agetty-service-type)
(mingetty-service-type, nscd-service-type)
(pam-limits-service-type, guix-service-type)
(guix-publish-service-type, udev-service-type)
(gpm-service-type): Add 'description' field.
* po/packages/POTFILES.in: Add gnu/services/base.scm.
2017-09-16 17:47:46 +02:00
Ludovic Courtès d1ff5f9db3
services: file-system: Use 'file-system->spec'.
* gnu/services/base.scm (file-system-shepherd-service): Use
'file-system->spec' instead of in-line code.
2017-09-11 22:24:46 +02:00
Ludovic Courtès 943e1b975f
services: base: Import the closure of (gnu build file-systems).
* gnu/services/base.scm (file-system-shepherd-service): Use
'source-module-closure' in the 'with-imported-modules' form.
2017-09-11 22:24:46 +02:00
Ludovic Courtès 7f090203d5
services: user-processes: Reap child processes.
Fixes <http://bugs.gnu.org/26931>.
Reported by Leo Famulari <leo@famulari.name>.

* gnu/services/base.scm (user-processes-service-type)[stop]: Add
'reap-children' loop.
* gnu/tests/base.scm (run-halt-test): New procedure.
(%test-halt): New variable.
2017-08-28 09:56:33 +02:00
Andy Wingo b6d8066d4d
gnu: services: Log debug messages to /var/log/debug.
* gnu/services/base.scm (%default-syslog.conf): Create a /var/log/debug with
  messages logged to syslog at debug level.
2017-08-25 16:01:56 +02:00
Ludovic Courtès 412701b0e5
services: guix-publish: Run in a UTF-8 locale.
Works around <https://bugs.gnu.org/26948>.

* gnu/services/base.scm (guix-publish-shepherd-service): Pass
  #:environment-variables to 'make-forkexec-constructor'.
2017-07-27 14:51:03 +02:00
Ludovic Courtès 3bee4b6196
services: guix: Add 'max-silent-time' and 'timeout'.
* gnu/services/base.scm (<guix-configuration>)[max-silent-time]
[timeout]: New fields.
(guix-shepherd-service): Honor them.
* doc/guix.texi (Base Services): Document them.
2017-06-05 01:42:38 +02:00
Ludovic Courtès c22c9fa589
services: guix: Authorize the key for bayfront.guixsd.org.
* gnu/services/base.scm (%default-authorized-guix-keys): Add
"bayfront.guixsd.org".
2017-05-15 23:55:10 +02:00
Ludovic Courtès c298fb133a
services: nscd: Adjust activation snippet for /etc/resolv.conf symlinks.
Fixes <http://bugs.gnu.org/26809>.
Reported by Mark H Weaver <mhw@netris.org>.

* gnu/services/base.scm (nscd-activation): Use 'lstat' instead of
'file-exists?'.
2017-05-08 16:29:23 +02:00
Ludovic Courtès 49f9d7f697
services: nscd: Create /etc/resolv.conf if it does not exist.
* gnu/services/base.scm (nscd-activation): Create /etc/resolv.conf if it
does not exist yet.
2017-05-02 12:32:52 +02:00
Ludovic Courtès a35136cb56
services: guix-publish: Add 'cache', 'workers', and 'ttl' config knobs.
* gnu/services/base.scm (<guix-publish-configuration>)[cache, workers,
ttl]: New fields.
(guix-publish-shepherd-service): Honor them.
(guix-publish-activation): New procedure.
(guix-publish-service-type): Extend ACTIVATION-SERVICE-TYPE.
* doc/guix.texi (Base Services): Document it.
2017-04-19 17:51:39 +02:00
Ludovic Courtès f2767d3e89
services: guix-publish: Fix getter names.
Fixes a typo introduced in 697ddb8850.

* gnu/services/base.scm (<guix-publish-configuration>): Add missing
'configuration' word in getters for 'compression-level' and 'nar-path'.
2017-04-19 17:51:39 +02:00
Ludovic Courtès 3d3c565008
services: Add a default value to various service types.
* gnu/services/admin.scm (rottlog-service-type)[default-value]: New
field.
* gnu/services/base.scm (guix-service-type)[default-value]: New field.
(guix-publish-service-type)[default-value]: New field.
* gnu/services/cups.scm (cups-service-type)[default-value]: New field.
* gnu/services/dict.scm (dicod-service-type)[default-value]: New field.
* gnu/services/mcron.scm (mcron-service-type)[default-value]: New field.
* gnu/services/networking.scm (<tor-configuration>)[config-file]: Add
default value.
(tor-service-type)[default-value]: New field.
(<bitlbee-configuration>)[interface, port, extra-settings]: Add default
values.
(bitlbee-service-type)[default-value]: New field.
(wpa-supplicant-service-type)[default-value]: New field.
(tlp-service-type)[default-value]: New field.
(openssh-service-type)[default-value]: New field.
* doc/guix.texi (Base Services, Log Rotation)
(Networking Services, Printing Services):
(Power management Services): Adjust examples accordingly.
2017-04-16 00:48:08 +02:00
Ludovic Courtès 697ddb8850
services: guix-publish: Add 'compression-level' and 'nar-path' fields.
* gnu/services/base.scm (<guix-publish-configuration>)[compression-level,
nar-path]: New fields.
(guix-publish-shepherd-service): Honor them.
* doc/guix.texi (Base Services): Document them.
2017-03-24 00:23:29 +01:00
Ludovic Courtès f1e900a3b8
doc: Document 'guix-publish-service-type' instead of 'guix-publish-service'.
* doc/guix.texi (Base Services): Document 'guix-publish-service-type'
and 'guix-configuration'.  Remove 'guix-publish-service'.
(Invoking guix publish): Mention 'guix-publish-service-type'.
* gnu/services/base.scm (guix-publish-service): Mark as deprecated.
(<guix-configuration>): Export getters.
2017-03-24 00:23:29 +01:00
Ludovic Courtès 278d486b0c
file-systems: Do not use (gnu packages …).
Fixes a regression introduced in
7208995426 whereby (gnu system
file-systems) would pull in (gnu packages …) module, which in turn
breaks when importing things like (gnu build shepherd).

* gnu/system/file-systems.scm (file-system-type-predicate): Export.
(file-system-packages): Move to...
* gnu/system/linux-initrd.scm (file-system-packages): ... here.  Add
docstring.
* gnu/services/base.scm: Use it.
* tests/file-systems.scm ("does not pull (gnu packages …)"): New test.
2017-03-21 22:33:07 +01:00
Danny Milosavljevic 9970ef6134
services: Remove Tab character from source code whitespace.
* gnu/services/base.scm (file-system-shepherd-service): Remove Tab character
from source code whitespace.
2017-03-19 21:36:55 +01:00
Danny Milosavljevic 26e34e1e12
services: file-system-shepherd-service: Make it find the fsck programs.
Fixes <https://bugs.gnu.org/25917>.

* gnu/services/base.scm (file-system-shepherd-service): Use
file-system-packages.
2017-03-19 18:49:30 +01:00
Leo Famulari 9ee4c9ab6f
services: Add agetty service.
* gnu/services/base.scm (<agetty-configuration>): New record type.
(agetty-shepherd-service, agetty-service): New procedures.
(agetty-service-type): New variable.
* doc/guix.texi (Base Services): Document it.
[mingetty-configuration],[kmscon-configuration]: Specify the types of
supported consoles.
2017-03-05 03:41:32 -05:00
Leo Famulari b191f0a6c5
services: guix: Support building in a directory besides '/tmp'.
* gnu/services/base.scm (<guix-configuration>)[tmpdir]: New field.
(guix-shepherd-service): Use 'tmpdir' in #:environment-variables.
* doc/guix.texi (Base Services)[guix-configuration]: Document it.
2017-02-23 13:03:14 -05:00
Leo Famulari 93d32da9f8
services: guix: Support using an HTTP proxy.
* gnu/services/base.scm (<guix-configuration>)[http-proxy]: New field.
(guix-shepherd-service): Use 'http-proxy' in #:environment-variables.
* doc/guix.texi (Base Services)[guix-configuration]: Document it.
2017-02-22 15:25:55 -05:00
Ludovic Courtès 387e175492
services: Add 'special-files-service-type'.
* gnu/build/activation.scm (activate-/bin/sh): Remove.
(activate-special-files): New procedure.
* gnu/services.scm (activation-script): Remove call to
'activate-/bin/sh'.
(special-files-service-type): New variable.
(extra-special-file): New procedure.
* gnu/services/base.scm (%base-services): Add SPECIAL-FILES-SERVICE-TYPE
instance.
* gnu/tests/base.scm (run-basic-test)[special-files]: New variables.
["special files"]: New test.
2017-02-08 16:17:05 +01:00
Ludovic Courtès 8de3e4b35f
services: Make 'static-networking' extensible.
This allows users to statically define several interfaces.

* gnu/services/networking.scm (<static-networking>)[provision]
[name-servers]: Add default values.
(static-networking-shepherd-service)
(static-networking-etc-files)
(static-networking-shepherd-services): New procedures.
(static-networking-service-type): Change to extend both
SHEPHERD-ROOT-SERVICE-TYPE and ETC-SERVICE-TYPE.
(static-networking-service): Remove default value of #:provision.
Implement using 'simple-service'.
* gnu/services/base.scm (%base-services): Replace
'static-networking-service' call with 'service' form.
* doc/guix.texi (Networking Services): Update documentation.
2017-02-01 23:53:35 +01:00