Subject: [bug#56145] [PATCH 1/5] doc: Add menus to Services sub-sections (part 1/2).

From: Hartmut Goebel <[email-masked]>
Date: Wed, 22 Jun 2022 17:55:06 +0200

* doc/guix.texi (Services)[Database Services, Mail Services, Messaging
  Services, Telephony Services, File-Sharing Services, Monitoring Services,
  Kerberos Services, Web Services, DNS Services, Network File System, Power
  Management Services, Audio Services, Virtualization Services, Version
  Control Services, Game Services, Guix Services, Linux Services,
  Miscellaneous Services]: Ensure @anchors exist for each heading and create a
  @menu at the top of the section.
  [Continuous Integration]: Same and add a heading for Cuirass.
  [VPN Services]: Same and change heading level of "strongSwan" to match the
  other headings.
---
 doc/guix.texi | 221 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 217 insertions(+), 4 deletions(-)

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 server.
+* Gitile Service::    A Git forge for viewing public git repository contents from a web browser.
+@end menu
 
 @deffn {Scheme Procedure} git-daemon-service [#:config (git-daemon-configuration)]
 
@@ -33702,6 +33862,7 @@ HTTPS@.  You will also need to add an @code{fcgiwrap} proxy to your
 system services.  @xref{Web Services}.
 @end deffn
 
+@anchor{Cgit Service}
 @subsubheading Cgit Service
 
 @cindex Cgit service
@@ -34653,6 +34814,7 @@ could instantiate a cgit service like this:
           (cgitrc "")))
 @end lisp
 
+@anchor{Gitolite Service}
 @subsubheading Gitolite Service
 
 @cindex Gitolite service
@@ -34761,6 +34923,7 @@ This setting controls the commands and features to enable within Gitolite.
 @end deftp

+@anchor{Gitile Service}
 @subsubheading Gitile Service
 
 @cindex Gitile service
@@ -34895,6 +35058,11 @@ like to serve.
 @node Game Services
 @subsection Game Services
 
