Toggle diff (597 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 43a5fc85bd..58eb47535d 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -23100,7 +23100,14 @@ details.
@cindex database
@cindex SQL
The @code{(gnu services databases)} module provides the following services.
+@menu
+* PostgreSQL:: One of the major SQL databases.
+* MariaDB/MySQL:: Another major SQL databases.
+* Memcached:: A distributed memory object caching system.
+* Redis:: An in-memory key/value data store.
+@end menu
+@anchor{PostgreSQL}
@subsubheading PostgreSQL
The following example describes a PostgreSQL service with the default
@@ -23325,6 +23332,7 @@ The initial PostgreSQL roles to create.
@end table
@end deftp
+@anchor{MariaDB/MySQL}
@subsubheading MariaDB/MySQL
@defvr {Scheme Variable} mysql-service-type
@@ -23369,6 +23377,7 @@ be disabled if you would rather do that manually.
@end table
@end deftp
+@anchor{Memcached}
@subsubheading Memcached
@defvr {Scheme Variable} memcached-service-type
@@ -23403,6 +23412,7 @@ Additional command line options to pass to @code{memcached}.
@end table
@end deftp
+@anchor{Redis}
@subsubheading Redis
@defvr {Scheme Variable} redis-service-type
@@ -23438,7 +23448,17 @@ The @code{(gnu services mail)} module provides Guix service definitions
for email services: IMAP, POP3, and LMTP servers, as well as mail
transport agents (MTAs). Lots of acronyms! These services are detailed
in the subsections below.
+@menu
+* Dovecot Service:: An IMAP/POP3/LMTP server.
+* OpenSMTPD Service:: A message transfer agent (MTA) stemming from the OpenBSD project.
+* Exim Service:: Another message transfer agent (MTA).
+* Getmail service:: Get your mail from several mail accounts to your local machine.
+* Mail Aliases Service:: This service which provides /etc/aliases.
+* GNU Mailutils IMAP4 Daemon:: Another IMAP4 Daemon.
+* Radicale Service:: A CalDAV (calendars, to-do lists) and CardDAV (contacts) server.
+@end menu
+@anchor{Dovecot Service}
@subsubheading Dovecot Service
@deffn {Scheme Procedure} dovecot-service [#:config (dovecot-configuration)]
@@ -24846,6 +24866,7 @@ could instantiate a dovecot service like this:
(string "")))
@end lisp
+@anchor{OpenSMTPD Service}
@subsubheading OpenSMTPD Service
@deffn {Scheme Variable} opensmtpd-service-type
@@ -24876,6 +24897,7 @@ remote servers. Run @command{man smtpd.conf} for more information.
@end table
@end deftp
+@anchor{Exim Service}
@subsubheading Exim Service
@cindex mail transfer agent (MTA)
@@ -24915,6 +24937,7 @@ variables.
@end table
@end deftp
+@anchor{Getmail service}
@subsubheading Getmail service
@cindex IMAP
@@ -25206,6 +25229,7 @@ Defaults to @samp{()}.
@end deftypevr
+@anchor{Mail Aliases Service}
@subsubheading Mail Aliases Service
@cindex email aliases
@@ -25234,6 +25258,7 @@ the @code{operating-system}'s @code{user-accounts} in order to deliver
the @code{postmaster} mail to @code{bob} (which subsequently would
deliver mail to @code{bob@@example.com} and @code{bob@@example2.com}).
+@anchor{GNU Mailutils IMAP4 Daemon}
@subsubheading GNU Mailutils IMAP4 Daemon
@cindex GNU Mailutils IMAP4 Daemon
@@ -25264,6 +25289,7 @@ Mailutils Manual}, for details.
@end table
@end deftp
+@anchor{Radicale Service}
@subsubheading Radicale Service
@cindex CalDAV
@cindex CardDAV
@@ -25297,7 +25323,13 @@ on TCP port 5232 of @code{localhost} and use the @code{htpasswd} file at
The @code{(gnu services messaging)} module provides Guix service
definitions for messaging services. Currently it provides the following
services:
+@menu
+* Prosody Service:: A modern XMPP communication server.
+* BitlBee Service:: A IRC gateway to a variety of messaging protocols.
+* Quassel Service:: A modern, cross-platform, distributed IRC client
+@end menu
+@anchor{Prosody Service}
@subsubheading Prosody Service
@deffn {Scheme Variable} prosody-service-type
@@ -25715,6 +25747,7 @@ string, you could instantiate a prosody service like this:
@c end of Prosody auto-generated documentation
+@anchor{BitlBee Service}
@subsubheading BitlBee Service
@cindex IRC (Internet Relay Chat)
@@ -25759,6 +25792,7 @@ Configuration snippet added as-is to the BitlBee configuration file.
@end table
@end deftp
+@anchor{Quassel Service}
@subsubheading Quassel Service
@cindex IRC (Internet Relay Chat)
@@ -25798,7 +25832,12 @@ and Error.
The @code{(gnu services telephony)} module contains Guix service
definitions for telephony services. Currently it provides the following
services:
+@menu
+* Jami:: A distributed multimedia communications platform.
+* Mumble server:: A low latency, high quality voice chat server.
+@end menu
+@anchor{Jami}
@subsubheading Jami
@cindex jami, service
@@ -26020,6 +26059,7 @@ account fingerprint for a registered username.
@end deftp
+@anchor{Mumble server}
@subsubheading Mumble server
@cindex Mumble
@@ -26239,6 +26279,11 @@ going forward.
The @code{(gnu services file-sharing)} module provides services that
assist with transferring files over peer-to-peer file-sharing networks.
+@menu
+* Transmission Daemon Service:: A flexible BitTorrent client.
+@end menu
+
+@anchor{Transmission Daemon Service}
@subsubheading Transmission Daemon Service
@uref{https://transmissionbt.com/, Transmission} is a flexible
@@ -27034,6 +27079,16 @@ Defaults to @samp{#t}.
@node Monitoring Services
@subsection Monitoring Services
+@menu
+* Tailon Service:: A web application for viewing and searching log files.
+* Darkstat Service:: A packet sniffer.
+* Prometheus Node Exporter Service:: A client/agent for the Prometheus monitoring system.
+* Zabbix server:: A high performance monitoring system.
+* Zabbix agent:: Gathers information for the Zabbix monitoring server.
+* Zabbix front-end:: Provides a web interface to Zabbix.
+@end menu
+
+@anchor{Tailon Service}
@subsubheading Tailon Service
@uref{https://tailon.readthedocs.io/, Tailon} is a web application for
@@ -27142,6 +27197,7 @@ the 2nd element of the pair is the password.
@end deftp
+@anchor{Darkstat Service}
@subsubheading Darkstat Service
@cindex darkstat
Darkstat is a packet sniffer that captures network traffic, calculates
@@ -27184,6 +27240,7 @@ Specify the path of the base URL@. This can be useful if
@end deftp
@anchor{prometheus-node-exporter}
+@anchor{Prometheus Node Exporter Service}
@subsubheading Prometheus Node Exporter Service
@cindex prometheus-node-exporter
@@ -27223,6 +27280,7 @@ Extra options to pass to the Prometheus node exporter.
@end table
@end deftp
+@anchor{Zabbix server}
@subsubheading Zabbix server
@cindex zabbix zabbix-server
Zabbix is a high performance monitoring system that can collect data from a
@@ -27314,6 +27372,7 @@ configuration file.
@c %end of fragment
@anchor{zabbix-agent}
+@anchor{Zabbix agent}
@subsubheading Zabbix agent
@cindex zabbix zabbix-agent
@@ -27392,6 +27451,7 @@ configuration file.
@c %end of fragment
@anchor{zabbix-front-end}
+@anchor{Zabbix front-end}
@subsubheading Zabbix front-end
@cindex zabbix zabbix-front-end
@@ -27458,7 +27518,12 @@ Zabbix server port.
The @code{(gnu services kerberos)} module provides services relating to
the authentication protocol @dfn{Kerberos}.
+@menu
+* Krb5 Service:: Create Kerberos client configuration file /etc/krb5.conf.
+* PAM krb5 Service:: Allows for login authentication and password management via Kerberos.
+@end menu
+@anchor{Krb5 Service}
@subsubheading Krb5 Service
Programs using a Kerberos client library normally
@@ -27552,6 +27617,7 @@ field.
@end deftp
+@anchor{PAM krb5 Service}
@subsubheading PAM krb5 Service
@cindex pam-krb5
@@ -28065,7 +28131,20 @@ Defaults to @samp{()}.
@cindex HTTP
The @code{(gnu services web)} module provides the Apache HTTP Server,
the nginx web server, and also a fastcgi wrapper daemon.
+@menu
+* Apache HTTP Server:: A major HTTP server.
+* NGINX:: Another major HTTP server.
+* Varnish Cache:: A fast web cache server.
+* Patchwork:: A patch tracking system.
+* Mumi:: A web interface to the Debbugs bug tracker
+* FastCGI:: An interface between front- and back-end of a web service.
+* PHP-FPM:: An alternative FastCGI implementation for PHP.
+* Hpcguix-web:: A customizable web interface to browse Guix packages.
+* gmnisrv:: A simple Gemini protocol server.
+* Agate:: A simple Gemini protocol server written in Rust.
+@end menu
+@anchor{Apache HTTP Server}
@subsubheading Apache HTTP Server
@deffn {Scheme Variable} httpd-service-type
@@ -28532,6 +28611,7 @@ body of a named location block cannot contain location blocks.
@end table
@end deftp
+@anchor{Varnish Cache}
@subsubheading Varnish Cache
@cindex Varnish
Varnish is a fast cache server that sits in between web applications
@@ -28610,6 +28690,7 @@ Additional arguments to pass to the @command{varnishd} process.
@end table
@end deftp
+@anchor{Patchwork}
@subsubheading Patchwork
@cindex Patchwork
Patchwork is a patch tracking system. It can collect patches sent to a
@@ -28784,6 +28865,7 @@ The port on which to connect to the database.
@end table
@end deftp
+@anchor{Mumi}
@subsubheading Mumi
@cindex Mumi, Debbugs Web interface
@@ -28821,6 +28903,7 @@ mailutils, GNU@tie{}Mailutils}.
@end deftp
+@anchor{FastCGI}
@subsubheading FastCGI
@cindex fastcgi
@cindex fcgiwrap
@@ -29065,6 +29148,7 @@ A simple setup for cat-avatar-generator can look like this:
%base-services))
@end lisp
+@anchor{Hpcguix-web}
@subsubheading Hpcguix-web
@cindex hpcguix-web
@@ -29147,6 +29231,7 @@ Thus, make sure to add @code{nss-certs} or another certificate package to the
more information on X.509 certificates.
@end quotation
+@anchor{gmnisrv}
@subsubheading gmnisrv
@cindex gmnisrv
@@ -29181,6 +29266,7 @@ gmnisrv} and @command{man gmnisrv.ini}.
@end table
@end deftp
+@anchor{Agate}
@subsubheading Agate
@cindex agate
@@ -29460,7 +29546,14 @@ an @emph{authoritative} DNS server for multiple zones, slave or master.
This service uses @uref{https://www.knot-dns.cz/, Knot DNS}. And also a
caching and forwarding DNS server for the LAN, which uses
@uref{http://www.thekelleys.org.uk/dnsmasq/doc.html, dnsmasq}.
+@menu
+* Knot Service:: A DNS server.
+* Knot Resolver Service:: A DNS resolver service based on Knot.
+* Dnsmasq Service:: A DNS caching and DHCP server for small networks.
+* ddclient Service:: Takes care of automatically updating DNS entries.
+@end menu
+@anchor{Knot Service}
@subsubheading Knot Service
An example configuration of an authoritative server for two zones, one master
@@ -29920,6 +30013,7 @@ The list of knot-zone-configuration used by this configuration.
@end table
@end deftp
+@anchor{Knot Resolver Service}
@subsubheading Knot Resolver Service
@deffn {Scheme Variable} knot-resolver-service-type
@@ -29958,6 +30052,7 @@ Number of milliseconds for @code{kres-cache-gc} to periodically trim the cache.
@end deftp
+@anchor{Dnsmasq Service}
@subsubheading Dnsmasq Service
@deffn {Scheme Variable} dnsmasq-service-type
@@ -30098,6 +30193,7 @@ network or obtained a DHCP lease from dnsmasq.
@end table
@end deftp
+@anchor{ddclient Service}
@subsubheading ddclient Service
@cindex ddclient
@@ -30213,7 +30309,14 @@ Defaults to @samp{()}.
The @code{(gnu services vpn)} module provides services related to
@dfn{virtual private networks} (VPNs).
+@menu
+* Bitmask:: A VPN client
+* OpenVPN:: A OpenVPN @emph{client} service.
+* strongSwan:: Configures strongSwan for IPsec.
+* Wireguard:: A Wireguard tunnel interface.
+@end menu
+@anchor{Bitmask}
@subsubheading Bitmask
@defvr {Scheme Variable} bitmask-service-type
@@ -30223,6 +30326,7 @@ the client expects an active polkit-agent, which is either run by your
desktop-environment or should be run manually.
@end defvr
+@anchor{OpenVPN}
@subsubheading OpenVPN
It provides a @emph{client} service for your machine to connect to a
@@ -30603,7 +30707,8 @@ Defaults to @samp{#f}.
@c %end of automatic openvpn-server documentation
-@subheading strongSwan
+@anchor{strongSwan}
+@subsubheading strongSwan
Currently, the strongSwan service only provides legacy-style configuration with
@file{ipsec.conf} and @file{ipsec.secrets} files.
@@ -30640,6 +30745,7 @@ The file name of your @file{ipsec.secrets}. If not @code{#f}, then this and
@end table
@end deftp
+@anchor{Wireguard}
@subsubheading Wireguard
@defvr {Scheme Variable} wireguard-service-type
@@ -30729,6 +30835,15 @@ While it is possible to use the individual components that together make
up a Network File System service, we recommended to configure an NFS
server with the @code{nfs-service-type}.
+@menu
+* NFS Service:: Takes care of setting up all NFS component services, etc.
+* RPC Bind Service:: Maps program numbers into universal addresses.
+* Pipefs Pseudo File System:: Used to transfer NFS related data between the kernel and user space.
+* GSS Daemon Service:: Strong security for RPC based protocols.
+* IDMAP Daemon Service:: Mapping between user IDs and user names.
+@end menu
+
+@anchor{NFS Service}
@subsubheading NFS Service
@cindex NFS, server
@@ -30803,6 +30918,7 @@ is a list of symbols. Any of these symbols are valid: @code{nfsd},
If you don't need a complete NFS service or prefer to build it yourself
you can use the individual component services that are documented below.
+@anchor{RPC Bind Service}
@subsubheading RPC Bind Service
@cindex rpcbind
@@ -30831,6 +30947,7 @@ instance.
@end deftp
+@anchor{Pipefs Pseudo File System}
@subsubheading Pipefs Pseudo File System
@cindex pipefs
@cindex rpc_pipefs
@@ -30852,6 +30969,7 @@ The directory to which the file system is to be attached.
@end deftp
+@anchor{GSS Daemon Service}
@subsubheading GSS Daemon Service
@cindex GSSD
@cindex GSS
@@ -30881,6 +30999,7 @@ The directory where the pipefs file system is mounted.
@end deftp
+@anchor{IDMAP Daemon Service}
@subsubheading IDMAP Daemon Service
@cindex idmapd
@cindex name mapper
@@ -30915,14 +31034,22 @@ The verbosity level of the daemon.
@node Continuous Integration
@subsection Continuous Integration
-
@cindex continuous integration
+
+The @code{(gnu services cuirass)} module provides the following service.
+@menu
+* Cuirass:: A continuous integration tool for Guix.
+* Cuirass remote building:: Distribute builds to several workers.
+* Laminar:: A lightweight and modular Continuous Integration service.
+@end menu
+
+@anchor{Cuirass}
+@subsubheading Cuirass
+
@uref{https://guix.gnu.org/cuirass/, Cuirass} is a continuous
integration tool for Guix. It can be used both for development and for
providing substitutes to others (@pxref{Substitutes}).
-The @code{(gnu services cuirass)} module provides the following service.
-
@defvr {Scheme Procedure} cuirass-service-type
The type of the Cuirass service. Its value must be a
@code{cuirass-configuration} object, as described below.
@@ -31040,6 +31167,7 @@ Extra options to pass when running the Cuirass processes.
@end deftp
@cindex remote build
+@anchor{Cuirass remote building}
@subsubheading Cuirass remote building
Cuirass supports two mechanisms to build derivations.
@@ -31141,6 +31269,7 @@ the store items being published.
@end table
@end deftp
+@anchor{Laminar}
@subsubheading Laminar
@uref{https://laminar.ohwg.net/, Laminar} is a lightweight and modular
@@ -31202,8 +31331,14 @@ Base URL to use for links to laminar itself.
@node Power Management Services
@subsection Power Management Services
+@menu
+* TLP daemon:: A Linux power management tool.
+* Thermald daemon:: An interface to thermald, a CPU frequency scaling service.
+@end menu
+
@cindex tlp
@cindex power management with TLP
+@anchor{TLP daemon}
@subsubheading TLP daemon
The @code{(gnu services pm)} module provides a Guix service definition
@@ -31736,6 +31871,7 @@ Defaults to @samp{#f}.
@cindex thermald
@cindex CPU frequency scaling with thermald
+@anchor{Thermald daemon}
@subsubheading Thermald daemon
The @code{(gnu services pm)} module provides an interface to
@@ -31771,7 +31907,12 @@ Package object of thermald.
The @code{(gnu services audio)} module provides a service to start MPD
(the Music Player Daemon).
+@menu
+* Music Player Daemon:: Can be controlled from the local machine or over the network.
+@end menu
+
@cindex mpd
+@anchor{Music Player Daemon}
@subsubheading Music Player Daemon
The Music Player Daemon (MPD) is a service that can play music while
@@ -31890,7 +32031,16 @@ an HTTP audio streaming output.
The @code{(gnu services virtualization)} module provides services for
the libvirt and virtlog daemons, as well as other virtualization-related
services.
+@menu
+* Libvirt daemon:: Server side daemon of the libvirt system.
+* Virtlog daemon:: Manage logs from virtual machine consoles.
+* Transparent Emulation with QEMU:: Emulate binaries built for different architectures.
+* QEMU Guest Agent:: Provides control over the emulated system to the host.
+* The Hurd in a Virtual Machine:: Run GNU/Hurd in a virtual machine (childhurd).
+* Ganeti:: A virtual machine management system with cluster failover.
+@end menu
+@anchor{Libvirt daemon}
@subsubheading Libvirt daemon
@code{libvirtd} is the server side daemon component of the libvirt
@@ -32454,6 +32604,7 @@ Defaults to @samp{5}.
@c %end of autogenerated docs
+@anchor{Virtlog daemon}
@subsubheading Virtlog daemon
The virtlogd service is a server side daemon component of libvirt that is
used to manage logs from virtual machine consoles.
@@ -32599,6 +32750,7 @@ Defaults to @samp{3}
@end deftypevr
@anchor{transparent-emulation-qemu}
+@anchor{Transparent Emulation with QEMU}
@subsubheading Transparent Emulation with QEMU
@cindex emulation
@@ -32679,6 +32831,7 @@ Return the name of @var{platform}---a string such as @code{"arm"}.
@end deffn
+@anchor{QEMU Guest Agent}
@subsubheading QEMU Guest Agent
@cindex emulation
@@ -32726,6 +32879,7 @@ host. If empty, QEMU uses a default file name.
@end deftp
+@anchor{The Hurd in a Virtual Machine}
@subsubheading The Hurd in a Virtual Machine
@cindex @code{hurd}
@@ -32905,6 +33059,7 @@ the @code{--snapshot} flag using something along these lines:
(options '())))
@end lisp
+@anchor{Ganeti}
@subsubheading Ganeti
@cindex ganeti
@@ -33566,6 +33721,11 @@ the @code{git://} unsecured TCP-based protocol, extending the
@code{nginx} web server to proxy some requests to
@code{git-http-backend}, or providing a web interface with
@code{cgit-service-type}.
+@menu
+* Cgit Service:: A web frontend for Git repositories written in C
+* Gitolite Service:: A tool for hosting Git repositories on a central ser