summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-11-02 18:44:17 +0100
committerLudovic Courtès <ludo@gnu.org>2015-11-02 22:25:11 +0100
commitd62e201cfd0f1e48c14586489d0e2b80ce943d4f (patch)
treed6c4989b36b54f154f21363ac72bd9896729f2de /doc
parent3a391e68dafe81560d3e4936a1ec5ac3b06d43bb (diff)
services: Add 'system-service-type'.
* gnu/services.scm (system-derivation): New procedure. (system-service-type): New variable. (boot-script-entry): New procedure. (boot-service-type): Extend SYSTEM-SERVICE-TYPE. (etc-entry): New procedure. (etc-service-type): Extend SYSTEM-SERVICE-TYPE. (fold-services): Change default #:target-type to SYSTEM-SERVICE-TYPE. * gnu/system.scm (operating-system-directory-base-entries): New procedure. (essential-services): Use it. Add an instance of SYSTEM-SERVICE-TYPE. (operating-system-boot-script): Pass #:target-type to 'fold-services'. (operating-system-derivation): Rewrite in terms of 'fold-services'. * gnu/system/linux-container.scm (system-container): Remove. (container-script): Use 'operating-system-derivation'. * guix/scripts/system.scm (export-extension-graph): Replace BOOT-SERVICE-TYPE by SYSTEM-SERVICE-TYPE. * doc/images/service-graph.dot: Add 'system' node and edges. * doc/guix.texi (Service Composition): Mention SYSTEM-SERVICE-TYPE. (Service Reference): Document it. Update 'fold-services' documentation.
Diffstat (limited to 'doc')
-rw-r--r--doc/guix.texi26
-rw-r--r--doc/images/service-graph.dot5
2 files changed, 22 insertions, 9 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 74e0977db5..6ab98deef3 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -7589,8 +7589,11 @@ as arrows, a typical system might provide something like this:
@image{images/service-graph,,5in,Typical service extension graph.}
-At the bottom, we see the @dfn{boot service}, which produces the boot
-script that is executed at boot time from the initial RAM disk.
+@cindex system service
+At the bottom, we see the @dfn{system service}, which produces the
+directory containing everything to run and boot the system, as returned
+by the @command{guix system build} command. @xref{Service Reference},
+to learn about the other service types shown here.
@xref{system-extension-graph, the @command{guix system extension-graph}
command}, for information on how to generate this representation for a
particular operating system definition.
@@ -7853,12 +7856,14 @@ Return true if @var{obj} is a service extension.
At the core of the service abstraction lies the @code{fold-services}
procedure, which is responsible for ``compiling'' a list of services
-down to a single boot script. In essence, it propagates service
-extensions down the service graph, updating each node parameters on the
-way, until it reaches the root node.
+down to a single directory that contains everything needed to boot and
+run the system---the directory shown by the @command{guix system build}
+command (@pxref{Invoking guix system}). In essence, it propagates
+service extensions down the service graph, updating each node parameters
+on the way, until it reaches the root node.
@deffn {Scheme Procedure} fold-services @var{services} @
- [#:target-type @var{boot-service-type}]
+ [#:target-type @var{system-service-type}]
Fold @var{services} by propagating their extensions down to the root of
type @var{target-type}; return the root service adjusted accordingly.
@end deffn
@@ -7866,9 +7871,14 @@ type @var{target-type}; return the root service adjusted accordingly.
Lastly, the @code{(gnu services)} module also defines several essential
service types, some of which are listed below.
+@defvr {Scheme Variable} system-service-type
+This is the root of the service graph. It produces the system directory
+as returned by the @command{guix system build} command.
+@end defvr
+
@defvr {Scheme Variable} boot-service-type
-The type of the ``boot service'', which is the root of the service
-graph.
+The type of the ``boot service'', which produces the @dfn{boot script}.
+The boot script is what the initial RAM disk runs when booting.
@end defvr
@defvr {Scheme Variable} etc-service-type
diff --git a/doc/images/service-graph.dot b/doc/images/service-graph.dot
index 3397b878e9..04f231bb09 100644
--- a/doc/images/service-graph.dot
+++ b/doc/images/service-graph.dot
@@ -4,7 +4,8 @@ digraph "Service Type Dependencies" {
etc [shape = box, fontname = Helvetica];
accounts [shape = box, fontname = Helvetica];
activation [shape = box, fontname = Helvetica];
- boot [shape = house, fontname = Helvetica];
+ boot [shape = box, fontname = Helvetica];
+ system [shape = house, fontname = Helvetica];
lshd -> dmd;
lshd -> pam;
udev -> dmd;
@@ -32,4 +33,6 @@ digraph "Service Type Dependencies" {
guix -> dmd;
guix -> activation;
guix -> accounts;
+ boot -> system;
+ etc -> system;
}