+@menu
+* The Battle for Wesnoth Service::  A fantasy, turn based tactical strategy game.
+@end menu
+
+@anchor{The Battle for Wesnoth Service}
 @subsubheading The Battle for Wesnoth Service
 @cindex wesnothd
 @uref{https://wesnoth.org, The Battle for Wesnoth} is a fantasy, turn
@@ -35010,6 +35178,13 @@ The complete list of possible options can be found in the man page for
 @node Guix Services
 @subsection Guix Services
 
+@menu
+* Guix Build Coordinator:: Aids in distributing derivation builds.
+* Guix Data Service::      Processes, stores and provides data about GNU Guix.
+* Nar Herder::             A utility for managing a collection of nars.
+@end menu
+
+@anchor{Guix Build Coordinator}
 @subsubheading Guix Build Coordinator
 The @uref{https://git.cbaines.net/guix/build-coordinator/,Guix Build
 Coordinator} aids in distributing derivation builds among machines
@@ -35239,6 +35414,7 @@ processing them again if the service is restarted.
 @end table
 @end deftp
 
+@anchor{Guix Data Service}
 @subsubheading Guix Data Service
 The @uref{http://data.guix.gnu.org,Guix Data Service} processes, stores
 and provides data about GNU Guix.  This includes information about
@@ -35291,6 +35467,7 @@ Extra command line options for @code{guix-data-service-process-jobs}.
 @end table
 @end deftp
 
+@anchor{Nar Herder}
 @subsubheading Nar Herder
 The @uref{https://git.cbaines.net/guix/nar-herder/about/,Nar Herder} is
 a utility for managing a collection of nars.
@@ -35384,10 +35561,18 @@ individual requests.
 @node Linux Services
 @subsection Linux Services
 
+@menu
+* Early OOM Service::            A minimalist out of memory (OOM) daemon.
+* Kernel Module Loader Service:: Load loadable kernel modules at boot.
+* Rasdaemon Service::            Monitors platform RAS (Reliability, Availability, and Serviceability) reports from Linux kernel trace events.
+* Zram Device Service::          A compressed swap device in system memory.
+@end menu
+
 @cindex oom
 @cindex out of memory killer
 @cindex earlyoom
 @cindex early out of memory daemon
+@anchor{Early OOM Service}
 @subsubheading Early OOM Service
 
 @uref{https://github.com/rfjakob/earlyoom,Early OOM}, also known as
@@ -35448,6 +35633,7 @@ notifications.
 
 @cindex modprobe
 @cindex kernel module loader
+@anchor{Kernel Module Loader Service}
 @subsubheading Kernel Module Loader Service
 
 The kernel module loader service allows one to load loadable kernel
@@ -35485,6 +35671,7 @@ parameters, can be done as follow:
 
 @cindex rasdaemon
 @cindex Platform Reliability, Availability and Serviceability daemon
+@anchor{Rasdaemon Service}
 @subsubheading Rasdaemon Service
 
 The Rasdaemon service provides a daemon which monitors platform
@@ -35566,6 +35753,7 @@ The database location is hard-coded to @file{/var/lib/rasdaemon/ras-mc_event.db}
 @cindex zram
 @cindex compressed swap
 @cindex Compressed RAM-based block devices
+@anchor{Zram Device Service}
 @subsubheading Zram Device Service
 
 The Zram device service provides a compressed swap device in system
@@ -35653,7 +35841,22 @@ An integer specifying the baud rate of the tty.
 @node Miscellaneous Services
 @subsection Miscellaneous Services
 
+@menu
+* Fingerprint Service::    A DBus service to read and identify fingerprints
+* System Control Service:: Configure kernel parameters at boot.
+* PC/SC Smart Card Daemon Service:: Coordinate communications with smart card readers.
+* Lirc Service::           Decodes infrared signals from remote controls.
+* Spice Service::          Runs VDAGENT for sharing the clipboard with a VM,
+* inputattach Service::    Use Wacom tablets, touchscreens, or joysticks with the Xorg.
+* Dictionary Service::     Runs the @code{dicod} DICT server (RFC 2229).
+* Docker Service::         Runs the Docker daemon.
+* Auditd Service::         Tracks security-relevant information on your system.
+* R-Shiny service::        Run a webapp created with @code{r-shiny}.
+* Nix service::            Run build daemon of the Nix package manager.
+@end menu
+
 @cindex fingerprint
+@anchor{Fingerprint Service}
 @subsubheading Fingerprint Service
 
 The @code{(gnu services authentication)} module provides a DBus service to
@@ -35669,6 +35872,7 @@ reading capability.
 @end defvr
 
 @cindex sysctl
+@anchor{System Control Service}
 @subsubheading System Control Service
 
 The @code{(gnu services sysctl)} provides a service to configure kernel
@@ -35719,6 +35923,7 @@ on Guix System.
 @end defvr
 
 @cindex pcscd
+@anchor{PC/SC Smart Card Daemon Service}
 @subsubheading PC/SC Smart Card Daemon Service
 
 The @code{(gnu services security-token)} module provides the following service
@@ -35750,6 +35955,7 @@ under @file{pcsc/drivers} in the store directory of the package.
 @end deftp
 
 @cindex lirc
+@anchor{Lirc Service}
 @subsubheading Lirc Service
 
 The @code{(gnu services lirc)} module provides the following service.
@@ -35769,6 +35975,7 @@ passed to @command{lircd}.
 @end deffn
 
 @cindex spice
+@anchor{Spice Service}
 @subsubheading Spice Service
 
 The @code{(gnu services spice)} module provides the following service.
@@ -35780,6 +35987,7 @@ resolution when the graphical console window resizes.
 @end deffn
 
 @cindex inputattach
+@anchor{inputattach Service}
 @subsubheading inputattach Service
 
 @cindex tablet input, for Xorg
@@ -35811,6 +36019,7 @@ If true, this must be the name of a file to log messages to.
 @end table
 @end deftp
 
+@anchor{Dictionary Service}
 @subsubheading Dictionary Service
 @cindex dictionary
 The @code{(gnu services dict)} module provides the following service:
@@ -35915,6 +36124,7 @@ The following is an example @code{dicod-service} configuration.
 @end lisp
 
 @cindex Docker
+@anchor{Docker Service}
 @subsubheading Docker Service
 
 The @code{(gnu services docker)} module provides the following services.
@@ -35980,6 +36190,7 @@ setuid-root (@pxref{Setuid Programs}) such that unprivileged users can invoke
 @end defvr
 
 @cindex Audit
+@anchor{Auditd Service}
 @subsubheading Auditd Service
 
 The @code{(gnu services auditd)} module provides the following service.
@@ -36036,6 +36247,7 @@ instantiate on startup.
 @end deftp
 
 @cindex rshiny
+@anchor{R-Shiny service}
 @subsubheading R-Shiny service
 
 The @code{(gnu services science)} module provides the following service.
@@ -36083,6 +36295,7 @@ runApp(launch.browser=0, port=4202)~%\n"
 @end defvr
 
 @cindex Nix
+@anchor{Nix service}
 @subsubheading Nix service
 
 The @code{(gnu services nix)} module provides the following service.
-- 
2.30.4