This is guix.es.info, produced by makeinfo version 6.8 from
guix.es.texi.

Copyright © 2012–2025 Ludovic Courtès
Copyright © 2013, 2014, 2016, 2024 Andreas Enge
Copyright © 2013 Nikita Karetnikov
Copyright © 2014, 2015, 2016 Alex Kost
Copyright © 2015, 2016 Mathieu Lirzin
Copyright © 2014 Pierre-Antoine Rault
Copyright © 2015 Taylan Ulrich Bayırlı/Kammer
Copyright © 2015, 2016, 2017, 2019, 2020, 2021, 2023, 2025 Leo Famulari
Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Ricardo
Wurmus
Copyright © 2016 Ben Woodcroft
Copyright © 2016, 2017, 2018, 2021 Chris Marusich
Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2025 Efraim
Flashner
Copyright © 2016 John Darrington
Copyright © 2016, 2017 Nikita Gillmann
Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025
Janneke Nieuwenhuizen
Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Julien Lepiller
Copyright © 2016 Alex ter Weele
Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Christopher Baines
Copyright © 2017, 2018, 2019 Clément Lassieur
Copyright © 2017, 2018, 2020, 2021, 2022 Mathieu Othacehe
Copyright © 2017 Federico Beffa
Copyright © 2017, 2018, 2024, 2025 Carlo Zancanaro
Copyright © 2017 Thomas Danckaert
Copyright © 2017 humanitiesNerd
Copyright © 2017, 2021 Christine Lemmer-Webber
Copyright © 2017, 2018, 2019, 2020, 2021, 2022 Marius Bakke
Copyright © 2017, 2019, 2020, 2022 Hartmut Goebel
Copyright © 2017, 2019–2025 Maxim Cournoyer
Copyright © 2017–2022 Tobias Geerinckx-Rice
Copyright © 2017 George Clemmer
Copyright © 2017 Andy Wingo
Copyright © 2017, 2018, 2019, 2020, 2023, 2024, 2025 Arun Isaac
Copyright © 2017 nee
Copyright © 2018 Rutger Helling
Copyright © 2018, 2021, 2023, 2025 Oleg Pykhalov
Copyright © 2018 Mike Gerwitz
Copyright © 2018 Pierre-Antoine Rouby
Copyright © 2018, 2019 Gábor Boskovits
Copyright © 2018, 2019, 2020, 2022, 2023, 2024 Florian Pelz
Copyright © 2018 Laura Lazzati
Copyright © 2018 Alex Vong
Copyright © 2019 Josh Holland
Copyright © 2019, 2020 Diego Nicola Barbato
Copyright © 2019 Ivan Petkov
Copyright © 2019 Jakob L. Kreuze
Copyright © 2019 Kyle Andrews
Copyright © 2019 Alex Griffin
Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant
Copyright © 2020 Liliana Marie Prikler
Copyright © 2019, 2020, 2021, 2022, 2023 Simon Tournier
Copyright © 2020 Wiktor Żelazny
Copyright © 2020 Damien Cassou
Copyright © 2020 Jakub Kądziołka
Copyright © 2020 Jack Hill
Copyright © 2020 Naga Malleswari
Copyright © 2020, 2021 Brice Waegeneire
Copyright © 2020 R Veera Kumar
Copyright © 2020, 2021, 2022 Pierre Langlois
Copyright © 2020 pinoaffe
Copyright © 2020, 2023 André Batista
Copyright © 2020, 2021 Alexandru-Sergiu Marton
Copyright © 2020 raingloom
Copyright © 2020 Daniel Brooks
Copyright © 2020 John Soo
Copyright © 2020 Jonathan Brielmaier
Copyright © 2020 Edgar Vincent
Copyright © 2021, 2022 Maxime Devos
Copyright © 2021 B. Wilson
Copyright © 2021 Xinglu Chen
Copyright © 2021 Raghav Gururajan
Copyright © 2021 Domagoj Stolfa
Copyright © 2021 Hui Lu
Copyright © 2021 pukkamustard
Copyright © 2021 Alice Brenon
Copyright © 2021-2023 Josselin Poiret
Copyright © 2021, 2023 muradm
Copyright © 2021, 2022 Andrew Tropin
Copyright © 2021 Sarah Morgensen
Copyright © 2022 Remco van ’t Veer
Copyright © 2022 Aleksandr Vityazev
Copyright © 2022 Philip M^{c}Grath
Copyright © 2022 Karl Hallsby
Copyright © 2022 Justin Veilleux
Copyright © 2022 Reily Siegel
Copyright © 2022 Simon Streit
Copyright © 2022 (
Copyright © 2022 John Kehayias
Copyright © 2022⁠–⁠2023 Bruno Victal
Copyright © 2022 Ivan Vilata-i-Balaguer
Copyright © 2023-2025 Giacomo Leidi
Copyright © 2022 Antero Mejr
Copyright © 2023 Karl Hallsby
Copyright © 2023 Nathaniel Nicandro
Copyright © 2023 Tanguy Le Carrour
Copyright © 2023-2024 Zheng Junjie
Copyright © 2023 Brian Cully
Copyright © 2023 Felix Lechner
Copyright © 2023 Foundation Devices, Inc.
Copyright © 2023 Thomas Ieong
Copyright © 2023 Saku Laesvuori
Copyright © 2023 Graham James Addis
Copyright © 2023-2025 Tomas Volf
Copyright © 2024, 2025 Herman Rimm
Copyright © 2024 Matthew Trzcinski
Copyright © 2024 Richard Sent
Copyright © 2024 Dariqq
Copyright © 2024 Denis ’GNUtoo’ Carikli
Copyright © 2024 Fabio Natali
Copyright © 2024 Arnaud Daby-Seesaram
Copyright © 2024-2025 Nigko Yerden
Copyright © 2024 Troy Figiel
Copyright © 2024 Sharlatan Hellseher
Copyright © 2024 45mg
Copyright © 2024 Greg Hogan
Copyright © 2025 Sören Tempel
Copyright © 2025 Rostislav Svoboda
Copyright © 2025 Zacchaeus
Copyright © 2025 Sergio Pastor Pérez
Copyright © 2024 Evgeny Pisemsky
Copyright © 2025 jgart
Copyright © 2025 Artur Wroblewski
Copyright © 2025 Edouard Klein
Copyright © 2025 Rodion Goritskov
Copyright © 2025 dan
Copyright © 2025 Noé Lopez

   Se garantiza el permiso de copia, distribución y/o modificación de
este documento bajo los términos de la licencia de documentación libre
de GNU (GNU Free Documentation License), versión 1.3 o cualquier versión
posterior publicada por la Free Software Foundation; sin secciones
invariantes, sin textos de cubierta delantera ni trasera. Una copia de
la licencia está incluida en la sección titulada “GNU Free Documentation
License”.
INFO-DIR-SECTION Administración del sistema
START-INFO-DIR-ENTRY
* Guix.es: (guix.es).        Gestión del software instalado y la
                               configuración del sistema.
* guix package: (guix.es)Invocación de guix package.  Instalación, borrado y
                                                        actualización de
                                                        paquetes.
* guix gc: (guix.es)Invocación de guix gc.  Recuperar espacio de disco sin
                                              usar.
* guix pull: (guix.es)Invocación de guix pull.  Actualización de la lista
                                                  disponible de paquetes.
* guix system: (guix.es)Invocación de guix system.  Gestión de la
                                                      configuración del
                                                      sistema operativo.
* guix deploy: (guix.es)Invocación de guix deploy.  Gestión de
                                                      configuraciones de
                                                      sistemas operativos en
                                                      máquinas remotas.
END-INFO-DIR-ENTRY

INFO-DIR-SECTION Desarrollo de software
START-INFO-DIR-ENTRY
* guix shell: (guix.es)Invocación de guix shell.  Creación de entornos de
                                                    software.
* guix environment: (guix.es)Invocación de guix environment.  Construcción
                                                                de entornos de
                                                                desarrollo con
                                                                Guix.
* guix build: (guix.es)Invocación de guix build.  Construcción de paquetes.
* guix pack: (guix.es)Invocación de guix pack.  Creación de empaquetados
                                                  binarios.
END-INFO-DIR-ENTRY


File: guix.es.info,  Node: Ejecución de tareas programadas,  Next: Rotación del registro de mensajes,  Prev: Servicios base,  Up: Servicios

11.10.2 Ejecución de tareas programadas
---------------------------------------

It is often useful to have system tasks run periodically. This can be
achieved by defining Shepherd “timers” or by using the historical and
somewhat less flexible mcron service.

11.10.2.1 Shepherd Timers
.........................

The Shepherd supports running jobs periodically by defining “timers”, a
special kind of service. A Shepherd timer can be defined like another
Shepherd service, but with specific ‘start’ and ‘stop’ methods (*note
Servicios de Shepherd::):

     ;; Defining a timer, verbosely.
     (shepherd-service
      (provision '(updatedb))
      (requirement '(user-processes))
      (modules '((shepherd service timer)))
      (start #~(make-timer-constructor
                ;; Everyday at 3AM (using Vixie cron syntax).
                (cron-string->calendar-event "0 3 * * *")
                (command '(#$(file-append findutils "/bin/updatedb")))
                #:wait-for-termination? #t))
      (stop #~(make-timer-destructor))
      (documentation "Periodically run 'updatedb'.")
      (actions (list shepherd-trigger-action)))

   This is quite some boilerplate so you can instead use this equivalent
shorthand notation:

     ;; Equivalent timer definition, but shorter.
     (shepherd-timer '(updatedb) "0 3 * * *"
                     #~(#$(file-append findutils "/bin/updatedb"))
                     #:requirement '(user-processes))

   Este procedimiento está definido como sigue.

 -- Procedure: shepherd-timer PROVISION SCHEDULE COMMAND [#:requirement
          '()]  [#:documentation
     %default-timer-documentation] Return a Shepherd service with the
     given PROVISION periodically running COMMAND, a list-valued gexp,
     according to SCHEDULE, a string in Vixie cron syntax or a gexp
     providing a Shepherd calendar event. DOCUMENTATION is the string
     that appears when running ‘herd doc SERVICE’.

   El ejemplo previo muestra cómo definir un temporizador y añadirlo a
su configuración del sistema operativo.

     (use-modules (gnu))
     (use-service-modules shepherd)
     (use-package-modules base)

     (define updatedb-timer
       ;; Run 'updatedb' at 3AM everyday.
       (shepherd-timer '(updatedb)
                       "0 3 * * *"  ;Vixie cron syntax
                       #~(#$(file-append findutils "/bin/updatedb")
                          "--prunepaths=/tmp /var/tmp /gnu/store")
                       #:requirement '(user-processes)))

     (define garbage-collection-timer
       ;; Run 'guix gc' everyday at 5AM.
       (shepherd-timer '(garbage-collection)
                       #~(calendar-event #:hours '(5) #:minutes '(0))
                       #~("/run/current-system/profile/bin/guix"
                          "gc" "-F" "10G")
                       #:requirement '(guix-daemon)))

     (operating-system
       ;; ...

       ;; Extend the Shepherd service with additional timers
       ;; using 'simple-service'.
       (services (cons (simple-service 'my-timers
                                        shepherd-root-service-type
                                        (list garbage-collection-timer
                                              updatedb-timer))
                       %base-services)))

   The resulting system contains these two services, which can be
inspected with ‘herd status’. They can also be triggered manually:

     herd trigger garbage-collection

   *Note (shepherd)Timers:: for more information on Shepherd timers.

11.10.2.2 Mcron
...............

Alternatively, the ‘(gnu services mcron)’ module provides an interface
to GNU mcron, a daemon to run jobs at scheduled times (*note
(mcron)Top::). GNU mcron is similar to the traditional Unix ‘cron’
daemon; the main difference is that it is implemented in Guile Scheme.
It is overall less convenient than Shepherd timers: individual jobs
cannot depend on specific Shepherd services, logging is coarse-grain
(one file for all the jobs), jobs may not be inspected, updated, or
triggered manually.

     Nota: For the reasons given above, we recommend using Shepherd
     timers rather than mcron for your periodic tasks.

   El siguiente ejemplo define un sistema operativo que ejecuta las
órdenes ‘updatedb’ (*note (find)Invoking updatedb::) y ‘guix gc’ (*note
Invocación de guix gc::) de manera diaria, así como la orden ‘mkid’ como
una usuaria sin privilegios (*note (idutils)mkid invocation::). Usa
expresiones-g para introducir definiciones de trabajos que serán
proporcionados a mcron (*note Expresiones-G::).

     (use-modules (guix) (gnu) (gnu services mcron))
     (use-package-modules base idutils)

     (define updatedb-job
       ;; Run 'updatedb' at 3AM every day.  Here we write the
       ;; job's action as a Scheme procedure.
       #~(job '(next-hour '(3))
              (lambda ()
                (system* (string-append #$findutils "/bin/updatedb")
                         "--prunepaths=/tmp /var/tmp /gnu/store"))
              "updatedb"))

     (define trabajo-recolector-basura
       ;; Recolecta basura 5 minutos después de media noche,
       ;; todos los días. La acción del trabajo es una orden
       ;; del shell.
       #~(job "5 0 * * *"            ;sintaxis de Vixie cron
              "guix gc -F 1G"))

     (define trabajo-idutils
       ;; Actualiza el índice de la base de datos como "carlos" a las
       ;; 12:15 y a las 19:15.  Esto se ejecuta desde su directorio.
       #~(job '(next-minute-from (next-hour '(12 19)) '(15))
              (string-append #$idutils "/bin/mkid src")
              #:user "carlos"))

     (operating-system
       ;; ...

       ;; %BASE-SERVICES already includes an instance of
       ;; 'mcron-service-type', which we extend with additional
       ;; jobs using 'simple-service'.
       (services (cons (simple-service 'my-cron-jobs
                                        mcron-service-type
                                        (list garbage-collector-job
                                              updatedb-job
                                              idutils-job))
                       %base-services)))

     Tip: When providing the action of a job specification as a
     procedure, you should provide an explicit name for the job via the
     optional 3rd argument as done in the ‘updatedb-job’ example above.
     Otherwise, the job would appear as “Lambda function” in the output
     of ‘herd schedule mcron’, which is not nearly descriptive enough!

     Tip: Avoid calling the Guile procedures ‘execl’, ‘execle’ or
     ‘execlp’ inside a job specification, else mcron won’t be able to
     output the completion status of the job.

   Para trabajos más complejos definidos en Scheme donde necesita
control en el ámbito global, por ejemplo para introducir una forma
‘use-modules’, puede mover su código a un programa separado usando el
procedimiento ‘program-file’ del módulo ‘(guix gexp)’ (*note
Expresiones-G::). El siguiente ejemplo ilustra este caso.

     (define %tarea-alerta-bateria
       ;; Pita cuando la carga de la batería es inferior a %CARGA-MIN
       #~(job
          '(next-minute (range 0 60 1))
          #$(program-file
             "alerta-batería.scm"
             (with-imported-modules (source-module-closure
                                     '((guix build utils)))
               #~(begin
                   (use-modules (guix build utils)
                                (ice-9 popen)
                                (ice-9 regex)
                                (ice-9 textual-ports)
                                (srfi srfi-2))
                   (define %carga-min 20)

                   (setenv "LC_ALL" "C")     ;Procesado de cadenas en inglés
                   (and-let* ((entrada (open-pipe*
                                        OPEN_READ
                                        #$(file-append acpi "/bin/acpi")))
                              (salida (get-string-all entrada))
                              (m (string-match "Discharging, ([0-9]+)%" output))
                              (carga (string->number (match:substring m 1)))
                              ((< carga %carga-min)))
                     (setenv "LC_ALL" "")     ;Mensaje de salida traducido
                     (format #t "aviso: La carga de la batería es baja (~a%)~%"
                             carga)
                     (invoke #$(file-append beep "/bin/beep") "-r5")))))))

   *Note mcron job specifications: (mcron)Guile Syntax, para más
información sobre las especificaciones de trabajos de mcron. A
continuación se encuentra la referencia del servicio mcron.

   En un sistema en ejecución puede usar la acción ‘schedule’ del
servicio para visualizar los siguientes trabajos mcron que se
ejecutarán:

     # herd schedule mcron

El ejemplo previo enumera las siguientes cinco tareas que se ejecutarán,
pero también puede especificar el número de tareas a mostrar:

     # herd schedule mcron 10

 -- Variable: mcron-service-type
     Este es el tipo del servicio ‘mcron’, cuyo valor es un objeto
     ‘mcron-configuration’.

     This service type can be the target of a service extension that
     provides additional job specifications (*note Composición de
     servicios::). In other words, it is possible to define services
     that provide additional mcron jobs to run.

 -- Tipo de datos: mcron-configuration
     Available ‘mcron-configuration’ fields are:

     ‘mcron’ (default: ‘mcron’) (type: file-like)
          El paquete mcron usado.

     ‘jobs’ (default: ‘'()’) (type: list-of-gexps)
          This is a list of gexps (*note Expresiones-G::), where each
          gexp corresponds to an mcron job specification (*note mcron
          job specifications: (mcron)Syntax.).

     ‘log?’ (default: ‘#t’) (type: boolean)
          Log messages to standard output.

     ‘log-file’ (default: ‘"/var/log/mcron.log"’) (type: string)
          Log file location.

     ‘log-format’ (default: ‘"~1@*~a ~a: ~a~%"’) (type: string)
          ‘(ice-9 format)’ format string for log messages. The default
          value produces messages like ‘PID NAME: MESSAGE’ (*note
          Invoking: (mcron)Invoking mcron.). Each message is also
          prefixed by a timestamp by GNU Shepherd.

     ‘date-format’ (type: maybe-string)
          ‘(srfi srfi-19)’ format string for date.


File: guix.es.info,  Node: Rotación del registro de mensajes,  Next: Networking Setup,  Prev: Ejecución de tareas programadas,  Up: Servicios

11.10.3 Rotación del registro de mensajes
-----------------------------------------

Log files such as those found in ‘/var/log’ tend to grow endlessly, so
it’s a good idea to “rotate” them once in a while—i.e., archive their
contents in separate files, possibly compressed. The ‘(gnu services
admin)’ module provides an interface to the log rotation service
provided by the Shepherd (*note (shepherd)Log Rotation Service::).

   This log rotation service is made available through
‘log-rotation-service-type’, which takes a ‘log-rotation-configuration’
record as its value. By default, this provides ‘log-rotation’, a
Shepherd “timed service” that runs periodically—once a week by default.
It automatically knows about the log files produced by Shepherd services
and can be taught about external log files. You can inspect the service
and see when it’s going to run the usual way:

     $ sudo herd status log-rotation
     Status of log-rotation:
       It is running since Mon 09 Dec 2024 03:27:47 PM CET (2 days ago).
       ...

     Upcoming timer alarms:
       Sun 15 Dec 2024 10:00:00 PM CET (in 4 days)
       Sun 22 Dec 2024 10:00:00 PM CET (in 11 days)
       Sun 29 Dec 2024 10:00:00 PM CET (in 18 days)

   You can also list files subject to rotation with ‘herd files
log-rotation’ and trigger rotation manually with ‘herd trigger
log-rotation’.

   This service is part of ‘%base-services’, and thus enabled by
default, with the default settings.

 -- Variable: log-rotation-service-type
     This is the type of the log rotation service. Its associated value
     must be a ‘log-rotation-configuration’ record, as discussed below.

 -- Data Type: log-rotation-configuration
     Available ‘log-rotation-configuration’ fields are:

     ‘provision’ (default: ‘(log-rotation)’) (type: list-of-symbols)
          The name(s) of the log rotation Shepherd service.

     ‘requirement’ (default: ‘(user-processes)’) (type: list-of-symbols)
          Dependencies of the log rotation Shepherd service.

     ‘calendar-event’ (type: gexp)
          Gexp containing the “calendar event” when log rotation occurs.
          *Note (shepherd)Timers::, for more information on calendar
          events.

     ‘external-log-files’ (default: ‘()’) (type: list-of-strings)
          List of file names, external log files that should also be
          rotated.

     ‘compression’ (default: ‘zstd’) (type: gexp-or-symbol)
          The compression method used for rotated log files, one of
          ‘'none’, ‘'gzip’, and ‘'zstd’. Alternatively, it can be a gexp
          that evaluates to a procedure; that procedure gets called with
          the file to be rotated.

     ‘expiry’ (type: gexp-or-integer)
          Age in seconds after which a log file is deleted.

     ‘size-threshold’ (type: gexp-or-integer)
          Size in bytes below which a log file is _not_ rotated.

   Some log files just need to be deleted periodically once they are
old, without any other criterion and without any archival step. This is
the case of build logs stored by ‘guix-daemon’ under
‘/var/log/guix/drvs’ (*note Invocación de guix-daemon::). The
‘log-cleanup’ service addresses this use case. For example,
‘%base-services’ (*note Servicios base::) includes the following:

     ;; Periodically delete old build logs.
     (service log-cleanup-service-type
              (log-cleanup-configuration
               (directory "/var/log/guix/drvs")))

   That ensures build logs do not accumulate endlessly.

 -- Variable: log-cleanup-service-type
     This is the type of the service to delete old logs. Its value must
     be a ‘log-cleanup-configuration’ record as described below.

 -- Data Type: log-cleanup-configuration
     Tipo de datos que representa la configuración de purga del registro
     de mensajes

     ‘directory’
          Name of the directory containing log files.

     ‘expiry’ (default: ‘(* 6 30 24 3600)’)
          Age in seconds after which a file is subject to deletion (six
          months by default).

     ‘schedule’ (default: ‘"30 12 01,08,15,22 * *"’)
          Schedule of the log cleanup job written either as a string in
          traditional cron syntax or as a gexp representing a Shepherd
          calendar event (*note (shepherd)Timers::).

Anonip Service
--------------

Anonip is a privacy filter that removes IP address from web server logs.
This service creates a FIFO and filters any written lines with anonip
before writing the filtered log to a target file.

   The following example sets up the FIFO
‘/var/run/anonip/https.access.log’ and writes the filtered log file
‘/var/log/anonip/https.access.log’.

     (service anonip-service-type
              (anonip-configuration
                (input  "/var/run/anonip/https.access.log")
                (output "/var/log/anonip/https.access.log")))

   Configure your web server to write its logs to the FIFO at
‘/var/run/anonip/https.access.log’ and collect the anonymized log file
at ‘/var/web-logs/https.access.log’.

 -- Data Type: anonip-configuration
     This data type represents the configuration of anonip. It has the
     following parameters:

     ‘anonip’ (default: ‘anonip’)
          The anonip package to use.

     ‘input’
          The file name of the input log file to process. The service
          creates a FIFO of this name. The web server should write its
          logs to this FIFO.

     ‘output’
          The file name of the processed log file. This file is subject
          to log rotation via the Shepherd’s log rotation service (*note
          Rotación del registro de mensajes::).

     The following optional settings may be provided:

     ‘debug?’
          Print debug messages when ‘#true’.

     ‘skip-private?’
          When ‘#true’ do not mask addresses in private ranges.

     ‘column’
          A 1-based indexed column number. Assume IP address is in the
          specified column (default is 1).

     ‘replacement’
          Replacement string in case address parsing fails, e.g.
          ‘"0.0.0.0"’.

     ‘ipv4mask’
          Number of bits to mask in IPv4 addresses.

     ‘ipv6mask’
          Number of bits to mask in IPv6 addresses.

     ‘increment’
          Increment the IP address by the given number. By default this
          is zero.

     ‘delimiter’
          Log delimiter string.

     ‘regex’
          Regular expression for detecting IP addresses. Use this
          instead of ‘column’.


File: guix.es.info,  Node: Networking Setup,  Next: Servicios de red,  Prev: Rotación del registro de mensajes,  Up: Servicios

11.10.4 Networking Setup
------------------------

The ‘(gnu services networking)’ module provides services to configure
network interfaces and set up networking on your machine. Those services
provide different ways for you to set up your machine: by declaring a
static network configuration, by running a Dynamic Host Configuration
Protocol (DHCP) client, or by running daemons such as NetworkManager and
Connman that automate the whole process, automatically adapt to
connectivity changes, and provide a high-level user interface.

   On a laptop, NetworkManager and Connman are by far the most
convenient options, which is why the default desktop services include
NetworkManager (*note ‘%desktop-services’: Servicios de escritorio.).
For a server, or for a virtual machine or a container, static network
configuration or a simple DHCP client are often more appropriate.

   This section describes the various network setup services available,
starting with static network configuration.

 -- Variable: static-networking-service-type
     This is the type for statically-configured network interfaces. Its
     value must be a list of ‘static-networking’ records. Each of them
     declares a set of “addresses”, “routes”, and “links”, as shown
     below.

     Here is the simplest configuration, with only one network interface
     controller (NIC) and only IPv4 connectivity:

          ;; Static networking for one NIC, IPv4-only.
          (service static-networking-service-type
                   (list (static-networking
                          (addresses
                           (list (network-address
                                  (device "eno1")
                                  (value "10.0.2.15/24"))))
                          (routes
                           (list (network-route
                                  (destination "default")
                                  (gateway "10.0.2.2"))))
                          (name-servers '("10.0.2.3")))))

     The snippet above can be added to the ‘services’ field of your
     operating system configuration (*note Uso de la configuración del
     sistema::). It will configure your machine to have 10.0.2.15 as its
     IP address, with a 24-bit netmask for the local network—meaning
     that any 10.0.2.X address is on the local area network (LAN).
     Traffic to addresses outside the local network is routed via
     10.0.2.2. Host names are resolved by sending domain name system
     (DNS) queries to 10.0.2.3.

 -- Data Type: static-networking
     This is the data type representing a static network configuration.

     As an example, here is how you would declare the configuration of a
     machine with a single network interface controller (NIC) available
     as ‘eno1’, and with one IPv4 and one IPv6 address:

          ;; Network configuration for one NIC, IPv4 + IPv6.
          (static-networking
           (addresses (list (network-address
                             (device "eno1")
                             (value "10.0.2.15/24"))
                            (network-address
                             (device "eno1")
                             (value "2001:123:4567:101::1/64"))))
           (routes (list (network-route
                          (destination "default")
                          (gateway "10.0.2.2"))
                         (network-route
                          (destination "default")
                          (gateway "2020:321:4567:42::1"))))
           (name-servers '("10.0.2.3")))

     If you are familiar with the ‘ip’ command of the ‘iproute2’ package
     (https://wiki.linuxfoundation.org/networking/iproute2) found on
     Linux-based systems, the declaration above is equivalent to typing:

          ip address add 10.0.2.15/24 dev eno1
          ip address add 2001:123:4567:101::1/64 dev eno1
          ip route add default via inet 10.0.2.2
          ip route add default via inet6 2020:321:4567:42::1

     Run ‘man 8 ip’ for more info. Venerable GNU/Linux users will
     certainly know how to do it with ‘ifconfig’ and ‘route’, but we’ll
     spare you that.

     The available fields of this data type are as follows:

     ‘addresses’
     ‘links’ (default: ‘'()’)
     ‘routes’ (default: ‘'()’)
          The list of ‘network-address’, ‘network-link’, and
          ‘network-route’ records for this network (see below).

     ‘name-servers’ (default: ‘'()’)
          The list of IP addresses (strings) of domain name servers.
          These IP addresses go to ‘/etc/resolv.conf’.

     ‘provision’ (default: ‘'(networking)’)
          If true, this should be a list of symbols for the Shepherd
          service corresponding to this network configuration.

     ‘requirement’ (default ‘'()’)
          El listado de servicios Shepherd en el cual depende.

 -- Data Type: network-address
     This is the data type representing the IP address of a network
     interface.

     ‘device’
          The name of the network interface for this address—e.g.,
          ‘"eno1"’.

     ‘value’
          The actual IP address and network mask, in CIDR (Classless
          Inter-Domain Routing) notation
          (https://en.wikipedia.org/wiki/CIDR#CIDR_notation), as a
          string.

          For example, ‘"10.0.2.15/24"’ denotes IPv4 address 10.0.2.15
          on a 24-bit sub-network—all 10.0.2.X addresses are on the same
          local network.

     ‘ipv6?’
          Whether ‘value’ denotes an IPv6 address. By default this is
          automatically determined.

 -- Data Type: network-route
     This is the data type representing a network route.

     ‘destination’
          The route destination (a string), either an IP address and
          network mask or ‘"default"’ to denote the default route.

     ‘source’ (default: ‘#f’)
          The route source.

     ‘device’ (predeterminado: ‘#f’)
          The device used for this route—e.g., ‘"eno2"’.

     ‘ipv6?’ (default: auto)
          Whether this is an IPv6 route. By default this is
          automatically determined based on ‘destination’ or ‘gateway’.

     ‘gateway’ (default: ‘#f’)
          IP address (a string) through which traffic is routed.

 -- Data Type: network-link
     Data type for a network link (*note (guile-netlink)Link::). During
     startup, network links are employed to construct or modify existing
     or virtual ethernet links. These ethernet links can be identified
     by their NAME or MAC-ADDRESS. If there is a need to create virtual
     interface, NAME and TYPE fields are required.

     ‘name’
          The name of the link—e.g., ‘"v0p0"’ (default: ‘#f’).

     ‘type’
          A symbol denoting the type of the link—e.g., ‘'veth’ (default:
          ‘#f’).

     ‘mac-address’
          The mac-address of the link—e.g., ‘"98:11:22:33:44:55"’
          (default: ‘#f’).

     ‘arguments’
          List of arguments for this type of link.

   Consider a scenario where a server equipped with a network interface
which has multiple ports. These ports are connected to a switch, which
supports link aggregation
(https://en.wikipedia.org/wiki/Link_aggregation) (also known as bonding
or NIC teaming). The switch uses port channels to consolidate multiple
physical interfaces into one logical interface to provide higher
bandwidth, load balancing, and link redundancy. When a port is added to
a LAG (or link aggregation group), it inherits the properties of the
port-channel. Some of these properties are VLAN membership, trunk
status, and so on.

   VLAN (https://en.wikipedia.org/wiki/Virtual_LAN) (or virtual local
area network) is a logical network that is isolated from other VLANs on
the same physical network. This can be used to segregate traffic,
improve security, and simplify network management.

   With all that in mind let’s configure our static network for the
server. We will bond two existing interfaces together using 802.3ad
schema and on top of it, build a VLAN interface with id 1055. We assign
a static ip to our new VLAN interface.

     (static-networking
      (links (list (network-link
                    (name "bond0")
                    (type 'bond)
                    (arguments '((mode . "802.3ad")
                                 (miimon . 100)
                                 (lacp-active . "on")
                                 (lacp-rate . "fast"))))

                   (network-link
                    (mac-address "98:11:22:33:44:55")
                    (arguments '((master . "bond0"))))

                   (network-link
                    (mac-address "98:11:22:33:44:56")
                    (arguments '((master . "bond0"))))

                   (network-link
                    (name "bond0.1055")
                    (type 'vlan)
                    (arguments '((id . 1055)
                                 (link . "bond0"))))))
      (addresses (list (network-address
                        (value "192.168.1.4/24")
                        (device "bond0.1055")))))

 -- Variable: %loopback-static-networking
     This is the ‘static-networking’ record representing the “loopback
     device”, ‘lo’, for IP addresses 127.0.0.1 and ::1, and providing
     the ‘loopback’ Shepherd service.

 -- Variable: %qemu-static-networking
     This is the ‘static-networking’ record representing network setup
     when using QEMU’s user-mode network stack on ‘eth0’ (*note
     (qemu)Using the user mode network stack::).

 -- Variable: dhcp-client-service-type
     This is the type of services that run DHCLIENT, the ISC Dynamic
     Host Configuration Protocol (DHCP) client.

 -- Data Type: dhcp-client-configuration
     Data type representing the configuration of the ISC DHCP client
     service.

     ‘package’ (predeterminado: ‘isc-dhcp’)
          The ISC DHCP client package to use.

     ‘interfaces’ (default: ‘'all’)
          Either ‘'all’ or the list of interface names that the ISC DHCP
          client should listen on—e.g., ‘'("eno1")’.

          When set to ‘'all’, the ISC DHCP client listens on all the
          available non-loopback interfaces that can be activated.
          Otherwise the ISC DHCP client listens only on the specified
          interfaces.

     ‘config-file’ (predeterminado: ‘#f’)
          The configuration file for the ISC DHCP client.

     ‘version’ (predeterminada: ‘"4"’)
          The DHCP protocol version to use, as a string. Accepted values
          are ‘"4"’ or ‘"6"’ for DHCPv4 or DHCPv6, respectively, as well
          as ‘"4o6"’, for DHCPv4 over DHCPv6 (as specified by RFC 7341).

     ‘shepherd-requirement’ (default: ‘'()’)
     ‘shepherd-provision’ (default: ‘'(networking)’)
          This option can be used to provide a list of symbols naming
          Shepherd services that this service will depend on, such as
          ‘'wpa-supplicant’ or ‘'iwd’ if you require authenticated
          access for encrypted WiFi or Ethernet networks.

          Likewise, ‘shepherd-provision’ is a list of Shepherd service
          names (symbols) provided by this service. You might want to
          change the default value if you intend to run several ISC DHCP
          clients, only one of which provides the ‘networking’ Shepherd
          service.

 -- Variable: dhcpcd-service-type
     This the type for a service running ‘dhcpcd’, a DHCP (Dynamic Host
     Configuration Protocol) client that can be used as a replacement
     for the historical ISC client supported by
     ‘dhcp-client-service-type’.

     Its value must be a ‘dhcpcd-configuration’ record, as described
     below. As an example, consider the following setup which runs
     ‘dhcpcd’ with a local DNS (Domain Name System) resolver:

          (service dhcpcd-service-type
            (dhcpcd-configuration
              (option '("rapid_commit" "interface_mtu"))
              (no-option '("nd_rdnss"
                           "dhcp6_name_servers"
                           "domain_name_servers"
                           "domain_name"
                           "domain_search"))
              (static '("domain_name_servers=127.0.0.1"))
              (no-hook '("hostname"))))

 -- Data Type: dhcpcd-configuration
     Available ‘dhcpcd-configuration’ fields are:

     ‘interfaces’ (default: ‘()’) (type: list)
          List of networking interfaces—e.g., ‘"eth0"’—to start a DHCP
          client for. If no interface is specified (i.e., the list is
          empty) then ‘dhcpcd’ discovers available Ethernet interfaces,
          that can be configured, automatically.

     ‘command-arguments’ (default: ‘("-q" "-q")’) (type: list)
          List of additional command-line options.

     ‘host-name’ (default: ‘""’) (type: maybe-string)
          Host name to send via DHCP, defaults to the current system
          host name.

     ‘duid’ (default: ‘""’) (type: maybe-string)
          DHCPv4 clients require a unique client identifier, this option
          uses the DHCPv6 Unique Identifier as a DHCPv4 client
          identifier as well. For more information, refer to RFC 4361
          (https://www.rfc-editor.org/rfc/rfc4361) and ‘dhcpcd.conf(5)’.

     ‘persistent?’ (default: ‘#t’) (type: boolean)
          When true, automatically de-configure the interface when
          ‘dhcpcd’ exits.

     ‘option’ (default: ‘("rapid_commit" "domain_name_servers" "domain_name" "domain_search" "host_name" "classless_static_routes" "interface_mtu")’) (type: list-of-strings)
          List of options to request from the server.

     ‘require’ (default: ‘("dhcp_server_identifier")’) (type: list-of-strings)
          List of options to require in responses.

     ‘slaac’ (default: ‘"private"’) (type: maybe-string)
          Interface identifier used for SLAAC generated IPv6 addresses.

     ‘no-option’ (default: ‘()’) (type: list-of-strings)
          List of options to remove from the message before it’s
          processed.

     ‘no-hook’ (default: ‘()’) (type: list-of-strings)
          List of hook script which should not be invoked.

     ‘static’ (default: ‘()’) (type: list-of-strings)
          DHCP client can request different options from a DHCP server,
          through ‘static’ it is possible to configure static values for
          selected options. For example,
          ‘"domain_name_servers=127.0.0.1"’.

     ‘vendor-class-id’ (type: maybe-string)
          Set the DHCP Vendor Class (e.g., ‘MSFT’). For more
          information, refer to RFC 2132
          (https://www.rfc-editor.org/rfc/rfc2132#section-9.13).

     ‘client-id’ (type: maybe-string)
          Use the interface hardware address or the given string as a
          client identifier, this is mutually exclusive with the ‘duid’
          option.

     ‘extra-content’ (type: maybe-string)
          Extra content to append to the configuration as-is.

     ‘shepherd-provision’ (default: ‘(networking)’) (type: list-of-symbols)
          This is a list of symbols naming Shepherd services provided by
          this service.

     ‘shepherd-requirement’ (default: ‘()’) (type: list-of-symbols)
          This is a list of symbols naming Shepherd services that this
          service will depend on.

 -- Variable: network-manager-service-type
     Este es el tipo de servicio para el servicio NetworkManager
     (https://wiki.gnome.org/Projects/NetworkManager). El valor para
     este tipo de servicio es un registro
     ‘network-manager-configuration’.

     Este servicio es parte de ‘%desktop-services’ (*note Servicios de
     escritorio::).

 -- Tipo de datos: network-manager-configuration
     Tipo de datos que representa la configuración de NetworkManager.

     ‘network-manager’ (predeterminado: ‘network-manager’)
          El paquete de NetworkManager usado.

     ‘shepherd-requirement’ (default: ‘'(wireless-daemon)’)
          This option can be used to provide a list of symbols naming
          Shepherd services that this service will depend on. The
          default ‘'wireless-daemon’ is provided by
          ‘'wpa-supplicant-service-type’ and ‘'iwd-service-type’. Make
          sure you have one of these configured. Note, that
          ‘%desktop-services’ already include
          ‘wpa-supplicant-service-type’.

     ‘dns’ (predeterminado: ‘"default"’)
          Modo de procesamiento para DNS, que afecta la manera en la que
          NetworkManager usa el archivo de configuración ‘resolv.conf’.

          ‘default’
               NetworkManager actualizará ‘resolv.conf’ para reflejar
               los servidores de nombres proporcionados por las
               conexiones activas actualmente.

          ‘dnsmasq’
               NetworkManager ejecutará ‘dnsmasq’ como una caché local
               del servicio de nombres, mediante un “reenvío
               condicional” si se encuentra conectada a una VPN, y
               actualiza posteriormente ‘resolv.conf’ para apuntar al
               servidor de nombres local.

               Con esta configuración puede compartir su conexión de
               red. Por ejemplo, cuando desee compartir su conexión de
               red a otro equipo a través de un cable Ethernet, puede
               abrir ‘nm-connection-editor’ y configurar el método de la
               conexión cableada para IPv4 y IPv6 “Compartida con otros
               equipos” y restablecer la conexión (o reiniciar).

               También puede configurar una “conexión
               anfitrión-invitado” a las máquinas virtuales de QEMU
               (*note Instalación de Guix en una máquina virtual::). Con
               una conexión anfitrión-invitado puede, por ejemplo,
               acceder a un servidor web que se ejecute en la máquina
               virtual (*note Servicios Web::) desde un navegador web en
               su sistema anfitrión, o conectarse a la máquina virtual a
               través de SSH (*note ‘openssh-service-type’: Servicios de
               red.). Para configurar una conexión anfitrión-invitado,
               ejecute esta orden una única vez:

                    nmcli connection add type tun \
                     connection.interface-name tap0 \
                     tun.mode tap tun.owner $(id -u) \
                     ipv4.method shared \
                     ipv4.addresses 172.28.112.1/24

               Cada vez que arranque su máquina virtual de QEMU (*note
               Ejecutar Guix en una máquina virtual::), proporcione
               ‘-nic tap,ifname=tap0,script=no,downscript=no’ a
               ‘qemu-system-...’.

          ‘none’
               NetworkManager no modificará ‘resolv.conf’.

     ‘vpn-plugins’ (predeterminados: ‘'()’)
          Esta es la lista de módulos disponibles para redes privadas
          virtuales (VPN). Un ejemplo es el paquete
          ‘network-manager-openvpn’, que permite a NetworkManager la
          gestión de redes VPN a través de OpenVPN.

     ‘extra-configuration-files’ (default: ‘'()’)
          A list of two-element lists; the first element of each list is
          a file name (as a string), and the second is a file-like
          object. Used to specify configuration files which will be
          added to the ‘/etc/NetworkManager/conf.d’. NetworkManager will
          read additional configuration from this directory. For details
          on configuration file precedence and the configuration file
          format, see ‘man 5 NetworkManager.conf’.

          For example, to add two files named ‘001-basic.conf’ and
          ‘002-unmanaged.conf’:

               (service network-manager-service-type
                        (network-manager-configuration
                         (extra-configuration-files
                          `(("001-basic.conf" ,(local-file "basic.conf"))
                            ("002-unmanaged.conf" ,(plain-file "constructed-unmanaged.conf"
                                                               "\
               [keyfile]
               unmanaged-devices=interface-name:wlo1_ap\n"))))))

 -- Variable: connman-service-type
     Este es el tipo de servicio para la ejecución de Connman
     (https://01.org.connman), un gestor de conexiones de red.

     Su valor debe ser un registro ‘connman-configuration’ como en este
     ejemplo:

          (service connman-service-type
                   (connman-configuration
                     (disable-vpn? #t)))

     Véase a continuación más detalles sobre ‘connman-configuration’.

 -- Tipo de datos: connman-configuration
     Tipo de datos que representa la configuración de connman.

     ‘connman’ (predeterminado: CONNMAN)
          El paquete connman usado.

     ‘shepherd-requirement’ (default: ‘'()’)
          This option can be used to provide a list of symbols naming
          Shepherd services that this service will depend on, such as
          ‘'wpa-supplicant’ or ‘'iwd’ if you require authenticated
          access for encrypted WiFi or Ethernet networks.

     ‘disable-vpn?’ (predeterminado: ‘#f’)
          Cuando es verdadero, desactiva el módulo vpn de connman.

     ‘general-configuration’ (default: ‘(connman-general-configuration)’)
          Configuration serialized to ‘main.conf’ and passed as
          ‘--config’ to ‘connmand’.

 -- Data Type: connman-general-configuration
     Available ‘connman-general-configuration’ fields are:

     ‘input-request-timeout’ (type: maybe-number)
          Set input request timeout. Default is 120 seconds. The request
          for inputs like passphrase will timeout after certain amount
          of time. Use this setting to increase the value in case of
          different user interface designs.

     ‘browser-launch-timeout’ (type: maybe-number)
          Set browser launch timeout. Default is 300 seconds. The
          request for launching a browser for portal pages will timeout
          after certain amount of time. Use this setting to increase the
          value in case of different user interface designs.

     ‘background-scanning?’ (type: maybe-boolean)
          Enable background scanning. Default is true. If wifi is
          disconnected, the background scanning will follow a simple
          back off mechanism from 3s up to 5 minutes. Then, it will stay
          in 5 minutes unless user specifically asks for scanning
          through a D-Bus call. If so, the mechanism will start again
          from 3s. This feature activates also the background scanning
          while being connected, which is required for roaming on wifi.
          When ‘background-scanning?’ is false, ConnMan will not perform
          any scan regardless of wifi is connected or not, unless it is
          requested by the user through a D-Bus call.

     ‘use-gateways-as-timeservers?’ (type: maybe-boolean)
          Assume that service gateways also function as timeservers.
          Default is false.

     ‘fallback-timeservers’ (type: maybe-list)
          List of Fallback timeservers. These timeservers are used for
          NTP sync when there are no timeservers set by the user or by
          the service, and when ‘use-gateways-as-timeservers?’ is ‘#f’.
          These can contain a mixed combination of fully qualified
          domain names, IPv4 and IPv6 addresses.

     ‘fallback-nameservers’ (type: maybe-list)
          List of fallback nameservers appended to the list of
          nameservers given by the service. The nameserver entries must
          be in numeric format, host names are ignored.

     ‘default-auto-connect-technologies’ (type: maybe-list)
          List of technologies that are marked autoconnectable by
          default. The default value for this entry when empty is
          ‘"ethernet"’, ‘"wifi"’, ‘"cellular"’. Services that are
          automatically connected must have been set up and saved to
          storage beforehand.

     ‘default-favourite-technologies’ (type: maybe-list)
          List of technologies that are marked favorite by default. The
          default value for this entry when empty is ‘"ethernet"’.
          Connects to services from this technology even if not setup
          and saved to storage.

     ‘always-connected-technologies’ (type: maybe-list)
          List of technologies which are always connected regardless of
          preferred-technologies setting (‘auto-connect?’ ‘#t’). The
          default value is empty and this feature is disabled unless
          explicitly enabled.

     ‘preferred-technologies’ (type: maybe-list)
          List of preferred technologies from the most preferred one to
          the least preferred one. Services of the listed technology
          type will be tried one by one in the order given, until one of
          them gets connected or they are all tried. A service of a
          preferred technology type in state ’ready’ will get the
          default route when compared to another preferred type further
          down the list with state ’ready’ or with a non-preferred type;
          a service of a preferred technology type in state ’online’
          will get the default route when compared to either a
          non-preferred type or a preferred type further down in the
          list.

     ‘network-interface-blacklist’ (type: maybe-list)
          List of blacklisted network interfaces. Found interfaces will
          be compared to the list and will not be handled by ConnMan, if
          their first characters match any of the list entries. Default
          value is ‘"vmnet"’, ‘"vboxnet"’, ‘"virbr"’, ‘"ifb"’.

     ‘allow-hostname-updates?’ (type: maybe-boolean)
          Allow ConnMan to change the system hostname. This can happen
          for example if we receive DHCP hostname option. Default value
          is ‘#t’.

     ‘allow-domainname-updates?’ (type: maybe-boolean)
          Allow connman to change the system domainname. This can happen
          for example if we receive DHCP domainname option. Default
          value is ‘#t’.

     ‘single-connected-technology?’ (type: maybe-boolean)
          Keep only a single connected technology at any time. When a
          new service is connected by the user or a better one is found
          according to preferred-technologies, the new service is kept
          connected and all the other previously connected services are
          disconnected. With this setting it does not matter whether the
          previously connected services are in ’online’ or ’ready’
          states, the newly connected service is the only one that will
          be kept connected. A service connected by the user will be
          used until going out of network coverage. With this setting
          enabled applications will notice more network breaks than
          normal. Note this options can’t be used with VPNs. Default
          value is ‘#f’.

     ‘tethering-technologies’ (type: maybe-list)
          List of technologies that are allowed to enable tethering. The
          default value is ‘"wifi"’, ‘"bluetooth"’, ‘"gadget"’. Only
          those technologies listed here are used for tethering. If one
          wants to tether ethernet, then add ‘"ethernet"’ in the list.
          Note that if ethernet tethering is enabled, then a DHCP server
          is started on all ethernet interfaces. Tethered ethernet
          should never be connected to corporate or home network as it
          will disrupt normal operation of these networks. Due to this
          ethernet is not tethered by default. Do not activate ethernet
          tethering unless you really know what you are doing.

     ‘persistent-tethering-mode?’ (type: maybe-boolean)
          Restore earlier tethering status when returning from offline
          mode, re-enabling a technology, and after restarts and
          reboots. Default value is ‘#f’.

     ‘enable-6to4?’ (type: maybe-boolean)
          Automatically enable anycast 6to4 if possible. This is not
          recommended, as the use of 6to4 will generally lead to a
          severe degradation of connection quality. See RFC6343. Default
          value is ‘#f’ (as recommended by RFC6343 section 4.1).

     ‘vendor-class-id’ (type: maybe-string)
          Set DHCP option 60 (Vendor Class ID) to the given string. This
          option can be used by DHCP servers to identify specific
          clients without having to rely on MAC address ranges, etc.

     ‘enable-online-check?’ (type: maybe-boolean)
          Enable or disable use of HTTP GET as an online status check.
          When a service is in a READY state, and is selected as
          default, ConnMan will issue an HTTP GET request to verify that
          end-to-end connectivity is successful. Only then the service
          will be transitioned to ONLINE state. If this setting is
          false, the default service will remain in READY state. Default
          value is ‘#t’.

     ‘online-check-ipv4-url’ (type: maybe-string)
          IPv4 URL used during the online status check. Please refer to
          the README for more detailed information. Default value is
          <http://ipv4.connman.net/online/status.html>.

     ‘online-check-ipv6-url’ (type: maybe-string)
          IPv6 URL used during the online status check. Please refer to
          the README for more detailed information. Default value is
          <http://ipv6.connman.net/online/status.html>.

     ‘online-check-initial-interval’ (type: maybe-number)
          Range of intervals between two online check requests. Please
          refer to the README for more detailed information. Default
          value is ‘1’.

     ‘online-check-max-interval’ (type: maybe-number)
          Range of intervals between two online check requests. Please
          refer to the README for more detailed information. Default
          value is ‘1’.

     ‘enable-online-to-ready-transition?’ (type: maybe-boolean)
          WARNING: This is an experimental feature. In addition to
          ‘enable-online-check’ setting, enable or disable use of HTTP
          GET to detect the loss of end-to-end connectivity. If this
          setting is ‘#f’, when the default service transitions to
          ONLINE state, the HTTP GET request is no more called until
          next cycle, initiated by a transition of the default service
          to DISCONNECT state. If this setting is ‘#t’, the HTTP GET
          request keeps being called to guarantee that end-to-end
          connectivity is still successful. If not, the default service
          will transition to READY state, enabling another service to
          become the default one, in replacement. Default value is ‘#f’.

     ‘auto-connect-roaming-services?’ (type: maybe-boolean)
          Automatically connect roaming services. This is not
          recommended unless you know you won’t have any billing
          problem. Default value is ‘#f’.

     ‘address-conflict-detection?’ (type: maybe-boolean)
          Enable or disable the implementation of IPv4 address conflict
          detection according to RFC5227. ConnMan will send probe ARP
          packets to see if an IPv4 address is already in use before
          assigning the address to an interface. If an address conflict
          occurs for a statically configured address, an IPv4LL address
          will be chosen instead (according to RFC3927). If an address
          conflict occurs for an address offered via DHCP, ConnMan sends
          a DHCP DECLINE once and for the second conflict resorts to
          finding an IPv4LL address. Default value is ‘#f’.

     ‘localtime’ (type: maybe-string)
          Path to localtime file. Defaults to ‘/etc/localtime’.

     ‘regulatory-domain-follows-timezone?’ (type: maybe-boolean)
          Enable regulatory domain to be changed along timezone changes.
          With this option set to true each time the timezone changes
          the first present ISO3166 country code is read from
          ‘/usr/share/zoneinfo/zone1970.tab’ and set as regulatory
          domain value. Default value is ‘#f’.

     ‘resolv-conf’ (type: maybe-string)
          Path to resolv.conf file. If the file does not exist, but
          intermediate directories exist, it will be created. If this
          option is not set, it tries to write into
          ‘/var/run/connman/resolv.conf’ if it fails (‘/var/run/connman’
          does not exist or is not writeable). If you do not want to
          update resolv.conf, you can set ‘/dev/null’.

 -- Variable: wpa-supplicant-service-type
     Este es el tipo de servicio para la ejecución de WPA supplicant
     (https://w1.fi/wpa_supplicant/), un daemon de identificación
     necesario para la identificación en redes WiFi o ethernet cifradas.

 -- Tipo de datos: wpa-supplicant-configuration
     Tipo de datos que representa la configuración de WPA Supplicant.

     Toma los siguientes parámetros:

     ‘wpa-supplicant’ (predeterminado: ‘wpa-supplicant’)
          El paquete de WPA Supplicant usado.

     ‘shepherd-requirement’ (default: ‘(user-processes loopback syslogd)’
          Lista de servicios que deben iniciarse antes del arranque de
          WPA Supplicant.

     ‘shepherd-provision’ (default: ‘(wpa-supplicant wireless-daemon)’) (type: list-of-symbols)
          The name(s) of the service.

     ‘dbus?’ (predeterminado: ‘#t’)
          Si se escuchan o no peticiones en D-Bus.

     ‘pid-file’ (predeterminado: ‘"/var/run/wpa_supplicant.pid"’)
          Dónde se almacena el archivo con el PID.

     ‘interface’ (predeterminado: ‘#f’)
          En caso de proporcionarse un valor, debe especificar el nombre
          de la interfaz de red que WPA supplicant controlará.

     ‘config-file’ (predeterminado: ‘#f’)
          Archivo de configuración opcional usado.

     ‘extra-options’ (predeterminadas: ‘'()’)
          Lista de parámetros adicionales a pasar al daemon en la línea
          de órdenes.

 -- Variable: iwd-service-type
     This is the service type to run iwd, the iNet Wireless Daemon
     (https://iwd.wiki.kernel.org/), a daemon required to authenticate
     against encrypted WiFi networks.

     Aviso: By default ‘iwd’ removes and re-creates interfaces it
     manages. It doesn’t play nicely with ‘dhcp-client-service-type’
     that enumerates wireless interfaces before starting the Shepherd
     service. Use either ‘dhcpcd-service-type’ or the ‘iwd’’s built-in
     DHCP client (see ‘enable-network-configuration’ option below).

     Aviso: ‘iwd-service-type’ conflicts with
     ‘wpa-supplicant-service-type’. Make sure only one is configured.

 -- Data Type: iwd-configuration
     Available ‘iwd-configuration’ fields are:

     ‘iwd’ (default: ‘iwd’) (type: file-like)
          The IWD package to use.

     ‘interfaces’ (default: ‘()’) (type: list-of-strings)
          If this is set, it must specify “glob patterns” matching
          network interfaces that IWD will control.

     ‘ignored-interfaces’ (default: ‘()’) (type: list-of-strings)
          If this is set, it must specify “glob patterns” matching
          network interfaces that IWD will not manage.

     ‘phys’ (default: ‘()’) (type: list-of-strings)
          If this is set, it must specify “glob patterns” matching
          network PHYs names that IWD will control.

     ‘ignored-phys’ (default: ‘()’) (type: list-of-strings)
          If this is set, it must specify “glob patterns” matching
          network PHYs names that IWD will not manage.

     ‘shepherd-requirement’ (default: ‘()’) (type: list-of-symbols)
          Shepherd requirements the service should depend on.

     ‘shepherd-provision’ (default: ‘(iwd wireless-daemon)’) (type: list-of-symbols)
          The name(s) of the service.

     ‘config’ (type: iwd-settings)
          Configuration settings.

 -- Data Type: iwd-settings
     Available ‘iwd-settings’ fields are:

     ‘general’ (type: iwd-general-settings)
          General settings.

     ‘network’ (default: ‘(iwd-network-settings)’) (type: maybe-iwd-network-settings)
          Network settings.

     ‘scan’ (type: maybe-iwd-scan-settings)
          Scan settings.

     ‘extra-config’ (default: ‘()’) (type: list-of-strings)
          Extra configuration values to append to the IWD configuration
          file.

 -- Data Type: iwd-general-settings
     Available ‘iwd-general-settings’ fields are:

     ‘enable-network-configuration?’ (default: ‘#f’) (type: boolean)
          Setting this option to true enables ‘iwd’ to configure the
          network interfaces with the IP addresses.

     ‘extra-options’ (default: ‘()’) (type: alist)
          An association list of option symbols/strings to string values
          to be appended to the General settings group.

 -- Data Type: iwd-network-settings
     Available ‘iwd-network-settings’ fields are:

     ‘enable-ipv6?’ (default: ‘#t’) (type: boolean)
          Sets the global default that tells ‘iwd’ whether it should
          configure IPv6 addresses and routes

     ‘name-resolving-service’ (default: ‘none’) (type: resolving-service)
          Configures a DNS resolution method used by the system.

     ‘extra-options’ (default: ‘()’) (type: alist)
          An association list of option symbols/strings to string values
          to be appended to the Network settings group.

 -- Data Type: iwd-scan-settings
     Available ‘iwd-scan-settings’ fields are:

     ‘disable-periodic-scan?’ (default: ‘#f’) (type: boolean)
          Setting this option to ‘#t’ will prevent ‘iwd’ from issuing
          the periodic scans for the available networks while
          disconnected.

     ‘initial-periodic-scan-interval’ (default: ‘10’) (type: number)
          The initial periodic scan interval upon disconnect (in
          seconds).

     ‘maximum-periodic-scan-interval’ (default: ‘300’) (type: number)
          The maximum periodic scan interval (in seconds).

     ‘disable-roaming-scan?’ (default: ‘#f’) (type: boolean)
          Setting this option to ‘#t’ will prevent ‘iwd’ from trying to
          scan when roaming decisions are activated.

     ‘extra-options’ (default: ‘()’) (type: alist)
          An association list of option symbols/strings to string values
          to be appended to the Scan settings group.

   Some networking devices such as modems require special care, and this
is what the services below focus on.

 -- Variable: modem-manager-service-type
     This is the service type for the ModemManager
     (https://wiki.gnome.org/Projects/ModemManager) service. The value
     for this service type is a ‘modem-manager-configuration’ record.

     Este servicio es parte de ‘%desktop-services’ (*note Servicios de
     escritorio::).

 -- Tipo de datos: modem-manager-configuration
     Tipo de datos que representa la configuración de ModemManager.

     ‘modem-manager’ (predeterminado: ‘modem-manager’)
          El paquete de ModemManager usado.

 -- Variable: usb-modeswitch-service-type
     This is the service type for the USB_ModeSwitch
     (https://www.draisberghof.de/usb_modeswitch/) service. The value
     for this service type is a ‘usb-modeswitch-configuration’ record.

     Cuando se conectan, algunos modem USB (y otros dispositivos USB) se
     presentan inicialmente como medios de almacenamiento de
     sólo-lectura y no como un modem. Deben “cambiar de modo” antes de
     poder usarse. El tipo de servicio USB_ModeSwitch instala reglas de
     udev para cambiar automáticamente de modo cuando se conecten estos
     dispositivos.

     Este servicio es parte de ‘%desktop-services’ (*note Servicios de
     escritorio::).

 -- Tipo de datos: usb-modeswitch-configuration
     Tipo de datos que representa la configuración de USB_ModeSwitch.

     ‘usb-modeswitch’ (predeterminado: ‘usb-modeswitch’)
          El paquete USB_ModeSwitch que proporciona los binarios para el
          cambio de modo.

     ‘usb-modeswitch-data’ (predeterminado: ‘usb-modeswitch-data’)
          El paquete que proporciona los datos de dispositivos y las
          reglas de udev usadas por USB_ModeSwitch.

     ‘config-file’ (predeterminado: ‘#~(string-append #$usb-modeswitch:dispatcher "/etc/usb_modeswitch.conf")’)
          Archivo de configuración usado para el gestor de eventos
          (dispatcher) de USB_ModeSwitch. De manera predeterminada se
          usa el archivo que viene con USB_ModeSwitch, que deshabilita
          el registro en ‘/var/log’ junto a otras configuraciones. Si se
          proporciona ‘#f’ no se usa ningún archivo de configuración.


File: guix.es.info,  Node: Servicios de red,  Next: Actualizaciones no-atendidas,  Prev: Networking Setup,  Up: Servicios

11.10.5 Servicios de red
------------------------

The ‘(gnu services networking)’ module discussed in the previous section
provides services for more advanced setups: providing a DHCP service for
others to use, filtering packets with iptables or nftables, running a
WiFi access point with ‘hostapd’, running the ‘inetd’ “superdaemon”, and
more. This section describes those.

 -- Variable: dhcpd-service-type
     Este tipo define un servicio que ejecuta el daemon DHCP. Para crear
     un servicio de este tipo debe proporcionar un objeto
     ‘<dhcpd-configuration>’. Por ejemplo:

          (service dhcpd-service-type
                   (dhcpd-configuration
                    (config-file (local-file "mi-dhcpd.conf"))
                    (interfaces '("enp0s25"))))

 -- Tipo de datos: dhcpd-configuration
     ‘package’ (predeterminado: ‘isc-dhcp’)
          The package that provides the DHCP daemon. This package is
          expected to provide the daemon at ‘sbin/dhcpd’ relative to its
          output directory. The default package is the ISC’s DHCP server
          (https://www.isc.org/dhcp/).
     ‘config-file’ (predeterminado: ‘#f’)
          El archivo de configuración usado. Esta opción es necesaria.
          Se le proporcionará a ‘dhcpd’ a través de su opción ‘-cf’.
          Puede ser cualquier objeto “tipo-archivo” (*note objetos
          “tipo-archivo”: Expresiones-G.). Véase ‘man dhcpd.conf’ para
          detalles sobre la sintaxis del archivo de configuración.
     ‘version’ (predeterminada: ‘"4"’)
          La versión DHCP usada. El servidor DHCP de ISC permite los
          valores “4”, “6” y “4o6”. Corresponden con las opciones ‘-4’,
          ‘-6’ y ‘-4o6’ del programa ‘dhcpd’. Véase ‘man dhcpd’ para más
          detalles.
     ‘run-directory’ (predeterminado: ‘"/run/dhcpd"’)
          El directorio de ejecución usado. Durante la activación del
          servicio se creará en caso de no existir.
     ‘pid-file’ (predeterminado: ‘"/run/dhcpd/dhcpd.pid"’)
          El archivo de PID usado. Corresponde con la opción ‘-pf’ de
          ‘dhcpd’. Véase ‘man dhcpd’ para más detalles.
     ‘interfaces’ (predeterminadas: ‘'()’)
          Los nombres de las interfaces de red en las que dhcpd debería
          esperar retransmisiones. Si la lista no está vacía, entonces
          sus elementos (que deben ser cadenas) se añadirá a la
          invocación de ‘dhcpd’ cuando se inicie el daemon. Puede no ser
          necesaria la especificación explícita aquí de ninguna
          interfaz; véase ‘man dhcpd’ para más detalles.

 -- Variable: hostapd-service-type
     Este es el tipo de servicio que ejecuta el daemon hostapd
     (https://w1.fi/hostapd/) para configurar puntos de acceso WiFi
     (IEEE 802.11) y servidores de identificación. Su valor debe ser un
     registro ‘hostapd-configuration’ como en este ejemplo:

          ;; Use wlan1 para ejecutar el punto de acceso para "Mi red".
          (service hostapd-service-type
                   (hostapd-configuration
                    (interface "wlan1")
                    (ssid "Mi red")
                    (channel 12)))

 -- Tipo de datos: hostapd-configuration
     Este tipo de datos representa la configuración del servicio
     hostapd, y tiene los siguientes campos:

     ‘package’ (predeterminado: ‘hostapd’)
          El paquete hostapd usado.

     ‘interface’ (predeterminado: ‘"wlan0"’)
          La interfaz de red en la que se establece el punto de acceso
          WiFi.

     ‘ssid’
          El SSID (“identificador del servicio”, del inglés “service set
          identifier”), una cadena que identifica esta red.

     ‘broadcast-ssid?’ (predeterminado: ‘#t’)
          Determina si se emite este SSID.

     ‘channel’ (predeterminado: ‘1’)
          El canal WiFi usado.

     ‘driver’ (predeterminado: ‘"nl80211"’)
          El tipo de controlador de la interfaz. ‘"nl80211"’ se usa con
          todos los controladores de mac80211 de Linux. Use ‘"none"’ si
          está construyendo hostapd como un servidor RADIUS
          independiente que no controla ningún controlador de red
          cableada o inalámbrica.

     ‘extra-settings’ (predeterminado: ‘""’)
          Configuración adicional que se añade literalmente al archivo
          de configuración de hostapd. Véase
          <https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf> para la
          referencia del archivo de configuración.

 -- Variable: simulated-wifi-service-type
     Tipo de servicio que simula una red inalámbrica (“WiFi”), lo que
     puede ser útil en máquinas virtuales para realizar pruebas. El
     servicio carga el módulo ‘mac80211_hwsim’
     (https://www.kernel.org/doc/html/latest/networking/mac80211_hwsim/mac80211_hwsim.html)
     del núcleo Linux e inicia hostapd para crear una red inalámbrica
     virtual que puede verse en ‘wlan0’, de manera predeterminada.

     El valor de este servicio es un registro ‘hostapd-configuration’.

 -- Variable: iptables-service-type
     Este es el tipo de servicio para la aplicación de configuración de
     iptables. iptables es un entorno de trabajo para el filtrado de
     paquetes implementado por el núcleo Linux. Este servicio permite la
     configuración de iptables tanto para IPv4 como IPv6. Un ejemplo
     simple de cómo rechazar todas las conexiones entrantes excepto
     aquellas al puerto 22 de ssh se muestra a continuación.

          (service iptables-service-type
                   (iptables-configuration
                    (ipv4-rules (plain-file "iptables.rules" "*filter
          :INPUT ACCEPT
          :FORWARD ACCEPT
          :OUTPUT ACCEPT
          -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
          -A INPUT -p tcp --dport 22 -j ACCEPT
          -A INPUT -j REJECT --reject-with icmp-port-unreachable
          COMMIT
          "))
                    (ipv6-rules (plain-file "ip6tables.rules" "*filter
          :INPUT ACCEPT
          :FORWARD ACCEPT
          :OUTPUT ACCEPT
          -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
          -A INPUT -p tcp --dport 22 -j ACCEPT
          -A INPUT -j REJECT --reject-with icmp6-port-unreachable
          COMMIT
          "))))

 -- Tipo de datos: iptables-configuration
     El tipo de datos que representa la configuración de iptables.

     ‘iptables’ (predeterminado: ‘iptables’)
          El paquete iptables que proporciona ‘iptables-restore’ y
          ‘ip6tables-restore’.
     ‘ipv4-rules’ (predeterminado: ‘%iptables-accept-all-rules’)
          Las reglas de iptables usadas. Se le proporcionarán a
          ‘iptables-restore’. Puede ser cualquier objeto “tipo-archivo”
          (*note objetos “tipo-archivo”: Expresiones-G.).
     ‘ipv6-rules’ (predeterminadas: ‘%iptables-accept-all-rules’)
          Las reglas de ip6tables usadas. Se le proporcionarán a
          ‘ip6tables-restore’. Puede ser cualquier objeto “tipo-archivo”
          (*note objetos “tipo-archivo”: Expresiones-G.).

 -- Variable: nftables-service-type
     Es el tipo de servicio para levantar una configuración de nftables.
     nftables es un proyecto de netfilter que quiere reemplazar los
     entornos iptables, ip6tables, arptables y ebtables. Proporciona un
     entorno de filtrado de paquetes nuevo, una utilidad ‘nft’ de
     espacio de usuaria nueva y una capa de compatibilidad con iptables.
     El servicio viene con un conjunto de reglas predeterminado
     ‘%default-nftables-ruleset’ que rechaza todas las conexiones
     entrantes excepto las del puerto 22 (TCP) de SSH. Para usarlo,
     simplemente escriba:

          (service nftables-service-type)

 -- Tipo de datos: nftables-configuration
     Available ‘nftables-configuration’ fields are:

     ‘package’ (default: ‘nftables’) (type: file-like)
          The ‘nftables’ package to use.

     ‘debug-levels’ (type: maybe-list-of-debug-levels)
          A list of debug levels, for enabling debugging output. Valid
          debug level values are the ‘scanner’, ‘parser’, ‘eval’,
          ‘netlink’, ‘mnl’, ‘proto-ctx’, ‘segtree’ or ‘all’ symbols.

     ‘ruleset’ (type: file-like)
          A file-like object containing the complete nftables ruleset.
          The default ruleset rejects all incoming connections except
          those to TCP port 22, with connections from the loopback
          interface are allowed.

 -- Variable: ntp-service-type
     Este es el tipo del servicio que ejecuta el daemon del protocolo de
     tiempo en red (NTP) (https://www.ntp.org), ‘ntpd’. El daemon
     mantendrá el reloj del sistema sincronizado con el de los
     servidores NTP especificados.

     El valor de este servicio es un objeto ‘ntpd-configuration’, como
     se describe a continuación.

 -- Tipo de datos: ntp-configuration
     Este es el tipo de datos para la configuración del servicio NTP.

     ‘servers’ (predeterminados: ‘%ntp-servers’)
          La lista de servidores (registros ‘<ntp-server>’) con los que
          la herramienta ‘ntpd’ se sincronizará. Véase la información
          sobre el tipo de datos ‘ntp-server’ a continuación.

     ‘allow-large-adjustment?’ (predeterminado: ‘#t’)
          Esto determina si se le permite a ‘ntpd’ realizar un ajuste
          inicial de más de 1000 segundos.

     ‘ntp’ (predeterminado: ‘ntp’)
          El paquete NTP usado.

 -- Variable: %ntp-servers
     Lista de nombres de máquinas usadas como servidores NTP
     predeterminados. Son servidores del NTP Pool Project
     (https://www.ntppool.org/en/).

 -- Tipo de datos: ntp-server
     Tipo de datos que representa la configuración de un servidor NTP.

     ‘type’ (predeterminado: ‘'server’)
          The type of the NTP server, given as a symbol. One of ‘'pool’,
          ‘'server’, ‘'peer’, ‘'broadcast’ or ‘'manycastclient’.

     ‘address’
          La dirección del servidor, como una cadena.

     ‘options’
          NTPD options to use with that specific server, given as a list
          of option names and/or of option names and values tuples. The
          following example define a server to use with the options
          ‘iburst’ and ‘prefer’, as well as ‘version’ 3 and a ‘maxpoll’
          time of 16 seconds.

               (ntp-server
                (type 'server)
                (address "miservidor.ntp.server.org")
                (options `(iburst (version 3) (maxpoll 16) prefer))))

 -- Variable: openntpd-service-type
     Ejecuta ‘ntpd’, el daemon del protocolo de tiempo en red (NTP),
     implementado por OpenNTPD (http://www.openntpd.org). El daemon
     mantendrá el reloj del sistema sincronizado con el de los
     servidores proporcionados.

          (service
           openntpd-service-type
           (openntpd-configuration
            (listen-on '("127.0.0.1" "::1"))
            (sensor '("udcf0 correction 70000"))
            (constraint-from '("www.gnu.org"))
            (constraints-from '("https://www.google.com/"))))


 -- Variable: %openntpd-servers
     Esta variable es una lista de las direcciones de servidores
     definidos en ‘%ntp-servers’.

 -- Tipo de datos: openntpd-configuration
     ‘openntpd’ (default: ‘openntpd’)
          The openntpd package to use.
     ‘listen-on’ (predeterminadas: ‘'("127.0.0.1" "::1")’)
          Una lista de direcciones IP o nombres de máquina en los que el
          daemon ntpd debe escuchar conexiones.
     ‘query-from’ (predeterminadas: ‘'()’)
          Una lista de direcciones IP locales que el daemon ntpd debe
          usar para consultas salientes.
     ‘sensor’ (predeterminados: ‘'()’)
          Especifica una lista de dispositivos de sensores de tiempo de
          ntpd debería usar. ‘ntpd’ escuchará cada sensor que realmente
          exista e ignora los que no. Véase la documentación de las
          desarrolladoras originales (https://man.openbsd.org/ntpd.conf)
          para más información.
     ‘server’ (predeterminado: ‘'()’)
          Especifica una lista de direcciones IP o nombres de máquina de
          servidores NTP con los que sincronizarse.
     ‘servers’ (predeterminada: ‘%openntp-servers’)
          Una lista de direcciones IP o nombres de máquina con los que
          el daemon ntpd se debe sincronizar.
     ‘constraint-from’ (predeterminado: ‘'()’)
          ‘ntpd’ puede configurarse para que solicite la fecha a través
          del campo “Date” de servidores HTTPS en los que se confíe a
          través de TLS. Esta información de tiempo no se usa por
          precisión pero actúa como una condición verificada, por tanto
          reduciendo el impacto de ataques mediante la intervención del
          tráfico con servidores NTP no verificados. Especifica una
          lista de URL, direcciones IP o nombres de máquina de
          servidores HTTPS que proporcionarán la condición.
     ‘constraints-from’ (predeterminadas: ‘'()’)
          Como en CONSTRAINT-FROM, proporciona una lista de URL,
          direcciones IP o nombres de máquina de servidores HTTP para
          proporcionar la condición. En caso de que el nombre de máquina
          resuelva en múltiples direcciones IP, ‘ntpd’ calculará la
          condición mediana de todas ellas.

 -- Variable: inetd-service-type
     Este servicio ejecuta el daemon ‘inetd’ (*note (inetutils)inetd
     invocation::). ‘inetd’ escucha conexiones en sockets de internet, e
     inicia bajo demanda el programa servidor cuando se realiza una
     conexión en uno de esos sockets.

     El valor de este servicio es un objeto ‘inetd-configuration’. El
     ejemplo siguiente configura el daemon ‘inetd’ para proporcionar el
     servicio ‘echo’ implementado por él mismo, así como un servicio
     smtp que reenvía el tráfico smtp por ssh a un servidor
     ‘servidor-smtp’ tras la pasarela ‘máquina’:

          (service
           inetd-service-type
           (inetd-configuration
            (entries (list
                      (inetd-entry
                       (name "echo")
                       (socket-type 'stream)
                       (protocol "tcp")
                       (wait? #f)
                       (user "root"))
                      (inetd-entry
                       (node "127.0.0.1")
                       (name "smtp")
                       (socket-type 'stream)
                       (protocol "tcp")
                       (wait? #f)
                       (user "root")
                       (program (file-append openssh "/bin/ssh"))
                       (arguments
                        '("ssh" "-qT" "-i" "/ruta/de/la/clave_ssh"
                          "-W" "servidor-smtp:25" "usuaria@maquina")))))))

     A continuación se proporcionan más detalles acerca de
     ‘inetd-configuration’.

 -- Tipo de datos: inetd-configuration
     Tipo de datos que representa la configuración de ‘inetd’.

     ‘program’ (predeterminado: ‘(file-append inetutils "/libexec/inetd")’)
          El ejecutable ‘inetd’ usado.

     ‘entries’ (predeterminadas: ‘'()’)
          Una lista de entradas de servicio de ‘inetd’. Cada entrada
          debe crearse con el constructor ‘inted-entry’.

 -- Tipo de datos: inetd-entry
     Tipo de datos que representa una entrada en la configuración de
     ‘inetd’. Cada entrada corresponde a un socket en el que ‘inetd’
     escuchará a la espera de peticiones.

     ‘node’ (predeterminado: ‘#f’)
          Cadena opcional, una lista separada por comas de direcciones
          locales que ‘inetd’ debería usar cuando se escuche para este
          servicio. *Note (inetutils)Configuration file:: para una
          descripción completa de todas las opciones.
     ‘name’
          Una cadena, el nombre debe corresponder con una entrada en
          ‘/etc/services’.
     ‘socket-type’
          Puede ser ‘'stream’, ‘'dgram’, ‘'raw’, ‘'rdm’ o ‘'seqpacket’.
     ‘protocol’
          Una cadena, debe corresponder con una entrada en
          ‘/etc/protocols’.
     ‘wait?’ (predeterminado: ‘#t’)
          Si ‘inetd’ debe esperar la salida del servidor antes de
          reiniciar la escucha de nuevas peticiones de servicio.
     ‘user’
          Una cadena que contiene el nombre (y, opcionalmente, el grupo)
          de la usuaria como la que se deberá ejecutar el servidor. El
          nombe de grupo se puede especificar en un sufijo, separado por
          dos puntos o un punto normal, es decir ‘"usuaria"’,
          ‘"usuaria:grupo"’ o ‘"usuaria.grupo"’.
     ‘program’ (predeterminado: ‘"internal"’)
          El programa servidor que recibirá las peticiones, o
          ‘"internal"’ si ‘inetd’ debería usar un servicio implementado
          internamente.
     ‘arguments’ (predeterminados: ‘'()’)
          Una lista de cadenas u objetos “tipo-archivo”, que serán los
          parámetros del programa servidor, empezando con el parámetro
          0, es decir, el nombre del programa en sí mismo. Para los
          servicios internos de ‘inetd’, esta entrada debe ser ‘'()’ o
          ‘'("internal")’.

     *Note (inetutils)Configuration file::, para una información más
     detallada sobre cada campo de la configuración.

 -- Variable: opendht-service-type
     This is the type of the service running a OpenDHT
     (https://opendht.net) node, ‘dhtnode’. The daemon can be used to
     host your own proxy service to the distributed hash table (DHT),
     for example to connect to with Jami, among other applications.

          Importante: When using the OpenDHT proxy server, the IP
          addresses it “sees” from the clients should be addresses
          reachable from other peers. In practice this means that a
          publicly reachable address is best suited for a proxy server,
          outside of your private network. For example, hosting the
          proxy server on a IPv4 private local network and exposing it
          via port forwarding could work for external peers, but peers
          local to the proxy would have their private addresses shared
          with the external peers, leading to connectivity problems.

     The value of this service is a ‘opendht-configuration’ object, as
     described below.

 -- Data Type: opendht-configuration
     Available ‘opendht-configuration’ fields are:

     ‘opendht’ (default: ‘opendht’) (type: file-like)
          The ‘opendht’ package to use.

     ‘peer-discovery?’ (default: ‘#f’) (type: boolean)
          Whether to enable the multicast local peer discovery
          mechanism.

     ‘enable-logging?’ (default: ‘#f’) (type: boolean)
          Whether to enable logging messages to syslog. It is disabled
          by default as it is rather verbose.

     ‘debug?’ (default: ‘#f’) (type: boolean)
          Whether to enable debug-level logging messages. This has no
          effect if logging is disabled.

     ‘bootstrap-host’ (default: ‘"bootstrap.jami.net:4222"’) (type: maybe-string)
          The node host name that is used to make the first connection
          to the network. A specific port value can be provided by
          appending the ‘:PORT’ suffix. By default, it uses the Jami
          bootstrap nodes, but any host can be specified here. It’s also
          possible to disable bootstrapping by explicitly setting this
          field to the ‘%unset-value’ value.

     ‘port’ (default: ‘4222’) (type: maybe-number)
          The UDP port to bind to. When left unspecified, an available
          port is automatically selected.

     ‘proxy-server-port’ (type: maybe-number)
          Spawn a proxy server listening on the specified port.

     ‘proxy-server-port-tls’ (type: maybe-number)
          Spawn a proxy server listening to TLS connections on the
          specified port.

 -- Variable: tor-service-type
     Type for a service that runs the Tor (https://torproject.org)
     anonymous networking daemon. The service is configured using a
     ‘<tor-configuration>’ record. By default, the Tor daemon runs as
     the ‘tor’ unprivileged user, which is a member of the ‘tor’ group.

     Services of this type can be extended by other services to specify
     “onion services” (in addition to those already specified in
     ‘tor-configuration’) as in this example:

          (simple-service 'my-extra-onion-service tor-service-type
                          (list (tor-onion-service-configuration
                                  (name "extra-onion-service")
                                  (mapping '((80 "127.0.0.1:8080"))))))

 -- Tipo de datos: tor-configuration
     ‘tor’ (predeterminado: ‘tor’)
          El paquete que proporciona el daemon Tor. Se espera que este
          paquete proporcione el daemon en ‘bin/tor’ de manera relativa
          al directorio de su salida. El paquete predeterminado es la
          implementación del Proyecto Tor (https://www.torproject.org).

     ‘config-file’ (predeterminado: ‘(plain-file "empty" "")’)
          El archivo de configuración usado. Se agregará al final del
          archivo de configuración predeterminado, y se proporcionará el
          archivo de configuración resultante a ‘tor’ a través de su
          opción ‘-f’. Puede ser cualquier objeto “tipo-archivo” (*note
          objetos “tipo-archivo”: Expresiones-G.). Véase ‘man tor’ para
          detalles sobre la sintaxis del archivo de configuración.

     ‘hidden-services’ (predeterminados: ‘'()’)
          The list of ‘<tor-onion-service-configuration>’ records to
          use. For any onion service you include in this list,
          appropriate configuration to enable the onion service will be
          automatically added to the default configuration file.

     ‘socks-socket-type’ (predeterminado: ‘'tcp’)
          El tipo socket predeterminado que Tor debe usar para su socket
          SOCKS. Debe ser ‘'tcp’ i ‘'unix’. Si es ‘'tcp’, Tor escuchará
          en el puerto TCP 9050 de la interfaz local (es decir,
          localhost) de manera predeterminada. Si es ‘'unix’, tor
          escuchará en el socket de dominio de UNIX
          ‘/var/run/tor/socks-sock’, que tendrá permisos de escritura
          para miembros del grupo ‘tor’.

          Si desea personalizar el socket SOCKS de manera más detallada,
          mantenga ‘socks-socket-type’ con su valor predeterminado de
          ‘'tcp’ y use ‘config-file’ para modificar el valor
          predeterminado proporcionando su propia opción ‘SocksPort’.

     ‘control-socket?’ (default: ‘#f’)
          Whether or not to provide a “control socket” by which Tor can
          be controlled to, for instance, dynamically instantiate tor
          onion services. If ‘#t’, Tor will listen for control commands
          on the UNIX domain socket ‘/var/run/tor/control-sock’, which
          will be made writable by members of the ‘tor’ group.

     ‘transport-plugins’ (default: ‘'()’)
          The list of ‘<tor-transport-plugin>’ records to use. For any
          transport plugin you include in this list, appropriate
          configuration line to enable transport plugin will be
          automatically added to the default configuration file.

     ‘auto-start?’ (predeterminado: ‘#t’)
          Whether or not to start the Tor daemon on boot.

 -- Data Type: tor-onion-service-configuration
     Data Type representing a Tor “Onion Service” configuration. See the
     Tor project’s documentation
     (https://community.torproject.org/onion-services/) for more
     information. Available ‘tor-onion-service-configuration’ fields
     are:

     ‘name’ (type: string)
          Name for this Onion Service. This creates a
          ‘/var/lib/tor/hidden-services/NAME’ directory, where the
          ‘hostname’ file contains the ‘.onion’ host name for this Onion
          Service.

     ‘mapping’ (type: alist)
          Association list of port to address mappings. The following
          example:
               '((22 "127.0.0.1:22")
                 (80 "127.0.0.1:8080"))
          maps ports 22 and 80 of the Onion Service to the local ports
          22 and 8080.

 -- Data Type: tor-transport-plugin
     Data type representing a Tor pluggable transport plugin in
     ‘tor-configuration’. Plugguble transports are programs that
     disguise Tor traffic, which can be useful in case Tor is censored.
     See the the Tor project’s documentation
     (https://tb-manual.torproject.org/circumvention/) and specification
     (https://spec.torproject.org/pt-spec/index.html) for more
     information.

     Each transport plugin corresponds either to ‘ClientTransportPlugin
     ...’ or to ‘ServerTransportPlugin ...’ line in the default
     configuration file, see ‘man tor’. Available ‘tor-transport-plugin’
     fields are:

     ‘role’ (default: ‘'client’)
          This must be either ‘'client’ or ‘'server’. Otherwise, an
          error is raised. Set the ‘'server’ value if you want to run a
          bridge to help censored users connect to the Tor network, see
          the Tor project’s bridge guide
          (https://community.torproject.org/relay/setup/bridge/). Set
          the ‘'client’ value if you want to connect to somebody else’s
          bridge, see the Tor project’s “Get Bridges” page
          (https://bridges.torproject.org/). In both cases the required
          additional configuration should be provided via
          ‘#:config-file’ option of ‘tor-configuration’.
     ‘protocol’ (default: ‘"obfs4"’)
          A string that specifies a pluggable transport protocol.
     ‘program’
          This must be a “file-like” object or a string pointing to the
          pluggable transport plugin executable. This option allows the
          Tor daemon run inside the container to access the executable
          and all the references (e.g. package dependencies) attached to
          it.

     Suppose you would like Tor daemon to use obfs4 type obfuscation and
     to connect to Tor network via obfs4 bridge (a nonpublic Tor relay
     with support for obfs4 type obfuscation). Then you may go to
     https://bridges.torproject.org/ (https://bridges.torproject.org/)
     and get there a couple of bridge lines (each starts with ‘obfs4
     ...’) and use these lines in tor-service-type configuration as
     follows:
          (service tor-service-type
          	 (tor-configuration
          	  (config-file (plain-file "torrc"
          				   "\
          UseBridges 1
          Bridge obfs4 ...
          Bridge obfs4 ..."))
          	  (transport-plugins
          	   (list (tor-transport-plugin
          		  (program (file-append lyrebird "/bin/lyrebird")))))))

   El módulo ‘(gnu services rsync)’ proporciona los siguientes
servicios:

   Puede ser que desee un daemon rsync si tiene archivos que desee tener
disponibles de modo que cualquiera (o simplemente usted) pueda descargar
archivos existentes o subir nuevos archivos.

 -- Variable: rsync-service-type
     Este es el tipo de servicio para el daemon rsync
     (https://rsync.samba.org). El valor tipo de servicio es un registro
     ‘rsync-configuration’ como en este ejemplo.

          ;; Export two directories over rsync.  By default rsync listens on
          ;; all the network interfaces.
          (service rsync-service-type
                   (rsync-configuration
                     (modules (list (rsync-module
                                      (name "music")
                                      (file-name "/srv/zik")
                                      (read-only? #f))
                                    (rsync-module
                                      (name "movies")
                                      (file-name "/home/charlie/movies"))))))

     Véase a continuación para detalles sobre ‘rsync-configuration’.

 -- Tipo de datos: rsync-configuration
     Tipo de datos que representa la configuración para ‘rsync-service’.

     ‘package’ (predeterminado: RSYNC)
          Paquete ‘rsync’ usado.

     ‘address’ (predeterminada: ‘#f’)
          IP address on which ‘rsync’ listens for incoming connections.
          If unspecified, it defaults to listening on all available
          addresses.

     ‘port-number’ (predeterminado: ‘873’)
          Puerto TCP en el que ‘rsync’ escucha conexiones entrantes. Si
          el puerto es menor a ‘1024’, ‘rsync’ necesita iniciarse como
          ‘root’, tanto usuaria como grupo.

     ‘pid-file’ (predeterminado: ‘"/var/run/rsyncd/rsyncd.pid"’)
          Nombre del archivo donde ‘rsync’ escribe su PID.

     ‘lock-file’ (predeterminado: ‘"/var/run/rsyncd/rsyncd.lock"’)
          Nombre del archivo donde ‘rsync’ escribe su archivo de
          bloqueo.

     ‘log-file’ (predeterminado: ‘"/var/log/rsyncd.log"’)
          Nombre del archivo donde ‘rsync’ escribe su archivo de
          registros.

     ‘user’ (predeterminada: ‘"root"’)
          Propietaria del proceso ‘rsync’.

     ‘group’ (default: ‘"root"’)
          Grupo del proceso ‘rsync’.

     ‘uid’ (default: ‘"rsyncd"’)
          Nombre o ID de usuaria bajo la cual se efectúan las
          transferencias desde y hacia el módulo cuando el daemon se
          ejecuta como ‘root’.

     ‘gid’ (default: ‘"rsyncd"’)
          Nombre o ID de grupo que se usa cuando se accede al módulo.

     ‘modules’ (predeterminados: ‘%default-modules’)
          List of “modules”—i.e., directories exported over rsync. Each
          element must be a ‘rsync-module’ record, as described below.

 -- Data Type: rsync-module
     This is the data type for rsync “modules”. A module is a directory
     exported over the rsync protocol. The available fields are as
     follows:

     ‘name’
          The module name. This is the name that shows up in URLs. For
          example, if the module is called ‘music’, the corresponding
          URL will be ‘rsync://host.example.org/music’.

     ‘file-name’
          Name of the directory being exported.

     ‘comment’ (predeterminado: ‘""’)
          Comment associated with the module. Client user interfaces may
          display it when they obtain the list of available modules.

     ‘read-only?’ (default: ‘#t’)
          Whether or not client will be able to upload files. If this is
          false, the uploads will be authorized if permissions on the
          daemon side permit it.

     ‘chroot?’ (default: ‘#t’)
          When this is true, the rsync daemon changes root to the
          module’s directory before starting file transfers with the
          client. This improves security, but requires rsync to run as
          root.

     ‘timeout’ (predeterminado: ‘300’)
          Idle time in seconds after which the daemon closes a
          connection with the client.

   The ‘(gnu services syncthing)’ module provides the following
services:

   You might want a Syncthing daemon if you have files between two or
more computers and want to sync them in real time, safely protected from
prying eyes.

 -- Variable: syncthing-service-type
     Éste es el tipo de servicio para el daemon syncthing
     (https://syncthing.net/) El valor tipo de servicio es un registro
     ‘syncthing-configuration’ como en este ejemplo.

          (service syncthing-service-type
                   (syncthing-configuration (user "alice")))

          Nota: This service is also available for Guix Home, where it
          runs directly with your user privileges (*note
          ‘home-syncthing-service-type’: Networking Home Services.).

     See below for details about ‘syncthing-configuration’.

 -- Data Type: syncthing-configuration
     Data type representing the configuration for
     ‘syncthing-service-type’.

     ‘syncthing’ (default: SYNCTHING)
          ‘syncthing’ package to use.

     ‘arguments’ (default: ’())
          List of command-line arguments passing to ‘syncthing’ binary.

     ‘logflags’ (default: 0)
          Sum of logging flags, see Syncthing documentation logflags
          (https://docs.syncthing.net/users/syncthing.html#cmdoption-logflags).

     ‘user’ (default: #F)
          The user as which the Syncthing service is to be run. This
          assumes that the specified user exists.

     ‘group’ (default: "USERS")
          The group as which the Syncthing service is to be run. This
          assumes that the specified group exists.

     ‘home’ (default: #F)
          Sets the ‘HOME’ variable for the Syncthing daemon. The default
          is ‘$HOME’ of the specified Syncthing ‘user’.

     ‘config-file’ (default: #F)
          Either a file-like object that resolves to a Syncthing
          configuration XML file, or a ‘syncthing-config-file’ record
          (see below). If set to ‘#f’, Guix will not try to generate a
          config file, and Syncthing will generate a default
          configuration which will not be touched on reconfigure.
          Specifying this in a system service moves Syncthing’s common
          configuration and data directory (‘--home’ in
          <https://docs.syncthing.net/users/syncthing.html>) to
          ‘/var/lib/syncthing-<user>’.

          When used as a home service, syncthing configuration will be
          populated in ‘~/.local/state/syncthing/’. Old Syncthing
          installs may have files in ‘$XDG_CONFIG_HOME/syncthing/’
          (usually ‘~/.config/syncthing/’), which will override
          configuration in ‘~/.local/state/syncthing’ managed by this
          service. In such cases, you should move the contents of
          ‘$XDG_CONFIG_HOME/syncthing/’ into
          ‘~/.local/state/syncthing/’.

   This section documents a subset of the Syncthing configuration
options—specifically those related to Guix or those affecting how your
computer will connect to other computers over the network (such as
Syncthing relays or discovery servers). The configuration is fully
documented in the upstream Syncthing config documentation
(https://docs.syncthing.net/users/config.html); camelCase there is
converted to kebab-case here. If you are migrating from a
Syncthing-managed configuration to one managed by Guix, you can check
what changes were introduced by ‘diff’ing the respective ‘config.xml’
files. Note that you will need to add whitespace with 4-space
indentation to the file generated by Guix, using the ‘xmllint’ program
from the ‘libxml2’ package like so:

     XMLLINT_INDENT="    " xmllint --format /path/to/new/config.xml | diff /path/to/old/config.xml -

   When generating a configuration file through Guix, you can still
temporarily modify Syncthing from the GUI or through ‘introducer’ and
‘autoAcceptFolders’ mechanisms, but such changes will be reset on
reconfigure.

 -- Data Type: syncthing-config-file
     Data type representing the configuration file read by the Syncthing
     daemon.

     ‘folders’ (default: ‘(list (syncthing-folder (id "default") (label "Default Folder") (path "~/Sync")))’
          The default here is the same as Syncthing’s default. The value
          should be a list of ‘syncthing-folder’s.

     ‘devices’ (default: ‘'()’
          This should be a list of ‘syncthing-device’s. Guix will
          automatically add any devices specified in any ‘folders’ to
          this list. There are instances when you want to connect to a
          device despite not (initially) sharing any folders (such as a
          device with autoAcceptFolders). In such instances, you should
          specify those devices here. If multiple versions of the same
          device (as determined by comparing device ID) are discovered,
          the one in this list is prioritized. Otherwise, the first
          instance in the first folder is used.

     ‘gui-enabled?’ (default: ‘#t’)
          By default, any user on the computer can access the GUI and
          make changes to Syncthing. If you leave this enabled, you
          should probably set ‘gui-user’ and ‘gui-password’ (see below).

     ‘gui-tls?’ (default: ‘#f’)
     ‘gui-debugging?’ (default: ‘#f’)
     ‘gui-send-basic-authorization-prompt?’ (default: ‘#f’)
     ‘gui-address’ (default: ‘"127.0.0.1:8384"’)
     ‘gui-user’ (default: ‘#f’)
     ‘gui-password’ (default: ‘#f’)
          A bcrypt hash of the GUI password. Remember that this will be
          globally exposed in ‘/gnu/store’.

     ‘gui-apikey’ (default: ‘#f’)
          You must specify this to use the Syncthing REST interface.
          This key is kept in ‘/gnu/store’ and is accessible to all
          users of the system.

     ‘gui-theme’ (default: ‘"default"’)
     ‘ldap-enabled?’ (default: ‘#f’)
     ‘ldap-address’ (default: ‘""’)
     ‘ldap-bind-dn’ (default: ‘""’)
     ‘ldap-transport’ (default: ‘""’)
     ‘ldap-insecure-skip-verify’ (default: ‘""’)
     ‘ldap-search-base-dn’ (default: ‘""’)
     ‘ldap-search-filter’ (default: ‘""’)
     ‘listen-address’ (default: ‘"default"’)
     ‘global-announce-server’ (default: ‘"default"’)
     ‘global-announce-enabled?’ (default: ‘#t’)
          Global discovery servers can be used to help connect devices
          at unknown IP addresses by storing the last known IP address.

     ‘local-announce-enabled?’ (default: ‘#t’)
          This makes devices find each other very easily on the same
          LAN. Often, this will allow you to just plug an Ethernet
          between two devices, or connect one device to the other’s
          hotspot and start syncing.

     ‘local-announce-port’ (default: ‘21027’)
     ‘local-announce-mac-address’ (default: ‘"[ff12::8384]:21027"’)
     ‘max-send-kbps’ (default: ‘0’)
     ‘max-receive-kbps’ (default: ‘0’)
     ‘reconnection-interval-seconds’ (default: ‘60’)
     ‘relays-enabled?’ (default: ‘#t’)
          This option allows your Syncthing instance to use a global
          network of relays
          (https://docs.syncthing.net/users/relaying.html) to enable
          syncing between devices when all other methods fail. As
          always, Syncthing traffic is encrypted in transport and the
          relays are unable to decrypt it.

     ‘relay-reconnect-interval-minutes’ (default: ‘10’)
     ‘start-browser?’ (default: ‘#t’)
     ‘nat-enabled?’ (default: ‘#t’)
     ‘nat-lease-minutes’ (default: ‘60’)
     ‘nat-renewal-minutes’ (default: ‘30’)
     ‘nat-timeout-seconds’ (default: ‘10’)
     ‘usage-reporting-accepted’ (default: ‘0’)
          Options whose names begin with ‘usage-reporting-’ control
          usage reporting. Set to -1 to disable, or to a positive value
          to enable. The default (0) disables reporting, but causes a
          usage reporting consent prompt to be displayed in the
          Syncthing GUI.

     ‘usage-reporting-seen’ (default: ‘0’)
     ‘usage-reporting-unique-id’ (default: ‘""’)
     ‘usage-reporting-url’ (default: ‘"https://data.syncthing.net/newdata"’)
     ‘usage-reporting-post-insecurely?’ (default: ‘#f’)
     ‘usage-reporting-initial-delay-seconds’ (default: ‘1800’)
     ‘auto-upgrade-interval-hours’ (default: ‘12’)
     ‘upgrade-to-pre-releases?’ (default: ‘#f’)
     ‘keep-temporaries-hours’ (default: ‘24’)
     ‘cache-ignored-files?’ (default: ‘#f’)
     ‘progress-update-interval-seconds’ (default: ‘5’)
     ‘limit-bandwidth-in-lan?’ (default: ‘#f’)
     ‘min-home-disk-free-unit’ (default: ‘"%"’)
     ‘min-home-disk-free’ (default: ‘1’)
     ‘releases-url’ (default: ‘"https://upgrades.syncthing.net/meta.json"’)
     ‘overwrite-remote-device-names-on-connect?’ (default: ‘#f’)
     ‘temp-index-min-blocks’ (default: ‘10’)
     ‘unacked-notification-id’ (default: ‘"authenticationUserAndPassword"’)
     ‘traffic-class’ (default: ‘0’)
     ‘set-low-priority?’ (default: ‘#t’)
     ‘max-folder-concurrency’ (default: ‘0’)
     ‘crash-reporting-url’ (default: ‘"https://crash.syncthing.net/newcrash"’)
     ‘crash-reporting-enabled?’ (default: ‘#t’)
     ‘stun-keepalive-start-seconds’ (default: ‘180’)
     ‘stun-keepalive-min-seconds’ (default: ‘20’)
     ‘stun-server’ (default: ‘"default"’)
     ‘database-tuning’ (default: ‘"auto"’)
     ‘max-concurrent-incoming-request-kib’ (default: ‘0’)
     ‘announce-lan-addresses?’ (default: ‘#t’)
     ‘send-full-index-on-upgrade?’ (default: ‘#f’)
     ‘connection-limit-enough’ (default: ‘0’)
     ‘connection-limit-max’ (default: ‘0’)
     ‘insecure-allow-old-tls-versions?’ (default: ‘#f’)
     ‘connection-priority-tcp-lan’ (default: ‘10’)
     ‘connection-priority-quic-lan’ (default: ‘20’)
     ‘connection-priority-tcp-wan’ (default: ‘30’)
     ‘connection-priority-quic-wan’ (default: ‘40’)
     ‘connection-priority-relay’ (default: ‘50’)
     ‘connection-priority-upgrade-threshold’ (default: ‘0’)
     ‘default-folder’ (default: ‘(syncthing-folder (label ""))’)
     ‘default-device’ (default: ‘(syncthing-device (id ""))’)
     ‘default-ignores’ (default: ‘"")’)
          Options whose names begin with ‘default-’ above do not affect
          folders and devices added through the Guix configuration
          interface. They will, however, affect folders and devices that
          are added through the Syncthing GUI, by an ‘introducer’, or a
          device with ‘auto-accept-folders’.

 -- Data Type: syncthing-folder
     Data type representing a folder to be synchronized.

     ‘id’ (predeterminado: ‘#f’)
          This ID cannot match the ID of any other folder on this
          device. If left unspecified, it will default to the label (see
          below).

     ‘label’
          A human readable label for the folder.

     ‘path’
          The path at which to store this folder.

     ‘type’ (default: ‘"sendreceive"’)
     ‘rescan-interval-seconds’ (default: ‘3600’)
     ‘file-system-watcher-enabled?’ (default: ‘#t’)
     ‘file-system-watcher-delay-seconds’ (default: ‘10’)
     ‘file-system-watcher-timeout-seconds’ (default: ‘0’)
     ‘ignore-permissions?’ (default: ‘#f’)
     ‘auto-normalize?’ (default: ‘#t’)
     ‘devices’ (default: ‘'()’)
          This should be a list of other Syncthing devices. You do not
          need to specify the current device. Each device can be listed
          as a a ‘syncthing-device’ record or a
          ‘syncthing-folder-device’ record if you want files to be
          encrypted on disk. See below.

     ‘filesystem-type’ (default: ‘"basic"’)
     ‘min-disk-free-unit’ (default: ‘"%"’)
     ‘min-disk-free’ (default: ‘1’)
     ‘versioning-type’ (default: ‘#f’)
     ‘versioning-file-system-path’ (default: ‘""’)
     ‘versioning-file-system-type’ (default: ‘"basic"’)
     ‘versioning-cleanup-interval-seconds’ (default: ‘3600’)
     ‘versioning-cleanout-days’ (default: ‘#f’)
     ‘versioning-keep’ (default: ‘#f’)
     ‘versioning-max-age’ (default: ‘#f’)
     ‘versioning-command’ (default: ‘#f’)
     ‘copiers’ (default: ‘0’)
     ‘puller-max-pending-kib’ (default: ‘0’)
     ‘hashers’ (default: ‘0’)
     ‘order’ (default: ‘"random"’)
     ‘ignore-delete?’ (default: ‘#f’)
     ‘scan-progress-interval-seconds’ (default: ‘0’)
     ‘puller-pause-seconds’ (default: ‘0’)
     ‘max-conflicts’ (default: ‘10’)
     ‘disable-sparse-files?’ (default: ‘#f’)
     ‘disable-temp-indexes?’ (default: ‘#f’)
     ‘paused?’ (default: ‘#f’)
     ‘weak-hash-threshold-percentage’ (default: ‘25’)
     ‘marker-name’ (default: ‘".stfolder"’)
     ‘copy-ownership-from-parent?’ (default: ‘#f’)
     ‘mod-time-window-seconds’ (default: ‘0’)
     ‘max-concurrent-writes’ (default: ‘2’)
     ‘disable-fsync?’ (default: ‘#f’)
     ‘block-pull-order’ (default: ‘"standard"’)
     ‘copy-range-method’ (default: ‘"standard"’)
     ‘case-sensitive-file-system?’ (default: ‘#f’)
     ‘junctions-as-dirs?’ (default: ‘#f’)
     ‘sync-ownership?’ (default: ‘#f’)
     ‘send-ownership?’ (default: ‘#f’)
     ‘sync-xattrs?’ (default: ‘#f’)
     ‘send-xattrs?’ (default: ‘#f’)
     ‘xattr-filter-max-single-entry-size’ (default: ‘1024’)
     ‘xattr-filter-max-total-size’ (default: ‘4096’)

 -- Data Type: syncthing-device
     Data type representing a device to synchronize folders with.

     ‘id’
          A long hash representing the keys generated by Syncthing on
          the first launch. You can obtain this from the Syncthing GUI
          or by inspecting an existing Syncthing configuration file.

     ‘name’ (default: ‘""’)
          A human readable device name for viewing in the GUI or in
          Scheme.

     ‘compression’ (default: ‘"metadata"’)
     ‘introducer?’ (default: ‘#f’)
     ‘skip-introduction-removals?’ (default: ‘#f’)
     ‘introduced-by’ (default: ‘""’)
     ‘addresses’ (default: ‘'("dynamic")’)
          List of addresses at which to search for this device. When the
          special value “dynamic” is included, Syncthing will search for
          the device locally as well as via the Syncthing project’s
          global discovery
          (https://docs.syncthing.net/users/security.html#global-discovery)
          servers.

     ‘paused?’ (default: ‘#f’)
     ‘auto-accept-folders?’ (default: ‘#f’)
     ‘max-send-kbps’ (default: ‘0’)
     ‘max-receive-kbps’ (default: ‘0’)
     ‘max-request-kib’ (default: ‘0’)
     ‘untrusted?’ (default: ‘#f’)
     ‘remote-gui-port’ (default: ‘0’)
     ‘num-connections’ (default: ‘0’)

 -- Data Type: syncthing-folder-device
     This data type offers two folder-specific device options:
     ‘introduced-by’ and ‘encryption-password’.

     ‘syncthing-folder-device’ corresponds to the ‘device’
     (https://docs.syncthing.net/users/config.html#config-option-folder.device)
     option in the upstream ‘folder’ element.

     If you don’t need to use these options, then you can just use
     ‘syncthing-device’ instead of ‘syncthing-folder-device’ in the
     ‘devices’ field of a ‘syncthing-folder’ instance.

     ‘device’
          El ‘syncthing-device’ para el cual está configuración se
          aplica.

     ‘introduced-by’ (default: ‘""’)
          The name of the device that "introduced" our device to the
          device sharing this folder. This is only used when
          "introduced" devices are removed by the introducer. See
          Syncthing introductions
          (https://docs.syncthing.net/users/introducer.html).

     ‘encryption-password’ (default: ‘""’)
          The password used to encrypt data that is synchronized to
          untrusted devices.

          Beware: specifying this field will include this password as
          plain text (not encrypted) and globally visible in
          ‘/gnu/store/’. If the encryption-password is non-empty, then
          it will be used as a password to encrypt file chunks as they
          are synchronized to untrusted devices. For more information on
          syncing to devices you don’t totally trust, see Syncthing’s
          documentation on Untrusted (Encrypted) Devices
          (https://docs.syncthing.net/users/untrusted.html). Note that
          data transfer is always encrypted while in transport
          ("end-to-end encryption"), regardless of this setting.

   Aquí está un ejemplo de configuración más complejo para propósito
ilustrativo:

     (service syncthing-service-type
              (let ((laptop (syncthing-device (id "VHOD2D6-...-7XRMDEN")))
                    (desktop (syncthing-device (id "64SAZ37-...-FZJ5GUA")
                                               (addresses '("tcp://example.com"))))
                    (bob-desktop (syncthing-device (id "KYIMEGO-...-FT77EAO"))))
                (syncthing-configuration
                 (user "alice")
                 (config-file
                  (syncthing-config-file
                    (folders (list (syncthing-folder
                                    (label "some-files")
                                    (path "~/data")
                                    (devices (list desktop laptop)))
                                   (syncthing-folder
                                    (label "critical-files")
                                    (path "~/secrets")
                                    (devices
                                     (list desktop
                                           laptop
                                           (syncthing-folder-device
                                            (device bob-desktop)
                                            (encryption-password "mypassword"))))))))))))

   Es más, ‘(gnu services ssh)’ proporciona los siguientes servicios.
 -- Variable: openssh-service-type
     Este es el tipo para el daemon de shell seguro OpenSSH
     (http://www.openssh.org), ‘sshd’. Su valor debe ser un registro
     ‘openssh-configuration’ como en este ejemplo:

          (service openssh-service-type
                   (openssh-configuration
                     (x11-forwarding? #t)
                     (permit-root-login 'prohibit-password)
                     (authorized-keys
                       `(("alice" ,(local-file "alice.pub"))
                         ("bob" ,(local-file "bob.pub"))))))

     Véase a continuación detalles sobre ‘openssh-configuration’.

     Este servicio se puede extender con claves autorizadas adicionales,
     como en este ejemplo:

          (service-extension openssh-service-type
                             (const `(("carlos"
                                       ,(local-file "carlos.pub")))))

 -- Tipo de datos: openssh-configuration
     Este es el registro de configuración para ‘sshd’ de OpenSSH.

     ‘openssh’ (predeterminado: OPENSSH)
          The OpenSSH package to use.

     ‘pid-file’ (predeterminado: ‘"/var/run/sshd.pid"’)
          Nombre del archivo donde ‘sshd’ escribe su PID.

     ‘port-number’ (predeterminado: ‘22’)
          Puerto TCP en el que ‘sshd’ espera conexiones entrantes.

     ‘max-connections’ (default: ‘200’)
          Hard limit on the maximum number of simultaneous client
          connections, enforced by the inetd-style Shepherd service
          (*note ‘make-inetd-constructor’: (shepherd)Service De- and
          Constructors.).

     ‘permit-root-login’ (predeterminado: ‘#f’)
          This field determines whether and when to allow logins as
          root. If ‘#f’, root logins are disallowed; if ‘#t’, they are
          allowed. If it’s the symbol ‘'prohibit-password’, then root
          logins are permitted but not with password-based
          authentication.

     ‘allow-empty-passwords?’ (predeterminado: ‘#f’)
          Cuando es verdadero, las usuarias con contraseñas vacías
          pueden ingresar en el sistema. Cuando es falso, no pueden.

     ‘password-authentication?’ (predeterminado: ‘#t’)
          Cuando es verdadero, las usuarias pueden ingresar al sistema
          con su contraseña. En caso falso, tienen otros métodos de
          identificación.

     ‘public-key-authentication?’ (predeterminado: ‘#t’)
          Cuando es verdadero, las usuarias pueden ingresar en el
          sistema mediante el uso de clave publica para su
          identificación. Cuando es falso, las usuarias tienen que usar
          otros métodos de identificación.

          Las claves públicas autorizadas se almacenan en
          ‘~/.ssh/authorized_keys’. Se usa únicamente por la versión 2
          del protocolo.

     ‘x11-forwarding?’ (predeterminado: ‘#f’)
          Cuando verdadero, la retransmisión de conexiones del cliente
          gráfico X11 está desactivada—en otras palabras, las opciones
          ‘-X’ y ‘-Y’ de ‘ssh’ funcionarán.

     ‘allow-agent-forwarding?’ (predeterminado: ‘#t’)
          Si se permite la retransmisión del agente de claves.

     ‘allow-tcp-forwarding?’ (predeterminado: ‘#t’)
          Si se permite la retransmisión TCP.

     ‘gateway-ports?’ (predeterminado: ‘#f’)
          Si se permiten los puertos pasarela.

     ‘challenge-response-authentication?’ (predeterminado: ‘#f’)
          Especifica si la identificación mediante respuesta de desafío
          está permitida (por ejemplo, a través de PAM).

     ‘use-pam?’ (predeterminado: ‘#t’)
          Permite el uso de la interfaz de módulos de identificación
          conectables (PAM). Si es ‘#t’ se activará la identificación
          PAM mediante el uso de ‘challenge-response-authentication?’ y
          ‘password-authentication?’, además del procesado de los
          módulos de cuenta usuaria y de sesión de PAM en todos los
          tipos de identificación.

          Debido a que la identificación mediante respuesta de desafío
          de PAM tiene un rol equivalente a la identificación por
          contraseña habitualmente, debería desactivar
          ‘challenge-response-authentication?’ o
          ‘password-authentication?’.

     ‘print-last-log?’ (predeterminado: ‘#t’)
          Especifica si ‘sshd’ debe imprimir la fecha y hora del último
          ingreso al sistema de la usuaria cuando una usuaria ingresa
          interactivamente.

     ‘subsystems’ (predeterminados: ‘'(("sftp" "internal-sftp"))’)
          Configura subsistemas externos (por ejemplo, el daemon de
          transmisión de archivos).

          Esta es una lista de listas de dos elementos, cada una de las
          cuales que contienen el nombre del subsistema y una orden (con
          parámetros opcionales) para ejecutar tras petición del
          subsistema.

          La orden ‘internal-sftp’ implementa un servidor SFTP dentro
          del mismo proceso. De manera alternativa, se puede especificar
          la orden ‘sftp-server’:
               (service openssh-service-type
                        (openssh-configuration
                         (subsystems
                          `(("sftp" ,(file-append openssh "/libexec/sftp-server"))))))

     ‘accepted-environment’ (predeterminado: ‘'()’)
          Una lista de cadenas que describe qué variables de entorno
          pueden ser exportadas.

          Cada cadena obtiene su propia línea. Véase la opción
          ‘AcceptEnv’ en ‘man sshd_config’.

          Este ejemplo permite a clientes ssh exportar la variable
          ‘COLORTERM’. La establecen emuladores de terminal que
          implementan colores. Puede usarla en su archivo de recursos
          del shell para permitir colores en la línea de órdenes y las
          propias ordenes si esta variable está definida.

               (service openssh-service-type
                        (openssh-configuration
                          (accepted-environment '("COLORTERM"))))

     ‘authorized-keys’ (predeterminadas: ‘'()’)
          Esta es la lista de claves autorizadas. Cada elemento de la
          lista es un nombre de usuaria seguido de uno o más objetos
          “tipo-archivo” que representan claves públicas SSH. Por
          ejemplo:

               (openssh-configuration
                 (authorized-keys
                   `(("rekado" ,(local-file "rekado.pub"))
                     ("chris" ,(local-file "chris.pub"))
                     ("root" ,(local-file "rekado.pub") ,(local-file "chris.pub")))))

          registra las claves públicas especificadas para las cuentas
          ‘rekado’, ‘chris’ y ‘root’.

          Se pueden especificar claves autorizadas adicionales a través
          de ‘service-extension’.

          Tenga en cuenta que esto _no_ interfiere con el uso de
          ‘~/.ssh/authorized_keys’.

     ‘generate-host-keys?’ (default: ‘#t’)
          Whether to generate host key pairs with ‘ssh-keygen -A’ under
          ‘/etc/ssh’ if there are none.

          Generating key pairs takes a few seconds when enough entropy
          is available and is only done once. You might want to turn it
          off for instance in a virtual machine that does not need it
          because host keys are provided in some other way, and where
          the extra boot time is a problem.

     ‘log-level’ (predeterminado: ‘'info’)
          Es un símbolo que especifica el nivel de detalle en los
          registros: ‘quiet’, ‘fatal’, ‘error’, ‘info’, ‘verbose’,
          ‘debug’, etc. Véase la página del manual de ‘sshd_config’ para
          la lista completa de los nombres de nivel.

     ‘extra-content’ (predeterminado: ‘""’)
          Este campo puede usarse para agregar un texto arbitrario al
          archivo de configuración. Es especialmente útil para
          configuraciones elaboradas que no se puedan expresar de otro
          modo. Esta configuración, por ejemplo, generalmente
          desactivaría el ingreso al sistema como root, pero lo permite
          para una dirección IP específica:

               (openssh-configuration
                 (extra-content "\
               Match Address 192.168.0.1
                 PermitRootLogin yes"))

 -- Variable: dropbear-service-type
     Type of the service that runs the Dropbear SSH daemon
     (https://matt.ucc.asn.au/dropbear/dropbear.html), whose value is a
     ‘<dropbear-configuration>’ object.

     For example, to specify a Dropbear service listening on port 1234:

          (service dropbear-service-type (dropbear-configuration
                                           (port-number 1234)))

 -- Tipo de datos: dropbear-configuration
     Este tipo de datos representa la configuración del daemon Dropbear
     SSH.

     ‘dropbear’ (predeterminado: DROPBEAR)
          El paquete de Dropbear usado.

     ‘port-number’ (predeterminado: 22)
          Puerto TCP donde el daemon espera conexiones entrantes.

     ‘syslog-output?’ (predeterminado: ‘#t’)
          Determina si se envía la salida a syslog.

     ‘pid-file’ (predeterminado: ‘"/var/run/dropbear.pid"’)
          El nombre de archivo del archivo de PID del daemon.

     ‘root-login?’ (predeterminado: ‘#f’)
          Si se permite el ingreso al sistema como ‘root’.

     ‘allow-empty-passwords?’ (predeterminado: ‘#f’)
          Si se permiten las contraseñas vacías.

     ‘password-authentication?’ (predeterminado: ‘#t’)
          Determina si se usará identificación basada en contraseña.

 -- Variable: autossh-service-type
     Tipo del servicio para el programa AutoSSH
     (https://www.harding.motd.ca/autossh) que ejecuta una copia de
     ‘ssh’ y la monitoriza, reiniciando la conexión en caso de que se
     rompa la conexión o deje de transmitir datos. AutoSSH puede
     ejecutarse manualmente en la línea de órdenes proporcionando los
     parámetros al binario ‘autossh’ del paquete ‘autossh’, pero también
     se puede ejecutar como un servicio de Guix. Este último caso de uso
     se encuentra documentado aquí.

     AutoSSH se puede usar para retransmitir tráfico local a una máquina
     remota usando un túnel SSH, y respeta el archivo de configuración
     ‘~/.ssh/config’ de la cuenta bajo la que se ejecute.

     Por ejemplo, para especificar un servicio que ejecute autossh con
     la cuenta ‘pino’ y retransmita todas las conexiones locales al
     puerto ‘8081’ hacia ‘remote:8081’ usando un túnel SSH, añada esta
     llamada al campo ‘services’ del sistema operativo:

          (service autossh-service-type
                   (autossh-configuration
                    (user "pino")
                    (ssh-options (list "-T" "-N" "-L" "8081:localhost:8081" "remote.net"))))

 -- Tipo de datos: autossh-configuration
     Este tipo de datos representa la configuración del servicio
     AutoSSH.

     ‘user’ (predeterminado: ‘"autossh"’)
          La cuenta de usuaria con la cual se ejecuta el servicio
          AutoSSH. Se asume que existe dicha cuenta.

     ‘poll’ (predeterminado: ‘600’)
          Especifica el tiempo de comprobación de la conexión en
          segundos.

     ‘first-poll’ (predeterminado: ‘#f’)
          Especifica cuantos segundos espera AutoSSH antes de la primera
          prueba de conexión. Tras esta primera prueba las
          comprobaciones se realizan con la frecuencia definida en
          ‘poll’. Cuando se proporciona el valor ‘#f’ la primera
          comprobación no se trata de manera especial y también usará el
          valor especificado en ‘poll’.

     ‘gate-time’ (predeterminado: ‘30’)
          Especifica cuantos segundos debe estar activa una conexión SSH
          antes de que se considere satisfactoria.

     ‘log-level’ (predeterminado: ‘1’)
          El nivel de registro, corresponde con los niveles usados
          por—por lo que ‘0’ es el más silencioso y ‘7’ el que contiene
          más información.

     ‘max-start’ (predeterminado: ‘#f’)
          El número de veces máximo que puede lanzarse (o reiniciarse)
          SSH antes de que AutoSSH termine. Cuando se proporciona ‘#f’,
          no existe un máximo por lo que AutoSSH puede reiniciar la
          conexión indefinidamente.

     ‘message’ (predeterminado: ‘""’)
          El mensaje que se añade al mensaje de eco que se envía cuando
          se prueban las conexiones.

     ‘port’ (predeterminado: ‘"0"’)
          Los puertos usados para la monitorización de la conexión.
          Cuando se proporciona ‘"0"’, se desactiva la monitorización.
          Cuando se proporciona ‘"N"’ donde N es un entero positivo, los
          puertos N y N+1 se usan para monitorizar la conexión, de tal
          modo que el puerto N es el puerto base de monitorización y
          ‘n+1’ es el puerto de eco. Cuando se proporciona ‘"N:M"’ donde
          N y M son enteros positivos, los puertos N y M se usan para
          monitorizar la conexión, de tal modo que N es el puerto base
          de monitorización y M es el puerto de eco.

     ‘ssh-options’ (predeterminados: ‘'()’)
          Lista de parámetros de línea de órdenes proporcionados a ‘ssh’
          cuando se ejecuta. Las opciones ‘-f’ y ‘-M’ están reservadas
          para AutoSSH y pueden causar un comportamiento indefinido.

 -- Variable: webssh-service-type
     Tipo para el programa WebSSH (https://webssh.huashengdun.org/) que
     ejecuta un cliente SSH web. WebSSH puede ejecutarse manualmente en
     la línea de órdenes proporcionando los parámetros al binario ‘wssh’
     del paquete ‘webssh’, pero también se puede ejecutar como un
     servicio de Guix. Este último caso de uso se encuentra documentado
     aquí.

     Por ejemplo, para especificar un servicio que ejecute WebSSH en la
     interfaz de red local sobre el puerto ‘8888’ con una política de
     rechazo predeterminado con una lista de máquinas a las que se les
     permite explícitamente la conexión, y NGINX como pasarela inversa
     de este servicio a la escucha de conexiones HTTPS, añada esta
     llamada al campo ‘services’ de su declaración de sistema operativo:

          (service webssh-service-type
            (webssh-configuration (address "127.0.0.1")
                                  (port 8888)
                                  (policy 'reject)
                                  (known-hosts '("localhost ecdsa-sha2-nistp256 AAAA…"
                                                 "127.0.0.1 ecdsa-sha2-nistp256 AAAA…"))))

          (service nginx-service-type
                   (nginx-configuration
                    (server-blocks
                     (list
                      (nginx-server-configuration
                       (inherit %webssh-configuration-nginx)
                       (server-name '("webssh.example.com"))
                       (listen '("443 ssl"))
                       (ssl-certificate (letsencrypt-certificate "webssh.example.com"))
                       (ssl-certificate-key (letsencrypt-key "webssh.example.com"))
                       (locations
                        (cons (nginx-location-configuration
                               (uri "/.well-known")
                               (body '("root /var/www;")))
                              (nginx-server-configuration-locations %webssh-configuration-nginx))))))))

 -- Tipo de datos: webssh-configuration
     Tipo de datos que representa la configuración para
     ‘webssh-service’.

     ‘package’ (predeterminado: WEBSSH)
          Paquete ‘webssh’ usado.

     ‘user-name’ (predeterminado: "WEBSSH")
          Nombre o ID de usuaria bajo la cual se efectúan las
          transferencias desde y hacia el módulo.

     ‘group-name’ (predeterminado: "WEBSSH")
          Nombre o ID de grupo que se usa cuando se accede al módulo.

     ‘address’ (predeterminada: #F)
          Dirección IP en la que ‘webssh’ espera conexiones entrantes.

     ‘port’ (predeterminado: 8888)
          Puerto TCP en el que ‘webssh’ espera conexiones entrantes.

     ‘policy’ (predeterminada: #F)
          Política de conexión. La política REJECT necesita que se
          especifique un valor en KNOWN-HOSTS.

     ‘known-hosts’ (predeterminada: ’())
          Lista de máquinas a las que se permite realizar conexiones SSH
          desde ‘webssh’.

     ‘log-file’ (predeterminado: ‘"/var/log/webssh.log"’)
          Name of the file where ‘webssh’ writes its log file.

     ‘log-level’ (predeterminado: #F)
          Nivel de registro.

 -- Variable: block-facebook-hosts-service-type
     This service type adds a list of known Facebook hosts to the
     ‘/etc/hosts’ file. (*note (libc)Host Names::) Each line contains an
     entry that maps a known server name of the Facebook on-line
     service—e.g., ‘www.facebook.com’—to unroutable IPv4 and IPv6
     addresses.

     Este mecanismo puede impedir a los programas que se ejecutan
     localmente, como navegadores Web, el acceso a Facebook.

   El módulo ‘(gnu services avahi)’ proporciona la siguiente definición.

 -- Variable: avahi-service-type
     Éste es el servicio que ejecuta ‘avahi-daemon’, un servidor
     mDNS/DNS-SD a nivel del sistema que permite el descubrimiento de
     servicios y la búsqueda de nombres de máquina “sin configuración”
     (“zero-configuration”, consulte <https://avahi.org/>). Su valor
     debe ser un registro ‘avahi-configuration’—véase a continuación.

     Este servicio extiende el daemon de la caché del servicio de
     nombres (nscd) de manera que pueda resolver nombres de máquina
     ‘.local’ mediante el uso de nss-mds
     (https://0pointer.de/lennart/projects/nss-mdns). *Note Selector de
     servicios de nombres::, para información sobre la resolución de
     nombres de máquina.

     De manera adicional, añade el paquete AVAHI al perfil del sistema
     de manera que ordenes como ‘avahi-browse’ estén disponibles de
     manera directa.

 -- Tipo de datos: avahi-configuration
     Tipo de datos que representa la configuración de Avahi.

     ‘host-name’ (predeterminado: ‘#f’)
          Si es diferente de ‘#f’, se usa como el nombre de máquina a
          publicar para esta máquina; en otro caso, usa el nombre actual
          de la máquina.

     ‘publish?’ (predeterminado: ‘#t’)
          Cuando es verdadero, permite la publicación (retransmisión) de
          nombres de máquina y servicios a través de la red.

     ‘publish-workstation?’ (predeterminado: ‘#t’)
          Cuando es verdadero, ‘avahi-daemon’ publica el nombre de
          máquina y la dirección IP a través de mDNS en la red local.
          Para ver los nombres de máquina publicados en su red local,
          puede ejecutar:

               avahi-browse _workstation._tcp

     ‘wide-area?’ (predeterminado: ‘#f’)
          Cuando es verdadero, se permite DNS-SD sobre DNS unicast.

     ‘ipv4?’ (predeterminado: ‘#t’)
     ‘ipv6?’ (predeterminado: ‘#t’)
          Estos campos determinan si usar sockets IPv4/IPv6.

     ‘domains-to-browse’ (predeterminado: ‘'()’)
          Esta es la lista de dominios a explorar.

 -- Variable: openvswitch-service-type
     Este es el tipo del servicio Open vSwitch
     (https://www.openvswitch.org), cuyo valor debe ser un objeto
     ‘openvswitch-configuration’.

 -- Tipo de datos: openvswitch-configuration
     Tipo de datos que representa la configuración de Open vSwitch, un
     switch virtual multicapa que está diseñado para permitir una
     automatización masiva en la red a través de extensión programática.

     ‘package’ (predeterminado: OPENVSWITCH)
          El objeto paquete de Open vSwitch.

 -- Variable: pagekite-service-type
     El tipo de servicio para el servicio PageKite
     (https://pagekite.net), una solución de encaminado para hacer
     servidores de la red local visibles públicamente, incluso detrás de
     cortafuegos restrictivos o NAT sin redirección de puertos. El valor
     para este servicio es un registro ‘pagekite-configuration’.

     Este es un ejemplo que expone los daemon HTTP y SSH locales:

          (service pagekite-service-type
                   (pagekite-configuration
                     (kites '("http:@kitename:localhost:80:@kitesecret"
                              "raw/22:@kitename:localhost:22:@kitesecret"))
                     (extra-file "/etc/pagekite.rc")))

 -- Tipo de datos: pagekite-configuration
     Tipo de datos que representa la configuración de PageKite.

     ‘package’ (predeterminado: PAGEKITE)
          El objeto paquete de PageKite.

     ‘kitename’ (predeterminado: ‘#f’)
          Nombre de PageKite para la identificación con el servidor de
          fachada.

     ‘kitesecret’ (predeterminado: ‘#f’)
          Secreto compartido para la comunicación con el servidor.
          Probablemente debería almacenarlo dentro ‘extra-file’ en vez
          de aquí.

     ‘frontend’ (predeterminado: ‘#f’)
          Conecta al servidor de fachada de PageKite con este nombre en
          vez de al servicio de pagekite.net.

     ‘kites’ (predeterminados: ‘'("http:@kitename:localhost:80:@kitesecret")’)
          List of service kites to use. Exposes HTTP on port 80 by
          default. The format is ‘proto:kitename:host:port:secret’.

     ‘extra-file’ (predeterminado: ‘#f’)
          Archivo adicional de configuración que debe leerse, el cual se
          espera que sea creado de forma manual. Úselo para añadir
          opciones adicionales y gestionar secretos compartidos fuera de
          banda.

 -- Variable: yggdrasil-service-type
     The service type for connecting to the Yggdrasil network
     (https://yggdrasil-network.github.io/), an early-stage
     implementation of a fully end-to-end encrypted IPv6 network.

          Yggdrasil provides name-independent routing with
          cryptographically generated addresses. Static addressing means
          you can keep the same address as long as you want, even if you
          move to a new location, or generate a new address (by
          generating new keys) whenever you want.
          <https://yggdrasil-network.github.io/2018/07/28/addressing.html>

     Pass it a value of ‘yggdrasil-configuration’ to connect it to
     public peers and/or local peers.

     Here is an example using public peers and a static address. The
     static signing and encryption keys are defined in
     ‘/etc/yggdrasil-private.conf’ (the default value for
     ‘config-file’).

          ;; part of the operating-system declaration
          (service yggdrasil-service-type
                        (yggdrasil-configuration
                         (autoconf? #f) ;; use only the public peers
                         (json-config
                         ;; choose one from
                         ;; https://github.com/yggdrasil-network/public-peers
                          '((peers . #("tcp://1.2.3.4:1337"))))
                         ;; /etc/yggdrasil-private.conf is the default value for config-file
                         ))
          # sample content for /etc/yggdrasil-private.conf
          {
            # Your private key. DO NOT share this with anyone!
            PrivateKey: 5c750...
          }

 -- Data Type: yggdrasil-configuration
     Data type representing the configuration of Yggdrasil.

     ‘package’ (default: ‘yggdrasil’)
          Package object of Yggdrasil.

     ‘json-config’ (default: ‘'()’)
          Contents of ‘/etc/yggdrasil.conf’. Will be merged with
          ‘/etc/yggdrasil-private.conf’. Note that these settings are
          stored in the Guix store, which is readable to all users. *Do
          not store your private keys in it*. See the output of
          ‘yggdrasil -genconf’ for a quick overview of valid keys and
          their default values.

     ‘autoconf?’ (default: ‘#f’)
          Whether to use automatic mode. Enabling it makes Yggdrasil use
          a dynamic IP and peer with IPv6 neighbors.

     ‘log-level’ (predeterminado: ‘'info’)
          How much detail to include in logs. Use ‘'debug’ for more
          detail.

     ‘log-to’ (default: ‘'stdout’)
          Where to send logs. By default, the service logs standard
          output to ‘/var/log/yggdrasil.log’. The alternative is
          ‘'syslog’, which sends output to the running syslog service.

     ‘config-file’ (default: ‘"/etc/yggdrasil-private.conf"’)
          What HJSON file to load sensitive data from. This is where
          private keys should be stored, which are necessary to specify
          if you don’t want a randomized address after each restart. Use
          ‘#f’ to disable. Options defined in this file take precedence
          over ‘json-config’. Use the output of ‘yggdrasil -genconf’ as
          a starting point. To configure a static address, delete
          everything except PrivateKey option.

 -- Variable: ipfs-service-type
     The service type for connecting to the IPFS network
     (https://ipfs.io), a global, versioned, peer-to-peer file system.
     Pass it a ‘ipfs-configuration’ to change the ports used for the
     gateway and API.

     Here’s an example configuration, using some non-standard ports:

          (service ipfs-service-type
                   (ipfs-configuration
                    (gateway "/ip4/127.0.0.1/tcp/8880")
                    (api "/ip4/127.0.0.1/tcp/8881")))

 -- Data Type: ipfs-configuration
     Data type representing the configuration of IPFS.

     ‘package’ (default: ‘go-ipfs’)
          Package object of IPFS.

     ‘gateway’ (default: ‘"/ip4/127.0.0.1/tcp/8082"’)
          Address of the gateway, in ‘multiaddress’ format.

     ‘api’ (default: ‘"/ip4/127.0.0.1/tcp/5001"’)
          Address of the API endpoint, in ‘multiaddress’ format.

 -- Variable: keepalived-service-type
     This is the type for the Keepalived (https://www.keepalived.org/)
     routing software, ‘keepalived’. Its value must be an
     ‘keepalived-configuration’ record as in this example for master
     machine:

          (service keepalived-service-type
                   (keepalived-configuration
                     (config-file (local-file "keepalived-master.conf"))))

     where ‘keepalived-master.conf’:

          vrrp_instance my-group {
            state MASTER
            interface enp9s0
            virtual_router_id 100
            priority 100
            unicast_peer { 10.0.0.2 }
            virtual_ipaddress {
              10.0.0.4/24
            }
          }

     and for backup machine:

          (service keepalived-service-type
                   (keepalived-configuration
                    (config-file (local-file "keepalived-backup.conf"))))

     where ‘keepalived-backup.conf’:

          vrrp_instance my-group {
            state BACKUP
            interface enp9s0
            virtual_router_id 100
            priority 99
            unicast_peer { 10.0.0.3 }
            virtual_ipaddress {
              10.0.0.4/24
            }
          }


File: guix.es.info,  Node: Actualizaciones no-atendidas,  Next: Sistema X Window,  Prev: Servicios de red,  Up: Servicios

11.10.6 Actualizaciones no-atendidas
------------------------------------

El módulo ‘(gnu services admin)’ proporciona un servicio para realizar
_actualizaciones desatendidas_: periodicamente el sistema se reconfigura
automáticamente con la última revisión de Guix. El sistema Guix tiene
varias propiedades que hacen que las actualizaciones desatendidas sean
seguras:

   • las actualizaciones son transaccionales (o bien la actualización se
     lleva a cabo con éxito o bien falla, pero no puede acabar en un
     estado “intermedio” del sistema);
   • el registro de actualizaciones se mantiene—puede acceder a dicho
     registro con ‘guix system list-generations’—y puede volver a una
     generación previa, en caso de que alguna generación no funcione
     como desee;
   • el código del canal se verifica de modo que únicamente pueda
     ejecutar código que ha sido firmado (*note Canales::);
   • ‘guix system reconfigure’ evita la instalación de versiones
     previas, que lo hace inmune a “ataques de versión anterior”.

   Para configurar las actualizaciones desatendidas, añada una instancia
de ‘unattended-upgrade-service-type’ como la que se muestra a
continuación a la lista de servicios de su sistema operativo:

     (service unattended-upgrade-service-type)

   El valor predeterminado configura actualizaciones semanales: cada
domingo a medianoche. No es necesario que proporcione el archivo de
configuración de su sistema operativo: el servicio usa
‘/run/current-system/configuration.scm’, lo que asegura el uso de su
última configuración—*note provenance-service-type::, para obtener más
información sobre este archivo.

   Hay varios aspectos que se pueden configurar, en particular la
periodicidad y los servicios (daemon) que se reiniciarán tras completar
la actualización. Cuando la actualización se lleva a cabo
satisfactoriamente el servicio se encarga de borrar las generaciones del
sistema cuya antigüedad es superior a determinado valor, usando ‘guix
system delete-generations’. Véase la referencia a continuación para
obtener más detalles.

   Para asegurar que las actualizaciones se están levando a cabo
realmente, puede ejecutar ‘guix system describe’. Para investigar fallos
en las actualizaciones, visite el archivo de registro de las
actualizaciones desatendidas (véase a continuación).

 -- Variable: unattended-upgrade-service-type
     This is the service type for unattended upgrades. It sets up a
     Shepherd Timer (*note Ejecución de tareas programadas::) that runs
     ‘guix system reconfigure’ from the latest version of the specified
     channels.

     Su valor debe ser un registro ‘unattended-upgrade-configuration’
     (véase a continuación).

 -- Tipo de datos: unattended-upgrade-configuration
     Este tipo de datos representa la configuración del servicio de
     actualizaciones desatendidas. Los siguientes campos están
     disponibles:

     ‘schedule’ (predeterminada: ‘"30 01 * * 0"’)
          This is the schedule of upgrades, expressed as a string in
          traditional cron syntax or as a gexp evaluating to a Shepherd
          calendar event (*note (shepherd)Timers::).

     ‘channels’ (predeterminada: ‘#~%default-channels’)
          Esta expresión-G especifica los canales usados para la
          actualización (*note Canales::). De manera predeterminada, se
          usa la última revisión del canal oficial ‘guix’.

     ‘operating-system-file’ (predeterminado: ‘"/run/current-system/configuration.scm"’)
          Este campo especifica el archivo de configuración del sistema
          operativo usado. El valor predeterminado reutiliza el archivo
          de configuración de la configuración actual.

          No obstante hay casos en los que no es suficiente hacer
          referencia a ‘/run/current-system/configuration.scm’, por
          ejemplo porque dicho archivo hace referencia a archivos
          adicionales (claves públicas de SSH, archivos de configuración
          adicionales, etcétera) a través de ‘local-file’ y
          construcciones similares. Para estos casos recomendamos una
          configuración parecida a esta:

               (unattended-upgrade-configuration
                 (operating-system-file
                   (file-append (local-file "." "config-dir" #:recursive? #t)
                                "/config.scm")))

          El efecto que esto tiene es la importación del directorio
          actual al completo en el almacén, y hace referencia a
          ‘config.scm’ dentro de dicho directorio. Por lo tanto, los
          usos de ‘local-file’ dentro de ‘config.scm’ funcionarán como
          se espera. *Note Expresiones-G:: para más información acerca
          de ‘local-file’ y ‘file-append’.

     ‘operating-system-expression’ (default: ‘#f’)
          This field specifies an expression that evaluates to the
          operating system to use for the upgrade. If no value is
          provided the ‘operating-system-file’ field value is used.

               (unattended-upgrade-configuration
                 (operating-system-expression
                   #~(@ (guix system install) installation-os)))

     ‘reboot?’ (default: ‘#f’)
          This field specifies whether the system should reboot after
          completing an unattended upgrade.

          When ‘reboot?’ is ‘#t’, services are not restarted before
          rebooting. This means that the value for ‘services-to-restart’
          is ignored. The updated services will be started after the
          system reboots.

     ‘services-to-restart’ (default: ‘'(unattended-upgrade)’)
          Este campo especifica los servicios de Shepherd que se
          reiniciarán cuando se complete una actualización.

          Estos servicios se reinician tras completarse la
          actualización, como ejecutando ‘herd restart’, lo que asegura
          la ejecución de la última versión—recuerde que de manera
          predeterminada ‘guix system reconfigure’ únicamente reinicia
          los servicios que no se están ejecutando en este momento, lo
          que es una aproximación conservadora: minimiza la disrupción
          pero mantiene servicios en ejecución con código previo a la
          actualización.

          Use ‘herd status’ to find out candidates for restarting. *Note
          Servicios::, for general information about services. Common
          services to restart would include ‘ntpd’ and ‘ssh-daemon’.

          De manera predeterminada se reinicia el servicio
          ‘unattended-upgrade’. Esto asegura que la última versión del
          trabajo de actualización desatendida será la que se use la
          próxima vez.

     ‘system-expiration’ (predeterminado: ‘(* 3 30 24 3600)’)
          Tiempo de expiración en segundos de las generaciones del
          sistema. Las generaciones del sistema cuya antigüedad sea
          mayor que esta cantidad de tiempo se borran con ‘guix system
          delete-generations’ cuando se completa una actualización.

               Nota: El servicio de actualizaciones desatendidas no
               ejecuta el proceso de recolección de basura.
               Probablemente quiera añadir su propio trabajo a mcron
               para ejecutar ‘guix gc’ de manera periódica.

     ‘maximum-duration’ (predeterminado: ‘3600’)
          Duración máxima en segundos de la actualización; tras pasar
          este tiempo se aborta la actualización.

          Esto es útil principalmente para asegurar que una
          actualización no reconstruye o vuelve a descargarse “el mundo
          entero”.

     ‘log-file’ (predeterminado: ‘"/var/log/unattended-upgrade.log"’)
          Archivo donde se registran las actualizaciones desatendidas.


File: guix.es.info,  Node: Sistema X Window,  Next: Servicios de impresión,  Prev: Actualizaciones no-atendidas,  Up: Servicios

11.10.7 Sistema X Window
------------------------

El sistema gráfico X Window—específicamente Xorg—se proporciona en el
módulo ‘(gnu services xorg)’. Fíjese que no existe un procedimiento
‘xorg-service’. En vez de eso, el servidor X se inicia por el “gestor de
ingreso al sistema”, de manera predeterminada el gestor de acceso de
GNOME (GDM).

   GDM por supuesto que permite a las usuarias ingresar al sistema con
gestores de ventanas y entornos de escritorio distintos a GNOME; para
aquellas que usan GNOME, GDM es necesario para características como el
bloqueo automático de pantalla.

   Para usar X11, debe instalar al menos un “gestor de ventanas”—por
ejemplo los paquetes ‘windowmaker’ o ‘openbox’—, preferiblemente
añadiendo el que desee al campo ‘packages’ de su definición de sistema
operativo (*note paquetes del sistema: Referencia de operating-system.).

   GDM also supports Wayland: it can itself use Wayland instead of X11
for its user interface, and it can also start Wayland sessions. Wayland
support is enabled by default. To disable it, set ‘wayland?’ to ‘#f’ in
‘gdm-configuration’.

 -- Variable: gdm-service-type
     Éste es el tipo para el gestor de acceso GNOME
     (https://wiki.gnome.org/Projects/GDM/) (GDM), un programa que
     gestiona servidores gráficos y maneja de forma gráfica el ingreso
     al sistema de usuarias. Su valor debe ser un ‘gdm-configuration’
     (véas a continuación).

     GDM looks for “session types” described by the ‘.desktop’ files in
     ‘/run/current-system/profile/share/xsessions’ (for X11 sessions)
     and ‘/run/current-system/profile/share/wayland-sessions’ (for
     Wayland sessions) and allows users to choose a session from the
     log-in screen. Packages such as ‘gnome’, ‘xfce’, ‘i3’ and ‘sway’
     provide ‘.desktop’ files; adding them to the system-wide set of
     packages automatically makes them available at the log-in screen.

     Además, se respetan los archivos ‘~/.xsession’. Cuando esté
     disponible, ‘~/.xsession’ debe ser un ejecutable que inicie un
     gestor de ventanas y/o otros clientes de X.

 -- Tipo de datos: gdm-configuration
     ‘auto-login?’ (predeterminado: ‘#f’)
     ‘default-user’ (predeterminado: ‘#f’)
          Cuando ‘auto-login?’ es falso, GDM presenta una pantalla de
          ingreso.

          Cuando ‘auto-login?’ es verdadero, GDM ingresa directamente al
          sistema como ‘default-user’.

     ‘auto-suspend?’ (default ‘#t’)
          When true, GDM will automatically suspend to RAM when nobody
          is physically connected. When a machine is used via remote
          desktop or SSH, this should be set to false to avoid GDM
          interrupting remote sessions or rendering the machine
          unavailable.

     ‘debug?’ (predeterminado: ‘#f’)
          Cuando tiene valor verdadero, GDM escribe los mensajes de
          depuración en su registro.

     ‘gnome-shell-assets’ (predeterminados: ...)
          Lista de activos de GNOME Shell necesarios para GDM: tema de
          iconos, fuentes, etc.

     ‘xorg-configuration’ (predeterminada: ‘(xorg-configuration)’)
          Configuración del servidor gráfico Xorg.

     ‘x-session’ (default: ‘(xinitrc)’)
          Guión a ejecutar antes de iniciar una sesión X.

     ‘xdmcp?’ (default: ‘#f’)
          When true, enable the X Display Manager Control Protocol
          (XDMCP). This should only be enabled in trusted environments,
          as the protocol is not secure. When enabled, GDM listens for
          XDMCP queries on the UDP port 177.

     ‘dbus-daemon’ (predeterminado: ‘dbus-daemon-wrapper’)
          El nombre de archivo del ejecutable ‘dbus-daemon’.

     ‘gdm’ (predeterminado: ‘gdm’)
          El paquete GDM usado.

     ‘wayland?’ (default: ‘#t’)
          When true, enables Wayland in GDM, necessary to use Wayland
          sessions.

     ‘wayland-session’ (default: ‘gdm-wayland-session-wrapper’)
          The Wayland session wrapper to use, needed to setup the
          environment.

 -- Variable: slim-service-type
     Este es el tipo para el gestor de ingreso al sistema gráfico para
     X11 SLiM.

     Como GDM, SLiM busca tipos de sesión descritos por archivos
     ‘.desktop’ y permite a las usuarias la selección de sesión en la
     pantalla de ingreso al sistema mediante el uso de ‘F1’. También
     respeta los archivos ‘~/.xsession’.

     Al contrario que GDM, SLiM no lanza las sesiones de las usuarias en
     terminales virtuales diferentes al usado para el ingreso, lo que
     significa que únicamente puede iniciar una sesión gráfica. Si desea
     ejecutar varias sesiones gráficas de manera simultánea, debe añadir
     múltiples servicios de SLiM a los servicios de su sistema. El
     ejemplo siguiente muestra cómo sustituir el servicio GDM
     predeterminado con dos servicios de SLiM en tty7 y tty8.

          (use-modules (gnu services)
                       (gnu services desktop)
                       (gnu services xorg))

          (operating-system
            ;; ...
            (services (cons* (service slim-service-type (slim-configuration
                                                         (display ":0")
                                                         (vt "vt7")))
                             (service slim-service-type (slim-configuration
                                                         (display ":1")
                                                         (vt "vt8")))
                             (modify-services %desktop-services
                               (delete gdm-service-type)))))

 -- Tipo de datos: slim-configuration
     Tipo de datos que representa la configuración de
     ‘slim-service-type’.

     ‘allow-empty-passwords?’ (predeterminado: ‘#t’)
          Si se permite el ingreso al sistema con contraseñas vacías.

     ‘gnupg?’ (default: ‘#f’)
          If enabled, ‘pam-gnupg’ will attempt to automatically unlock
          the user’s GPG keys with the login password via ‘gpg-agent’.
          The keygrips of all keys to be unlocked should be written to
          ‘~/.pam-gnupg’, and can be queried with ‘gpg -K
          --with-keygrip’. Presetting passphrases must be enabled by
          adding ‘allow-preset-passphrase’ in ‘~/.gnupg/gpg-agent.conf’.

     ‘auto-login?’ (predeterminado: ‘#f’)
     ‘default-user’ (predeterminado: ‘""’)
          Cuando ‘auto-login?’ es falso, SLiM presenta una pantalla de
          ingreso.

          Cuando ‘auto-login?’ es verdadero, SLiM ingresa en el sistema
          directamente como ‘default-user’.

     ‘theme’ (predeterminado: ‘%default-slim-theme’)
     ‘theme-name’ (predeterminado: ‘%default-slim-theme-name’)
          El tema gráfico usado y su nombre.

     ‘auto-login-session’ (predeterminado: ‘#f’)
          Si es verdadero, debe ser el nombre del ejecutable a arrancar
          como la sesión predeterminada—por ejemplo, ‘(file-append
          windowmaker "/bin/windowmaker")’.

          Si es falso, se usará una sesión de las descritas en uno de
          los archivos ‘.desktop’ disponibles en
          ‘/run/current-system/profile’ y ‘~/.guix-profile’.

               Nota: Debe instalar al menos un gestor de ventanas en el
               perfil del sistema o en su perfil de usuaria. En caso de
               no hacerlo, si ‘auto-login-session’ es falso, no podrá
               ingresar al sistema.

     ‘xorg-configuration’ (predeterminada ‘(xorg-configuration)’)
          Configuración del servidor gráfico Xorg.

     ‘display’ (predeterminada: ‘":0"’)
          La pantalla en la que se iniciará el servidor gráfico Xorg.

     ‘vt’ (predeterminado: ‘"vt7"’)
          El terminal virtual (VT) en el que se iniciará el servidor
          gráfico Xorg.

     ‘xauth’ (predeterminado: ‘xauth’)
          El paquete XAuth usado.

     ‘shepherd’ (predeterminado: ‘shepherd’)
          El paquete de Shepherd usado para la invocación de ‘halt’ y
          ‘reboot’.

     ‘sessreg’ (predeterminado: ‘sessreg’)
          El paquete sessreg usado para el registro de la sesión.

     ‘slim’ (predeterminado: ‘slim’)
          El paquete SLiM usado.

 -- Variable: %default-theme
 -- Variable: %default-theme-name
     El tema predeterminado de SLiM y su nombre.

 -- Variable: sddm-service-type
     Es el tipo del servicio que ejecuta el gestor de entrada SDDM
     (https://github.com/sddm/sddm). Su valor es un registro
     ‘sddm-configuration’ (véase a continuación).

     Este es un ejemplo de su uso:

          (service sddm-service-type
                   (sddm-configuration
                     (auto-login-user "alicia")
                     (auto-login-session "xfce.desktop")))

 -- Tipo de datos: sddm-configuration
     Este tipo de datos representa la configuración del gestor de
     ingreso al sistema SDDM. Los campos disponibles son:

     ‘sddm’ (predeterminado: ‘sddm’)
          El paquete SDDM usado.

               Nota: sddm has Qt6 enabled by default. If you want to
               still use a Qt5 theme, you need to set it to ‘sddm-qt5’.

     ‘display-server’ (predeterminado: "x11")
          Selecciona el servidor de pantalla usado para el saludo. Los
          valores validos son ‘"x11"’ o ‘"wayland"’.

     ‘numlock’ (predeterminado: "on")
          Son valores válidos ‘"on"’, ‘"off"’ o ‘"none"’.

     ‘halt-command’ (default ‘#~(string-append #$shepherd "/sbin/halt")’)
          Orden a ejecutar para parar el sistema.

     ‘reboot-command’ (predeterminado ‘#~(string-append #$shepherd "/sbin/reboot")’)
          Orden a ejecutar para reiniciar el sistema.

     ‘theme’ (predeterminado "maldives")
          Tema usado. Los temas predeterminados proporcionados por SDDM
          son ‘"elarun"’, ‘"maldives"’ o ‘"maya"’.

     ‘themes-directory’ (predeterminado "/run/current-system/profile/share/sddm/themes")
          Directorio en el que buscar temas.

     ‘faces-directory’ (predeterminado "/run/current-system/profile/share/sddm/faces")
          Directorio en el que buscar caras.

     ‘default-path’ (predeterminado "/run/current-system/profile/bin")
          El valor predeterminado del PATH.

     ‘minimum-uid’ (predeterminado: 1000)
          UID mínimo mostrado en SDDM y al que se le permite el acceso.

     ‘maximum-uid’ (predeterminado: 2000)
          UID máximo mostrado en SDDM.

     ‘remember-last-user?’ (predeterminado #t)
          Recuerda la última usuaria.

     ‘remember-last-session?’ (predeterminado #t)
          Recuerda la última sesión.

     ‘hide-users’ (predeterminado "")
          Nombres de usuaria a ocultar de la pantalla de inicio de SDDM.

     ‘hide-shells’ (predeterminado ‘#~(string-append #$shadow "/sbin/nologin")’)
          Las usuarias que tengan alguno de los shell enumerados se
          ocultarán de la pantalla de inicio de SDDM.

     ‘session-command’ (predeterminado ‘#~(string-append #$sddm "/share/sddm/scripts/wayland-session")’)
          Guión a ejecutar antes de iniciar una sesión wayland.

     ‘sessions-directory’ (predeterminado "/run/current-system/profile/share/wayland-sessions")
          Directorio en el que buscar archivos desktop que inicien
          sesiones wayland.

     ‘xorg-configuration’ (predeterminada ‘(xorg-configuration)’)
          Configuración del servidor gráfico Xorg.

     ‘xauth-path’ (predeterminado ‘#~(string-append #$xauth "/bin/xauth")’)
          Ruta de xauth.

     ‘xephyr-path’ (predeterminado ‘#~(string-append #$xorg-server "/bin/Xephyr")’)
          Ruta de Xephyr.

     ‘xdisplay-start’ (predeterminado ‘#~(string-append #$sddm "/share/sddm/scripts/Xsetup")’)
          Guión a ejecutar tras iniciar xorg-server.

     ‘xdisplay-stop’ (predeterminado ‘#~(string-append #$sddm "/share/sddm/scripts/Xstop")’)
          Guión a ejecutar antes de parar xorg-server.

     ‘xsession-command’ (predeterminado: ‘xinitrc’)
          Guión a ejecutar antes de iniciar una sesión X.

     ‘xsessions-directory’ (predeterminado: "/run/current-system/profile/share/xsessions")
          Directorio para buscar archivos desktop que inicien sesiones
          X.

     ‘minimum-vt’ (predeterminado: 7)
          VT mínimo usado.

     ‘auto-login-user’ (predeterminado "")
          User account that will be automatically logged in. Setting
          this to the empty string disables auto-login.

     ‘auto-login-session’ (predeterminado "")
          The ‘.desktop’ file name to use as the auto-login session, or
          the empty string.

     ‘relogin?’ (predeterminado #f)
          Volver a ingresar en el sistema tras salir.

 -- Variable: lightdm-service-type
     This is the type of the service to run the LightDM display manager
     (https://github.com/canonical/lightdm). Its value must be a
     ‘lightdm-configuration’ record, which is documented below. Among
     its distinguishing features are TigerVNC integration for easily
     remoting your desktop as well as support for the XDMCP protocol,
     which can be used by remote clients to start a session from the
     login manager.

     In its most basic form, it can be used simply as:

          (service lightdm-service-type)

     A more elaborate example making use of the VNC capabilities and
     enabling more features and verbose logs could look like:

          (service lightdm-service-type
                   (lightdm-configuration
                    (allow-empty-passwords? #t)
                    (xdmcp? #t)
                    (vnc-server? #t)
                    (vnc-server-command
                     (file-append tigervnc-server "/bin/Xvnc"
                                  "  -SecurityTypes None"))
                    (seats
                     (list (lightdm-seat-configuration
                            (name "*")
                            (user-session "ratpoison"))))))

 -- Data Type: lightdm-configuration
     Available ‘lightdm-configuration’ fields are:

     ‘lightdm’ (default: ‘lightdm’) (type: file-like)
          The lightdm package to use.

     ‘allow-empty-passwords?’ (default: ‘#f’) (type: boolean)
          Whether users not having a password set can login.

     ‘debug?’ (default: ‘#f’) (type: boolean)
          Enable verbose output.

     ‘xorg-configuration’ (type: xorg-configuration)
          The default Xorg server configuration to use to generate the
          Xorg server start script. It can be refined per seat via the
          ‘xserver-command’ of the ‘<lightdm-seat-configuration>’
          record, if desired.

     ‘greeters’ (type: list-of-greeter-configurations)
          The LightDM greeter configurations specifying the greeters to
          use.

     ‘seats’ (type: list-of-seat-configurations)
          The seat configurations to use. A LightDM seat is akin to a
          user.

     ‘xdmcp?’ (default: ‘#f’) (type: boolean)
          Whether a XDMCP server should listen on port UDP 177.

     ‘xdmcp-listen-address’ (type: maybe-string)
          The host or IP address the XDMCP server listens for incoming
          connections. When unspecified, listen on for any hosts/IP
          addresses.

     ‘vnc-server?’ (default: ‘#f’) (type: boolean)
          Whether a VNC server is started.

     ‘vnc-server-command’ (type: file-like)
          The Xvnc command to use for the VNC server, it’s possible to
          provide extra options not otherwise exposed along the command,
          for example to disable security:

               (vnc-server-command (file-append tigervnc-server "/bin/Xvnc"
                                                " -SecurityTypes None" ))

          Or to set a PasswordFile for the classic (unsecure) VncAuth
          mechanism:

               (vnc-server-command (file-append tigervnc-server "/bin/Xvnc"
                                                " -PasswordFile /var/lib/lightdm/.vnc/passwd"))

          The password file should be manually created using the
          ‘vncpasswd’ command. Note that LightDM will create new
          sessions for VNC users, which means they need to authenticate
          in the same way as local users would.

     ‘vnc-server-listen-address’ (type: maybe-string)
          The host or IP address the VNC server listens for incoming
          connections. When unspecified, listen for any hosts/IP
          addresses.

     ‘vnc-server-port’ (default: ‘5900’) (type: number)
          The TCP port the VNC server should listen to.

     ‘extra-config’ (default: ‘'()’) (type: list-of-strings)
          Extra configuration values to append to the LightDM
          configuration file.

 -- Data Type: lightdm-gtk-greeter-configuration
     Available ‘lightdm-gtk-greeter-configuration’ fields are:

     ‘lightdm-gtk-greeter’ (default: ‘lightdm-gtk-greeter’) (type: file-like)
          The lightdm-gtk-greeter package to use.

     ‘assets’ (default: ‘(adwaita-icon-theme gnome-themes-extra hicolor-icon-theme)’) (type: list-of-file-likes)
          The list of packages complementing the greeter, such as
          package providing icon themes.

     ‘theme-name’ (default: ‘"Adwaita"’) (type: string)
          The name of the theme to use.

     ‘icon-theme-name’ (default: ‘"Adwaita"’) (type: string)
          The name of the icon theme to use.

     ‘cursor-theme-name’ (default: ‘"Adwaita"’) (type: string)
          The name of the cursor theme to use.

     ‘cursor-theme-size’ (default: ‘16’) (type: number)
          The size to use for the cursor theme.

     ‘allow-debugging?’ (type: maybe-boolean)
          Set to #t to enable debug log level.

     ‘background’ (type: file-like)
          The background image to use.

     ‘at-spi-enabled?’ (default: ‘#f’) (type: boolean)
          Enable accessibility support through the Assistive Technology
          Service Provider Interface (AT-SPI).

     ‘a11y-states’ (default: ‘(contrast font keyboard reader)’) (type: list-of-a11y-states)
          The accessibility features to enable, given as list of
          symbols.

     ‘reader’ (type: maybe-file-like)
          The command to use to launch a screen reader.

     ‘extra-config’ (default: ‘'()’) (type: list-of-strings)
          Extra configuration values to append to the LightDM GTK
          Greeter configuration file.

 -- Data Type: lightdm-seat-configuration
     Available ‘lightdm-seat-configuration’ fields are:

     ‘name’ (type: seat-name)
          The name of the seat. An asterisk (*) can be used in the name
          to apply the seat configuration to all the seat names it
          matches.

     ‘user-session’ (type: maybe-string)
          The session to use by default. The session name must be
          provided as a lowercase string, such as ‘"gnome"’,
          ‘"ratpoison"’, etc.

     ‘type’ (default: ‘local’) (type: seat-type)
          The type of the seat, either the ‘local’ or ‘xremote’ symbol.

     ‘autologin-user’ (type: maybe-string)
          The username to automatically log in with by default.

     ‘greeter-session’ (default: ‘lightdm-gtk-greeter’) (type: greeter-session)
          The greeter session to use, specified as a symbol. Currently,
          only ‘lightdm-gtk-greeter’ is supported.

     ‘xserver-command’ (type: maybe-file-like)
          The Xorg server command to run.

     ‘session-wrapper’ (type: file-like)
          The xinitrc session wrapper to use.

     ‘extra-config’ (default: ‘'()’) (type: list-of-strings)
          Extra configuration values to append to the seat configuration
          section.

 -- Tipo de datos: xorg-configuration
     This data type represents the configuration of the Xorg graphical
     display server. Note that there is no Xorg service; instead, the X
     server is started by a “display manager” such as GDM, SDDM, LightDM
     or SLiM. Thus, the configuration of these display managers
     aggregates an ‘xorg-configuration’ record.

     ‘modules’ (predeterminados: ‘%default-xorg-modules’)
          Esta es la lista de “paquetes de módulos” cargados por el
          servidor Xorg—por ejemplo, ‘xf86-video-vesa’,
          ‘xf86-input-libinput’, etcétera.

     ‘fonts’ (predeterminadas: ‘%default-xorg-fonts’)
          Es una lista de directorios de tipografías a añadir a la “ruta
          de tipografías” del servidor.

     ‘drivers’ (predeterminados: ‘'()’)
          Debe ser o bien la lista vacía, en cuyo caso Xorg selecciona
          el controlador gráfico automáticamente, o una lista de nombres
          de controladores que se intentarán en el orden
          especificado—por ejemplo, ‘'("modesetting" "vesa")’.

     ‘resolutions’ (predeterminadas: ‘'()’)
          Cuando ‘resolutions’ es la lista vacía, Xorg selecciona una
          resolución de pantalla adecuada. En otro caso, debe ser una
          lista de resoluciones—por ejemplo, ‘'((1024 768) (640 480))’.

     ‘keyboard-layout’ (predeterminada: ‘#f’)
          Si es ‘#f’, Xorg usa la distribución de teclado
          predeterminada—normalmente inglés de EEUU (“qwerty”) para un
          teclado de PC de 105 teclas.

          En otro caso, debe ser un objeto ‘keyboard-layout’ que
          especifique la distribución de teclado usada para la ejecución
          de Xorg. *Note Distribución de teclado::, para más información
          sobre cómo especificar la distribución de teclado.

     ‘extra-config’ (predeterminada: ‘'()’)
          Es una lista de cadenas u objetos añadida al final del archivo
          de configuración. Se usa para proporcionar texto adicional
          para ser introducido de forma literal en el archivo de
          configuración.

     ‘server’ (predeterminado: ‘xorg-server’)
          Este es el paquete que proporciona el servidor Xorg.

     ‘server-arguments’ (predeterminados: ‘%default-xorg-server-arguments’)
          Es la lista de parámetros de línea de órdenes que se
          proporcionarán al servidor X. El valor predeterminado es
          ‘-nolisten tcp’.

 -- Procedure: set-xorg-configuration config
          [login-manager-service-type]
     Tell the log-in manager (of type LOGIN-MANAGER-SERVICE-TYPE) to use
     CONFIG, an ‘<xorg-configuration>’ record.

     Debido a que la configuración de Xorg se embebe en la configuración
     del gestor de ingreso en el sistema—por ejemplo,
     ‘gdm-configuration’—este procedimiento proporciona un atajo para
     establecer la configuración de Xorg.

 -- Procedure: xorg-start-command [config]
     Devuelve un script ‘startx’ en el que los módulos, las tipografías,
     etcétera, especificadas en CONFIG están disponibles. El resultado
     debe usarse en lugar de ‘startx’.

     Habitualmente el servidor X es iniciado por un gestor de ingreso al
     sistema.

 -- Procedure: xorg-start-command-xinit [config]
     Return a ‘startx’ script in which the modules, fonts, etc.
     specified in CONFIG are available. The result should be used in
     place of ‘startx’ and should be invoked by the user from a tty
     after login. Unlike ‘xorg-start-command’, this script calls xinit.
     Therefore it works well when executed from a tty. This script can
     be set up as ‘startx’ using ‘startx-command-service-type’ or
     ‘home-startx-command-service-type’. If you are using a desktop
     environment, you are unlikely to need this procedure.

 -- Variable: screen-locker-service-type
     Type for a service that adds a package for a screen locker or
     screen saver to the set of privileged programs and/or add a PAM
     entry for it. The value for this service is a
     ‘<screen-locker-configuration>’ object.

     While the default behavior is to setup both a privileged program
     and PAM entry, these two methods are redundant. Screen locker
     programs may not execute when PAM is configured and ‘setuid’ is set
     on their executable. In this case, ‘using-setuid?’ can be set to
     ‘#f’.

     For example, to make XlockMore usable:

          (service screen-locker-service-type
                   (screen-locker-configuration
                     (name "xlock")
                     (program (file-append xlockmore "/bin/xlock"))))

     permite usar el viejo XlockMore.

     For example, swaylock fails to execute when compiled with PAM
     support and setuid enabled. One can thus disable setuid:

          (service screen-locker-service-type
                   (screen-locker-configuration
                     (name "swaylock")
                     (program (file-append swaylock "/bin/swaylock"))
                     (using-pam? #t)
                     (using-setuid? #f)))

 -- Data Type: screen-locker-configuration
     Available ‘screen-locker-configuration’ fields are:

     ‘name’ (type: string)
          Name of the screen locker.

     ‘program’ (type: file-like)
          Path to the executable for the screen locker as a
          G-Expression.

     ‘allow-empty-password?’ (default: ‘#f’) (type: boolean)
          Si se permiten las contraseñas vacías.

     ‘using-pam?’ (default: ‘#t’) (type: boolean)
          Whether to setup PAM entry.

     ‘using-setuid?’ (default: ‘#t’) (type: boolean)
          Whether to setup program as setuid binary.

 -- Variable: startx-command-service-type
     Add ‘startx’ to the system profile putting it onto ‘PATH’.

     The value for this service is a ‘<xorg-configuration>’ object which
     is passed to the ‘xorg-start-command-xinit’ procedure producing the
     ‘startx’ used. Default value is ‘(xorg-configuration)’.


File: guix.es.info,  Node: Servicios de impresión,  Next: Servicios de escritorio,  Prev: Sistema X Window,  Up: Servicios

11.10.8 Servicios de impresión
------------------------------

El módulo ‘(gnu services cups)’ proporciona una definición de servicio
Guix para el servicio de impresión CUPS. Para usar impresoras en un
sistema Guix, añada un servicio ‘cups-service’ en su definición de
sistema operativo:

 -- Variable: cups-service-type
     El tipo de servicio para el servidor de impresión CUPS. Su valor
     debe ser una configuración de CUPS válida (véase a continuación).
     Para usar la configuración predeterminada, simplemente escriba:
          (service cups-service-type)

   La configuración de CUPS controla los aspectos básicos de su
instalación de CUPS: sobre qué interfaces se escuchará, qué hacer si
falla un trabajo de impresión, cuanta información registrar, etcétera.
Para realmente añadir una impresora, debe visitar la URL
<http://localhost:631>, o usar una herramienta como los servicios de
configuración de impresión de GNOME. De manera predeterminada, la
configuración de un servicio CUPS generará un certificado auto-firmado
en caso de ser necesario, para ofrecer conexiones seguras con el
servidor de impresión.

   Suppose you want to enable the Web interface of CUPS and also add
support for Epson printers via the ‘epson-inkjet-printer-escpr’ package
and for HP printers via the ‘hplip-minimal’ package. You can do that
directly, like this (you need to use the ‘(gnu packages cups)’ module):

     (service cups-service-type
              (cups-configuration
                (web-interface? #t)
                (extensions
                  (list cups-filters epson-inkjet-printer-escpr hplip-minimal))))

     Nota: If you wish to use the Qt5 based GUI which comes with the
     hplip package then it is suggested that you install the ‘hplip’
     package, either in your OS configuration file or as your user.

   A continuación se encuentran los parámetros de configuración
disponibles. El tipo de cada parámetro antecede la definición del mismo;
por ejemplo, ‘string-list foo’ indica que el parámetro ‘foo’ debe
especificarse como una lista de cadenas. También existe la posibilidad
de especificar la configuración como una cadena, si tiene un archivo
‘cupsd.conf’ antiguo que quiere trasladar a otro sistema; véase el final
para más detalles.

   Los campos disponibles de ‘cups-configuration’ son:

 -- parámetro de cups-configuration: package cups
     El paquete CUPS.

 -- cups-configuration parameter: package-list extensions (default:
          (list brlaser cups-filters epson-inkjet-printer-escpr
          foomatic-filters hplip-minimal splix))
     Controladores y otras extensiones al paquete CUPS.

 -- parámetro de cups-configuration: archivos-conf files-configuration
     Configuración sobre dónde escribir los registros, qué directorios
     usar para las colas de impresión y parámetros de configuración
     privilegiados relacionados.

     Los campos disponibles de ‘files-configuration’ son:

      -- parámetro de files-configuration: ruta-registro access-log
          Define el nombre de archivo del registro de acceso. La
          especificación de un nombre de archivo en blanco desactiva la
          generación de registros de acceso. El valor ‘stderr’ hace que
          las entradas de registro se envíen al archivo de la salida
          estándar de error cuando el planificador se ejecute en primer
          plano, o al daemon de registro del sistema cuando se ejecute
          en segundo plano. El valor ‘syslog’ envía las entradas de
          registro al daemon de registro del sistema. El nombre de
          servidor puede incluirse en los nombres de archivo mediante el
          uso de la cadena ‘%s’, como en ‘/var/log/cups/%s-access_log’.

          El valor predeterminado es ‘"/var/log/cups/access_log"’.

      -- parámetro de files-configuration: nombre-archivo cache-dir
          Donde CUPS debe almacenar los datos de la caché.

          El valor predeterminado es ‘"/var/cache/cups"’.

      -- parámetro de files-configuration: string config-file-perm
          Especifica los permisos para todos los archivos de
          configuración que escriba el planficador.

          Tenga en cuenta que los permisos para el archivo printers.conf
          están configurados actualmente de modo que únicamente la
          usuaria del planificador (habitualmente root) tenga acceso. Se
          hace de esta manera debido a que las URI de las impresoras a
          veces contienen información sensible sobre la identificación
          que no debería conocerse de manera general en el sistema. No
          hay forma de desactivar esta característica de seguridad.

          El valor predeterminado es ‘"0640"’.

      -- parámetro de files-configuration: ruta-registro error-log
          Define el nombre de archivo del registro de error. La
          especificación de un nombre de archivo en blanco desactiva la
          generación de registros de error. El valor ‘stderr’ hace que
          las entradas del registro se envíen al archivo de la salida de
          error estándar cuando el planificador se ejecute en primer
          plano, o al daemon de registro del sistema cuando se ejecute
          en segundo plano. El valor ‘syslog’ provoca que las entradas
          del registro se envíen al daemon de registro del sistema. El
          nombre del servidor puede incluirse en los nombres de archivo
          mediante el uso de la cadena ‘%s’, como en
          ‘/var/log/cups/%s-error_log’.

          El valor predeterminado es ‘"/var/log/cups/error_log"’.

      -- parámetro de files-configuration: string fatal-errors
          Especifica qué errores son fatales, los cuales provocan la
          salida del planificador. El tipo de cadenas son:

          ‘none’
               Ningún error es fatal.

          ‘all’
               Todos los errores a continuación son fatales.

          ‘browse’
               Los errores de la inicialización de exploración son
               fatales, por ejemplo las conexiones fallidas al daemon
               DNS-SD.

          ‘config’
               Los errores de sintaxis en el archivo de configuración
               son fatales.

          ‘listen’
               Los errores de escucha o de puertos son fatales, excepto
               fallos IPv6 en la red local o en direcciones ‘any’.

          ‘log’
               Los errores de creación o escritura en el archivo de
               registros son fatales.

          ‘permissions’
               La mala configuración de los permisos de los archivos al
               inicio son fatales, por ejemplo certificados TLS
               compartidos y archivos de claves con permisos de
               escritura para todo el mundo.

          El valor predeterminado es ‘"all -browse"’.

      -- parámetro de files-configuration: boolean file-device?
          Especifica si el pseudo-dispositivo del archivo puede usarse
          para nuevas colas de impresión. Siempre se permite la URI
          <file:///dev/null>.

          El valor predeterminado es ‘#f’.

      -- parámetro de files-configuration: string group
          Especifica el nombre de grupo o ID usado para la ejecución de
          programas externos.

          El valor predeterminado es ‘"lp"’.

      -- files-configuration parameter: string log-file-group
          Specifies the group name or ID that will be used for log
          files.

          Defaults to ‘"lpadmin"’.

      -- parámetro de files-configuration: string log-file-perm
          Especifica los permisos para todos los archivos de registro
          que el planificador escriba.

          El valor predeterminado es ‘"0644"’.

      -- parámetro de files-configuration: ruta-registro page-log
          Define el nombre de archivo del registro de páginas. La
          especificación de un nombre de archivo en blanco desactiva la
          generación de registro de páginas. El valor ‘stderr’ hace que
          las entradas del registro se envíen al archivo de la salida de
          error cuando el planificador se ejecute en primer plano, o al
          daemon de registro del sistema cuando se ejecuten en segundo
          plano. El valor ‘syslog’ provoca que las entradas del registro
          se envíen al daemon de registro del sistema. El nombre del
          servidor puede incluirse en los nombres de archivo mediante el
          uso de la cadena ‘%s’, como en ‘/var/log/cups/%s-page_log’.

          El valor predeterminado es ‘"/var/log/cups/page_log"’.

      -- parámetro de files-configuration: string remote-root
          Especifica el nombre de la usuaria asociado con accesos sin
          identificación por parte de clientes que digan ser la usuaria
          root. La usuaria predeterminada es ‘remroot’.

          El valor predeterminado es ‘"remroot"’.

      -- parámetro de files-configuration: nombre-archivo request-root
          Especifica el directorio que contiene los trabajos de
          impresión y otros datos de peticiones HTTP.

          El valor predeterminado es ‘"/var/spool/cups"’.

      -- parámetro de files-configuration: aislamiento sandboxing
          Especifica el nivel de seguridad del aislamiento (sandbox) que
          se aplica sobre los filtros de impresión, motores y otros
          procesos lanzados por el planificador; o bien ‘relaxed’ o bien
          ‘strict’. Esta directiva únicamente tiene uso actualmente en
          macOS.

          El valor predeterminado es ‘strict’.

      -- parámetro de files-configuration: nombre-archivo
               server-keychain
          Especifica la localización de los certificados TLS y las
          claves privadas. CUPS buscará claves públicas y privadas en
          este directorio: un archivo ‘.crt’ para certificados
          codificados con PEM y los correspondientes archivo ‘.key’ para
          las claves privadas codificadas con PEM.

          El valor predeterminado es ‘"/etc/cups/ssl"’.

      -- parámetro de files-configuration: nombre-archivo server-root
          Especifica el directorio que contiene los archivos de
          configuración del servidor.

          El valor predeterminado es ‘"/etc/cups"’.

      -- parámetro de files-configuration: boolean sync-on-close?
          Especifica si el planificador llama fsync(2) tras la escritura
          de los archivos de configuración o estado.

          El valor predeterminado es ‘#f’.

      -- parámetro de files-configuration:
               cadenas-separadas-por-espacios system-group
          Especifica el o los grupos usados para la identificación del
          grupo ‘@SYSTEM’.

      -- parámetro de files-configuration: nombre-archivo temp-dir
          Especifica el directorio donde se escriben los archivos
          temporales.

          El valor predeterminado es ‘"/var/spool/cups/tmp"’.

      -- parámetro de files-configuration: string user
          Especifica el nombre de usuaria o ID usado para la ejecución
          de programas externos.

          El valor predeterminado es ‘"lp"’.

      -- parámetro de files-configuration: string set-env
          Establece el valor de la variable de entorno especificada que
          se proporcionará a los procesos lanzados.

          El valor predeterminado es ‘"variable value"’.

 -- parámetro de cups-configuration: nivel-registro-acceso
          access-log-level
     Especifica el nivel de registro para el archivo AccessLog. El nivel
     ‘config’ registra la adición, borrado o modificación de impresoras
     y clases, y el acceso y modificación de los archivos de
     configuración. El nivel ‘actions’ registra cuando los trabajos de
     impresión se envían, mantienen a la espera, liberan, modifican o
     cancelan, además de todas las condiciones de ‘config’. El nivel
     ‘all’ registra todas las peticiones.

     El valor predeterminado es ‘actions’.

 -- parámetro de cups-configuration: boolean auto-purge-jobs?
     Especifica si se purgan los datos del histórico de trabajos de
     manera automática cuando ya no son necesarios para las cuotas.

     El valor predeterminado es ‘#f’.

 -- parámetro de cups-configuration: lista-cadenas-separada-comas
          browse-dns-sd-sub-types
     Specifies a list of DNS-SD sub-types to advertise for each shared
     printer.

     The default ‘(list "_cups" "_print" "_universal")’ tells clients
     that CUPS sharing, IPP Everywhere, AirPrint, and Mopria are
     supported.

 -- parámetro de cups-configuration: protocolos browse-local-protocols
     Especifica qué protocolos deben usarse para compartir las
     impresoras locales.

     El valor predeterminado es ‘dnssd’.

 -- parámetro de cups-configuration: boolean browse-web-if?
     Especifica si se anuncia la interfaz web de CUPS.

     El valor predeterminado es ‘#f’.

 -- parámetro de cups-configuration: boolean browsing?
     Especifica si se anuncian las impresoras compartidas.

     El valor predeterminado es ‘#f’.

 -- parámetro de cups-configuration: tipo-id-pred default-auth-type
     Especifica el tipo de identificación usado por omisión.

     El valor predeterminado es ‘Basic’.

 -- parámetro de cups-configuration: cifrado-pred default-encryption
     Especifica si se usará cifrado para peticiones con identificación.

     El valor predeterminado es ‘Required’.

 -- parámetro de cups-configuration: string default-language
     Especifica el idioma predeterminado usado para el texto y contenido
     de la web.

     El valor predeterminado es ‘"en"’.

 -- parámetro de cups-configuration: cadena default-paper-size
     Especifica el tamaño predeterminado del papel para colas de
     impresión nuevas. ‘"Auto"’ usa el valor predeterminado de la
     localización, mientras que ‘"None"’ especifica que no hay un tamaño
     de papel predeterminado. Los nombres de tamaños específicos
     habitualmente son ‘"Letter"’ o ‘"A4"’(1).

     El valor predeterminado es ‘"Auto"’.

 -- parámetro de cups-configuration: string default-policy
     Especifica la política de acceso usada por omisión.

     El valor predeterminado es ‘"default"’.

 -- parámetro de cups-configuration: boolean default-shared?
     Especifica si las impresoras locales se comparten de manera
     predeterminada.

     El valor predeterminado es ‘#t’.

 -- parámetro de cups-configuration: entero-no-negativo
          dirty-clean-interval
     Especifica el retraso para la actualización de los archivos de
     configuración y estado, en segundo. Un valor de 0 hace que la
     actualización se lleve a cabo tan pronto sea posible, en algunos
     milisegundos habitualmente.

     El valor predeterminado es ‘30’.

 -- parámetro de cups-configuration: política-error error-policy
     Especifica qué hacer cuando ocurra un error. Los valores posibles
     son ‘abort-job’, que descartará el trabajo de impresión fallido;
     ‘retry-job’, que intentará llevar de nuevo a cabo el trabajo en un
     momento posterior; ‘retry-current-job’, que reintenta el trabajo
     que falló de manera inmediata; y ‘stop-printer’, que para la
     impresora.

     El valor predeterminado es ‘stop-printer’.

 -- parámetro de cups-configuration: entero-no-negativo filter-limit
     Especifica el coste máximo de filtros que se ejecutan de manera
     concurrente, lo que puede usarse para minimizar problemas de
     recursos de disco, memoria y procesador. Un límite de 0 desactiva
     la limitación del filtrado. Una impresión media con una impresora
     no-PostScript necesita una limitación del filtrado de 200 más o
     menos. Una impresora PostScript necesita cerca de la mitad (100).
     Establecer un límite por debajo de estos valores limitará de forma
     efectiva al planificador a la ejecución de un único trabajo de
     impresión en cualquier momento.

     El valor predeterminado es ‘0’.

 -- parámetro de cups-configuration: entero-no-negativo filter-nice
     Especifica la prioridad de planificación de los filtros que se
     ejecuten para la impresión de un trabajo. El valor de “nice” va
     desde 0, la mayor prioridad, a 19, la menor prioridad.

     El valor predeterminado es ‘0’.

 -- parámetro de cups-configuration: búsqueda-nombres-máquina
          host-name-lookups
     Especifica si se realizarán las búsquedas inversas en las
     conexiones de clientes. La opción ‘double’ instruye a ‘cupsd’ para
     que verifique que el nombre de máquina al que resuelve la dirección
     corresponde con la dirección devuelta por dicho nombre de máquina.
     Las búsquedas dobles también evitan que clientes con direcciones
     sin registrar se conecten a su servidor. Configure esta opción con
     ‘#t’ o ‘double’ únicamente si es absolutamente necesario.

     El valor predeterminado es ‘#f’.

 -- parámetro de cups-configuration: entero-no-negativo job-kill-delay
     Especifica el número de segundos a esperar antes de terminar los
     filtros y el motor asociados con un trabajo cancelado o puesto en
     espera.

     El valor predeterminado es ‘30’.

 -- parámetro de cups-configuration: entero-no-negativo
          job-retry-interval
     Especifica el intervalo entre los reintentos de trabajos en
     segundos. Se usa de manera habitual en colas de fax pero también
     puede usarse con colas de impresión normales cuya política de error
     sea ‘retry-job’ o ‘retry-current-job’.

     El valor predeterminado es ‘30’.

 -- parámetro de cups-configuration: entero-no-negativo job-retry-limit
     Especifica el número de reintentos que se llevan a cabo con los
     trabajos. De manera habitual se usa con colas de fax pero también
     puede usarse con colas de impresión normal cuya política de error
     sea ‘retry-job’ o ‘retry-current-job’.

     El valor predeterminado es ‘5’.

 -- parámetro de cups-configuration: boolean keep-alive?
     Especifica si se permiten conexiones “keep-alive” de HTTP.

     El valor predeterminado es ‘#t’.

 -- parámetro de cups-configuration: entero-no-negativo
          limit-request-body
     Especifica el tamaño máximo de los archivos de impresión,
     peticiones IPP y datos de formularios HTTP. Un límite de 0
     desactiva la comprobación del límite.

     El valor predeterminado es ‘0’.

 -- parámetro de cups-configuration: lista-cadenas-multilínea listen
     Escucha a la espera de conexiones en las interfaces especificadas.
     Se aceptan valores con la forma DIRECCIÓN:PUERTO, donde DIRECCIÓN
     es o bien una dirección IPv6 entre corchetes, una dirección IPv4 o
     ‘*’ para indicar todas las direcciones. Los valores también pueden
     ser nombres de archivo de sockets de dominio de UNIX locales. La
     directiva “Listen” es similar a la directiva “Port”, pero le
     permite la restricción del acceso a interfaces o redes específicas.

 -- parámetro de cups-configuration: lista-location-access-control
          location-access-controls
     Especifica un conjunto adicional de controles de acceso.

     Los campos disponibles de ‘location-access-controls’ son:

      -- parámetro de location-access-controls: nombre-archivo path
          Especifica la ruta URI sobre la que el control de acceso
          tendrá efecto.

      -- parámetro de location-access-controls: lista-access-control
               access-controls
          Controles de acceso para todos los accesos a esta ruta, en el
          mismo formato que ‘access-controls’ de
          ‘operation-access-control’.

          El valor predeterminado es ‘'()’.

      -- parámetro de location-access-controls:
               lista-method-access-control method-access-controls
          Controles de acceso para accesos con métodos específicos para
          esta ruta.

          El valor predeterminado es ‘'()’.

          Los campos disponibles de ‘method-access-controls’ son:

           -- parámetro de method-access-controls: boolean reverse?
               Si es ‘#t’, los controles de acceso son efectivos con
               todos los métodos excepto los métodos listados. En otro
               caso, son efectivos únicamente con los métodos listados.

               El valor predeterminado es ‘#f’.

           -- parámetro de method-access-controls: lista-métodos methods
               Métodos con los cuales este control de acceso es
               efectivo.

               El valor predeterminado es ‘'()’.

           -- parámetro de method-access-controls: lista-control-acceso
                    access-controls
               Directivas de control de acceso, como una lista de
               cadenas. Cada cadena debe ser una directiva, como ‘"Order
               allow,deny"’.

               El valor predeterminado es ‘'()’.

 -- parámetro de cups-configuration: entero-no-negativo
          log-debug-history
     Especifica el número de mensajes de depuración que se retienen para
     el registro si sucede un error en un trabajo de impresión. Los
     mensajes de depuración se registran independientemente de la
     configuración de “LogLevel”.

     El valor predeterminado es ‘100’.

 -- parámetro de cups-configuration: nivel-registro log-level
     Especifica el nivel de depuración del archivo “ErrorLog”. El valor
     ‘none’ inhibe todos los registros mientras que ‘debug2’ registra
     todo.

     El valor predeterminado es ‘info’.

 -- parámetro de cups-configuration: formato-tiempo-registro
          log-time-format
     Especifica el formato de la fecha y el tiempo en los archivos de
     registro. El valor ‘standard’ registra con segundos completos
     mientras que ‘usecs’ registra con microsegundos.

     El valor predeterminado es ‘standard’.

 -- parámetro de cups-configuration: entero-no-negativo max-clients
     Especifica el número de clientes simultáneos máximo que son
     admitidos por el planificador.

     El valor predeterminado es ‘100’.

 -- parámetro de cups-configuration: entero-no-negativo
          max-clients-per-host
     Especifica el número de clientes simultáneos máximo que se permiten
     desde una única dirección.

     El valor predeterminado es ‘100’.

 -- parámetro de cups-configuration: entero-no-negativo max-copies
     Especifica el número de copias máximo que una usuaria puede
     imprimir con cada trabajo.

     El valor predeterminado es ‘9999’.

 -- parámetro de cups-configuration: entero-no-negativo max-hold-time
     Especifica el tiempo máximo que un trabajo puede permanecer en el
     estado de espera ‘indefinite’ antes de su cancelación. Un valor de
     0 desactiva la cancelación de trabajos en espera.

     El valor predeterminado es ‘0’.

 -- parámetro de cups-configuration: entero-no-negativo max-jobs
     Especifica el número de trabajos simultáneos máximo permitido. El
     valor 0 permite un número ilimitado de trabajos.

     El valor predeterminado es ‘500’.

 -- parámetro de cups-configuration: entero-no-negativo
          max-jobs-per-printer
     Especifica el número de trabajos simultáneos máximo que se permite
     por impresora. Un valor de 0 permite hasta ‘max-jobs’ por
     impresora.

     El valor predeterminado es ‘0’.

 -- parámetro de cups-configuration: entero-no-negativo
          max-jobs-per-user
     Especifica el número de trabajos simultáneos máximo que se permite
     por usuaria. Un valor de 0 permite hasta ‘max-jobs’ por usuaria.

     El valor predeterminado es ‘0’.

 -- parámetro de cups-configuration: entero-no-negativo max-job-time
     Especifica el tiempo de duración de la impresión máximo que un
     trabajo puede tomar antes de ser cancelado, en segundos. El valor 0
     desactiva la cancelación de trabajos “atascados”.

     El valor predeterminado es ‘10800’.

 -- parámetro de cups-configuration: entero-no-negativo max-log-size
     Especifica el tamaño máximo de los archivos de registro antes de su
     rotación, en bytes. El valor 0 desactiva la rotación de registros.

     El valor predeterminado es ‘1048576’.

 -- cups-configuration parameter: non-negative-integer max-subscriptions
     Specifies the maximum number of simultaneous event subscriptions
     that are allowed. Set to ‘0’ to allow an unlimited number of
     subscriptions.

     El valor predeterminado es ‘0’.

 -- cups-configuration parameter: non-negative-integer
          max-subscriptions-per-job
     Specifies the maximum number of simultaneous event subscriptions
     that are allowed per job. A value of ‘0’ allows up to
     ‘max-subscriptions’ per job.

     El valor predeterminado es ‘0’.

 -- cups-configuration parameter: non-negative-integer
          max-subscriptions-per-printer
     Specifies the maximum number of simultaneous event subscriptions
     that are allowed per printer. A value of ‘0’ allows up to
     ‘max-subscriptions’ per printer.

     El valor predeterminado es ‘0’.

 -- cups-configuration parameter: non-negative-integer
          max-subscriptions-per-user
     Specifies the maximum number of simultaneous event subscriptions
     that are allowed per user. A value of ‘0’ allows up to
     ‘max-subscriptions’ per user.

     El valor predeterminado es ‘0’.

 -- parámetro de cups-configuration: entero-no-negativo
          multiple-operation-timeout
     Especifica el tiempo máximo permitido entre archivos en un trabajo
     de impresión con múltiples archivos, en segundos.

     Defaults to ‘900’.

 -- parámetro de cups-configuration: variables-entorno
          environment-variables
     Proporciona la o las variables de entorno especificadas a los
     procesos iniciados; una lista de cadenas.

     El valor predeterminado es ‘'()’.

 -- parámetro de cups-configuration: lista-policy-configuration policies
     Especifica las políticas de control de acceso con nombre.

     Los campos disponibles de ‘policy-configuration’ son:

      -- parámetro de policy-configuration: string name
          El nombre de la política.

      -- parámetro de policy-configuration: string job-private-access
          Specifies an access list for a job’s private values. ‘@ACL’
          maps to the printer’s requesting-user-name-allowed or
          requesting-user-name-denied values. ‘@OWNER’ maps to the job’s
          owner. ‘@SYSTEM’ maps to the groups listed for the
          ‘system-group’ field of the ‘files-configuration’, which is
          reified into the ‘cups-files.conf(5)’ file. Other possible
          elements of the access list include specific user names, and
          ‘@GROUP’ to indicate members of a specific group. The access
          list may also be simply ‘all’ or ‘default’.

          El valor predeterminado es ‘"@OWNER @SYSTEM"’.

      -- parámetro de policy-configuration: string job-private-values
          Especifica la lista de valores de trabajos a hacer privados, o
          bien ‘all’, ‘default’, o ‘none’.

          El valor predeterminado es ‘"job-name
          job-originating-host-name job-originating-user-name phone"’.

      -- parámetro de policy-configuration: string
               subscription-private-access
          Specifies an access list for a subscription’s private values.
          ‘@ACL’ maps to the printer’s requesting-user-name-allowed or
          requesting-user-name-denied values. ‘@OWNER’ maps to the job’s
          owner. ‘@SYSTEM’ maps to the groups listed for the
          ‘system-group’ field of the ‘files-configuration’, which is
          reified into the ‘cups-files.conf(5)’ file. Other possible
          elements of the access list include specific user names, and
          ‘@GROUP’ to indicate members of a specific group. The access
          list may also be simply ‘all’ or ‘default’.

          El valor predeterminado es ‘"@OWNER @SYSTEM"’.

      -- parámetro de policy-configuration: string
               subscription-private-values
          Especifica la lista de valores de trabajos a hacer privados, o
          bien ‘all’, ‘default’, o ‘none’.

          El valor predeterminado es ‘"notify-events notify-pull-method
          notify-recipient-uri notify-subscriber-user-name
          notify-user-data"’.

      -- parámetro de policy-configuration:
               lista-operation-access-control access-controls
          Control de acceso para operaciones de IPP.

          El valor predeterminado es ‘'()’.

 -- parámetro de cups-configuration: boolean-o-entero-no-negativo
          preserve-job-files
     Especifica si los archivos del trabajo (documentos) se preservan
     tras la impresión de un trabajo. Si se especifica un valor
     numérico, los archivos del trabajo se preservan durante el número
     indicado de segundos tras la impresión. En otro caso, el valor
     booleano determina la conservación de manera indefinida.

     El valor predeterminado es ‘86400’.

 -- parámetro de cups-configuration: boolean-o-entero-no-negativo
          preserve-job-history
     Especifica si la historia del trabajo se preserva tras la impresión
     de un trabajo. Si se especifica un valor numérico, la historia del
     trabajo se conserva tras la impresión el número de segundos
     indicado. Si es ‘#t’, la historia del trabajo se conserva hasta que
     se alcance el límite de trabajos “MaxJobs”.

     El valor predeterminado es ‘#t’.

 -- cups-configuration parameter: comma-separated-string-list-or-#f
          ready-paper-sizes
     Specifies a list of potential paper sizes that are reported as
     ready, that is: loaded. The actual list will contain only the sizes
     that each printer supports.

     The default value of ‘#f’ is a special case: CUPS will use ‘(list
     \"Letter\" \"Legal\" \"Tabloid\" \"4x6\" \"Env10\")’ if the default
     paper size is \"Letter\", and ‘(list \"A3\" \"A4\" \"A5\" \"A6\"
     \"EnvDL\")’ otherwise.

 -- parámetro de cups-configuration: entero-no-negativo reload-timeout
     Especifica el tiempo a esperar hasta la finalización del trabajo
     antes de reiniciar el planificador.

     El valor predeterminado es ‘30’.

 -- parámetro de cups-configuration: string server-admin
     Especifica la dirección de correo electrónico de la administradora
     del servidor.

     El valor predeterminado es ‘"root@localhost.localdomain"’.

 -- parámetro de cups-configuration: lista-nombres-máquina-o-*
          server-alias
     La directiva ServerAlias se usa para la validación de la cabecera
     HTTP Host cuando los clientes se conecten al planificador desde
     interfaces externas. El uso del nombre especial ‘*’ puede exponer
     su sistema a ataques basados en el navegador web de reenlazado DNS
     ya conocidos, incluso cuando se accede a páginas a través de un
     cortafuegos. Si el descubrimiento automático de nombres
     alternativos no funcionase, le recomendamos enumerar cada nombre
     alternativo con una directiva ServerAlias en vez del uso de ‘*’.

     El valor predeterminado es ‘*’.

 -- parámetro de cups-configuration: string server-name
     Especifica el nombre de máquina completamente cualificado del
     servidor.

     El valor predeterminado es ‘"localhost"’.

 -- parámetro de cups-configuration: server-tokens server-tokens
     Especifica qué información se incluye en la cabecera Server de las
     respuestas HTTP. ‘None’ desactiva la cabecera Server. ‘ProductOnly’
     proporciona ‘CUPS’. ‘Major’ proporciona ‘CUPS 2’. ‘Minor’
     proporciona ‘CUPS 2.0’. ‘Minimap’ proporciona ‘CUPS 2.0.0’. ‘OS’
     proporciona ‘CUPS 2.0.0 (UNAME)’ donde UNAME es la salida de la
     orden ‘uname’. ‘Full’ proporciona ‘CUPS 2.0.0 (UNAME) IPP/2.0’.

     El valor predeterminado es ‘Minimal’.

 -- parámetro de cups-configuration: lista-cadenas-multilínea ssl-listen
     Escucha en las interfaces especificadas a la espera de conexiones
     cifradas. Se aceptan valores con la forma DIRECCIÓN:PUERTO, siendo
     DIRECCIÓN o bien una dirección IPv6 entre corchetes, o bien una
     dirección IPv4, o bien ‘*’ que representa todas las direcciones.

     El valor predeterminado es ‘'()’.

 -- parámetro de cups-configuration: opciones-ssl ssl-options
     Determina las opciones de cifrado. De manera predeterminada, CUPS
     permite únicamente el cifrado mediante TLS v1.0 o superior mediante
     el uso de modelos de cifrado de conocida seguridad. La seguridad se
     reduce cuando se usan opciones ‘Allow’ y se aumenta cuando se usan
     opciones ‘Deny’. La opción ‘AllowRC4’ permite el cifrado RC4 de 128
     bits, necesario para algunos clientes antiguos que no implementan
     los modelos más modernos. La opción ‘AllowSSL3’ desactiva SSL v3.0,
     necesario para algunos clientes antiguos que no implementan TLS
     v1.0. La opción ‘DenyCBC’ desactiva todos los modelos de cifrado
     CBC. La opción ‘DenyTLS1.0’ desactiva TLS v1.0—esto fuerza la
     versión mínima del protocolo a TLS v1.1.

     El valor predeterminado es ‘'()’.

 -- parámetro de cups-configuration: boolean strict-conformance?
     Especifica si el planificador exige que los clientes se adhieran de
     manera estricta a las especificaciones IPP.

     El valor predeterminado es ‘#f’.

 -- parámetro de cups-configuration: entero-no-negativo timeout
     Especifica el plazo de las peticiones HTTP, en segundos.

     Defaults to ‘900’.

 -- parámetro de cups-configuration: boolean web-interface?
     Especifica si se debe activar la interfaz web.

     El valor predeterminado es ‘#f’.

   En este punto probablemente esté pensando, “querido manual de Guix,
me gusta todo esto, pero... ¡¿cuando se acaban las opciones de
configuración?!”. De hecho ya terminan. No obstante, hay un punto más:
puede ser que ya tenga un archivo ‘cupsd.conf’ que desee usar. En ese
caso, puede proporcionar un objeto ‘opaque-cups-configuration’ como la
configuración de ‘cups-service-type’.

   Los campos disponibles de ‘opaque-cups-configuration’ son:

 -- parámetro de opaque-cups-configuration: paquete cups
     El paquete CUPS.

 -- parámetro de opaque-cups-configuration: string cupsd.conf
     El contenido de ‘cupsd.conf’, como una cadena.

 -- parámetro de opaque-cups-configuration: string cups-files.conf
     El contenido del archivo ‘cups-files.conf’, como una cadena.

   Por ejemplo, si el contenido de sus archivos ‘cupsd.conf’ y
‘cups-files.conf’ estuviese en cadenas del mismo nombre, podría
instanciar un servicio CUPS de esta manera:

     (service cups-service-type
              (opaque-cups-configuration
                (cupsd.conf cupsd.conf)
                (cups-files.conf cups-files.conf)))

   ---------- Footnotes ----------

   (1) NdT: ‘Letter’ es el formato estándar de ANSI, de 215,9x279,4
milímetros de tamaño, mientras que A4 es el formato estándar de ISO, de
210x297 milímetros de tamaño.


File: guix.es.info,  Node: Servicios de escritorio,  Next: Servicios de sonido,  Prev: Servicios de impresión,  Up: Servicios

11.10.9 Servicios de escritorio
-------------------------------

El módulo ‘(gnu services desktop)’ proporciona servicios que son útiles
habitualmente en el contexto de una configuración de “escritorio”—es
decir, en una máquina que ejecute un servidor gráfico, posiblemente con
interfaces gráficas, etcétera. También define servicios que proporcionan
entornos de escritorio específicos como GNOME, Xfce o MATE.

   Para simplificar las cosas, el módulo define una variable que
contiene el conjunto de servicios que las usuarias esperarían de manera
habitual junto a un entorno gráfico y de red:

 -- Variable: %desktop-services
     Es una lista de servicios que se construye en base a
     ‘%base-services’ y añade o ajusta servicios para una configuración
     de “escritorio” típica.

     En particular, añade un gestor de ingreso al sistema gráfico (*note
     ‘gdm-service-type’: Sistema X Window.), herramientas para el
     bloqueo de la pantalla, una herramienta de gestión de redes (*note
     ‘network-manager-service-type’: Servicios de red.) y gestión de
     modem (*note ‘modem-manager-service-type’: Servicios de red.),
     servicios de gestión de la energía y el color, el gestor de
     asientos e ingresos al sistema ‘elogind’, el servicio de
     privilegios Polkit, el servicio de geolocalización GeoClue, el
     daemon AccountsService que permite a las usuarias autorizadas el
     cambio de contraseñas del sistema, un cliente NTP (*note Servicios
     de red::), y el daemon Avahi.

   La variable ‘%desktop-services’ puede usarse como el campo ‘services’
de una declaración ‘operating-system’ (*note ‘services’: Referencia de
operating-system.).

   Additionally, the following procedures add one (or more!) desktop
environments to a system.

   • ‘gnome-desktop-service-type’ adds GNOME,
   • ‘plasma-desktop-service-type’ adds KDE Plasma,
   • ‘enlightenment-desktop-service-type’ adds Enlightenment,
   • ‘lxqt-desktop-service-type’ adds LXQt,
   • ‘mate-desktop-service-type’ adds MATE, and
   • ‘xfce-desktop-service-type’ añade Xfce.

   These service types add “metapackages” such as ‘gnome’ or ‘plasma’ to
the system profile, but most of them also set up other useful services
that mere packages can’t do.

   For example, they may elevate privileges on a limited number of
special-purpose system interfaces and programs. This allows backlight
adjustment helpers, power management utilities, screen lockers, and
other integrated functionality to work as expected.

 -- Variable: gnome-desktop-service-type
     Es el tipo del servicio que añade el entorno de escritorio GNOME
     (https://www.gnome.org). Su valor es un objeto
     ‘gnome-desktop-configuration’ (véase a continuación).

     Este servicio añade el paquete ‘gnome’ al perfil del sistema, y
     extiende polkit con las acciones de ‘gnome-settings-daemon’.

 -- Tipo de datos: gnome-desktop-configuration
     Registro de configuración para el entorno de escritorio GNOME.
     Campos disponible de ‘gnome-desktop-configuration’ son:

     ‘core-services’ (type: list-of-packages)
          A list of packages that the GNOME Shell and applications may
          rely on.

     ‘shell’ (type: list-of-packages)
          A list of packages that constitute the GNOME Shell, without
          applications.

     ‘utilities’ (type: list-of-packages)
          A list of packages that serve as applications to use on top of
          the GNOME Shell.

     ‘gnome’ (type: maybe-package)
          This field used to be the only configuration point and
          specified a GNOME meta-package to install system-wide. Since
          the meta-package itself provides neither sources nor the
          actual packages and is only used to propagate them, this field
          is deprecated.

     ‘extra-packages’ (type: list-of-packages)
          A list of GNOME-adjacent packages to also include. This field
          is intended for users to add their own packages to their GNOME
          experience. Note, that it already includes some packages that
          are considered essential by some (most?) GNOME users.

     ‘udev-ignorelist’ (default: ‘()’) (type: list-of-strings)
          A list of regular expressions denoting udev rules or hardware
          file names provided by any package that should not be
          installed. By default, every udev rule and hardware file
          specified by any package referenced in the other fields are
          installed.

     ‘polkit-ignorelist’ (default: ‘()’) (type: list-of-strings)
          A list of regular expressions denoting polkit rules provided
          by any package that should not be installed. By default, every
          polkit rule added by any package referenced in the other
          fields are installed.

     ‘keyring’ (type: gnome-keyring-configuration-or-#f)
          A <gnome-keyring-configuration> record used to better
          integrate the GNOME keyring with the system. Refer to the
          documentation of the ‘gnome-keyring-service-type’ for more
          information. If you’d rather avoid integrating the GNOME
          keyring, you can set this to ‘#f’.

 -- Variable: plasma-desktop-service-type
     This is the type of the service that adds the Plasma
     (https://kde.org/plasma-desktop/) desktop environment. Its value is
     a ‘plasma-desktop-configuration’ object (see below).

     This service adds the ‘plasma’ package to the system profile.

 -- Data Type: plasma-desktop-configuration
     Configuration record for the Plasma desktop environment.

     ‘plasma’ (default: ‘plasma’)
          The Plasma package to use.

 -- Variable: xfce-desktop-service-type
     Este es el tipo de un servicio para ejecutar el entorno de
     escritorio https://xfce.org (Xfce). Su valor es un objeto
     ‘xfce-desktop-configuration’ (véase a continuación).

     Este servicio añade el paquete ‘xfce’ al perfil del sistema, y
     extiende polkit con la capacidad de ‘thunar’ para manipular el
     sistema de archivos como root dentro de una sesión de usuaria, tras
     la identificación de la usuaria con la contraseña de
     administración.

     Note that ‘xfce4-panel’ and its plugin packages should be installed
     in the same profile to ensure compatibility. When using this
     service, you should add extra plugins (‘xfce4-whiskermenu-plugin’,
     ‘xfce4-weather-plugin’, etc.) to the ‘packages’ field of your
     ‘operating-system’.

 -- Tipo de datos: xfce-desktop-configuration
     Registro de configuración para el entorno de escritorio Xfce.

     ‘xfce’ (predeterminado: ‘xfce’)
          El paquete Xfce usado.

 -- Variable: mate-desktop-service-type
     Es el tipo del servicio que ejecuta el entorno de escritorio MATE
     (https://mate-desktop.org/). Su valor es un objeto
     ‘mate-desktop-configuration’ (véase a continuación).

     Este servicio añade el paquete ‘mate’ al perfil del sistema, y
     extiende polkit con acciones de ‘mate-settings-daemon’.

 -- Tipo de datos: mate-desktop-configuration
     Registro de configuración para el entorno de escritorio MATE.

     ‘mate’ (predeterminado: ‘mate’)
          El paquete MATE usado.

 -- Variable: lxqt-desktop-service-type
     This is the type of the service that runs the LXQt desktop
     environment (https://lxqt-project.org). Its value is a
     ‘lxqt-desktop-configuration’ object (see below).

     Este servicio añade el paquete ‘lxqt’ al perfil del sistema.

 -- Tipo de datos: lxqt-desktop-configuration
     Registro de configuración para el entorno de escritorio LXQt.

     ‘lxqt’ (predeterminado: ‘lxqt’)
          El paquete LXQT usado.

 -- Variable: sugar-desktop-service-type
     This is the type of the service that runs the Sugar desktop
     environment (https://www.sugarlabs.org). Its value is a
     ‘sugar-desktop-configuration’ object (see below).

     This service adds the ‘sugar’ package to the system profile, as
     well as any selected Sugar activities. By default it only includes
     a minimal set of activities.

 -- Data Type: sugar-desktop-configuration
     Configuration record for the Sugar desktop environment.

     ‘sugar’ (default: ‘sugar’)
          The Sugar package to use.
     ‘gobject-introspection’ (default: ‘gobject-introspection’)
          The ‘gobject-introspection’ package to use. This package is
          used to access libraries installed as dependencies of Sugar
          activities.
     ‘activities’ (default: ‘(list sugar-help-activity)’)
          A list of Sugar activities to install.

   The following example configures the Sugar desktop environment with a
number of useful activities:

     (use-modules (gnu))
     (use-package-modules sugar)
     (use-service-modules desktop)
     (operating-system
       ...
       (services (cons* (service sugar-desktop-service-type
                                 (sugar-desktop-configuration
                                   (activities (list sugar-browse-activity
                                                     sugar-help-activity
                                                     sugar-jukebox-activity
                                                     sugar-typing-turtle-activity))))
                        %desktop-services))
       ...)

 -- Variable: enlightenment-desktop-service-type
     Devuelve un servicio que añade el paquete ‘enlightenment’ al perfil
     del sistema, y extiende dbus con acciones de ‘efl’.

 -- Tipo de datos: enlightenment-desktop-service-configuration
     ‘enlightenment’ (predeterminado: ‘enlightenment’)
          El paquete enlightenment usado.

   Debido a que los servicios de escritorio GNOME, Xfce y MATE
incorporan tantos paquetes, la variable ‘%desktop-services’ no incluye
ninguno de manera predeterminada. Para añadir GNOME, Xfce o MATE,
simplemente use ‘cons’ junto a ‘%desktop-services’ en el campo
‘services’ de su declaración ‘operating-system’:

     (use-modules (gnu))
     (use-service-modules desktop)
     (operating-system
       ...
       ;; cons* adds items to the list given as its last argument.
       (services (cons* (service gnome-desktop-service-type)
                        (service xfce-desktop-service-type)
                        %desktop-services))
       ...)

   Una vez realizado, estos entornos de escritorio se encontrarán como
opciones disponibles en la ventana del gestor gráfico de ingreso al
sistema.

   Las definiciones de servicio incluidas realmente en
‘%desktop-services’ y proporcionadas por ‘(gnu services dbus)’ y ‘(gnu
services desktop)’ se describen a continuación.

 -- Variable: dbus-root-service-type
     Tipo de un servicio que ejecuta el “bus del sistema” de D-Bus.(1)

     The value for this service type is a ‘<dbus-configuration>’ record.

 -- Data Type: dbus-configuration
     Data type representing the configuration for
     ‘dbus-root-service-type’.

     ‘dbus’ (default: ‘dbus’) (type: file-like)
          Package object for dbus.

     ‘services’ (default: ‘'()’) (type: list)
          List of packages that provide an ‘etc/dbus-1/system.d’
          directory containing additional D-Bus configuration and policy
          files. For example, to allow avahi-daemon to use the system
          bus, SERVICES must be equal to ‘(list avahi)’.

     ‘verbose?’ (default: ‘#f’) (type: boolean)
          When ‘#t’, D-Bus is launched with environment variable
          ‘DBUS_VERBOSE’ set to ‘1’. A verbose-enabled D-Bus package
          such as ‘dbus-verbose’ should be provided to DBUS in this
          scenario. The verbose output is logged to
          ‘/var/log/dbus-daemon.log’.

Elogind
.......

Elogind (https://github.com/elogind/elogind) is a login and seat
management daemon that also handles most system-level power events for a
computer, for example suspending the system when a lid is closed, or
shutting it down when the power button is pressed.

   It also provides a D-Bus interface that can be used to know which
users are logged in, know what kind of sessions they have open, suspend
the system, inhibit system suspend, reboot the system, and other tasks.

 -- Variable: elogind-service-type
     Type of the service that runs ‘elogind’, a login and seat
     management daemon. The value for this service is a
     ‘<elogind-configuration>’ object.

 -- Data Type: elogind-configuration
     Available ‘elogind-configuration’ fields are:

     ‘elogind’ (default: ‘elogind’) (type: file-like)
          The elogind package to use.

     ‘system-sleep-hook-files’ (default: ‘()’) (type: list-of-file-likes)
          A list of executables (file-like objects) that will be
          installed into the ‘/etc/elogind/system-sleep’ hook directory.
          See ‘Hook directories’ in the ‘loginctl(1)’ man page for more
          information.

     ‘system-shutdown-hook-files’ (default: ‘()’) (type: list-of-file-likes)
          A list of executables (file-like objects) that will be
          installed into the ‘/etc/elogind/system-shutdown/’ hook
          directory.

     ‘allow-power-off-interrupts?’ (default: ‘#f’) (type: maybe-boolean)
          Whether the executables in elogind’s hook directories (see
          above) can cause a power-off action to be cancelled
          (interrupted) by printing an appropriate error message to
          stdout.

     ‘allow-suspend-interrupts?’ (default: ‘#f’) (type: maybe-boolean)
          Likewise as the ‘allow-power-off-interrupts?’ option, but for
          the suspend action.

     ‘broadcast-power-off-interrupts?’ (default: ‘#f’) (type: maybe-boolean)
          Whether an interrupt of a power-off action is broadcasted.

     ‘broadcast-suspend-interrupts?’ (default: ‘#f’) (type: maybe-boolean)
          Whether an interrupt of a suspend action is broadcasted.

     ‘kill-user-processes?’ (default: ‘#f’) (type: maybe-boolean)
          Whether the processes of a user should be killed when the user
          logs out.

     ‘kill-only-users’ (type: maybe-list-of-user-names)
          Usernames whose processes should be killed, regardless the
          value of ‘kill-user-processes?’.

     ‘kill-exclude-users’ (default: ‘("root")’) (type: maybe-list-of-user-names)
          Usernames whose processes should _not_ be killed, regardless
          the value of ‘kill-user-processes?’.

     ‘inhibit-delay-max-seconds’ (default: ‘5’) (type: maybe-non-negative-integer)
          The maximum time a system shutdown or sleep request is delayed
          due to an inhibitor lock of type delay being active before the
          inhibitor is ignored and the operation executes anyway.

     ‘handle-power-key’ (default: ‘poweroff’) (type: maybe-action)
          The action done when the power key is pressed. The compiled
          default is ‘'poweroff’.

     ‘handle-suspend-key’ (default: ‘suspend’) (type: maybe-action)
          The action done when the suspend key is pressed. The

     ‘handle-hibernate-key’ (default: ‘hibernate’) (type: maybe-action)
          The action done when the hibernate key is pressed.

     ‘handle-lid-switch’ (default: ‘suspend’) (type: maybe-action)
          The action done when the lid is closed.

     ‘handle-lid-switch-docked’ (default: ‘ignore’) (type: maybe-action)
          The action done when the lid is closed and the device docked.

     ‘handle-lid-switch-external-power’ (default: ‘suspend’) (type: maybe-action)
          The action done when the lid is closed and the device is
          externally powered.

     ‘power-key-ignore-inhibited?’ (default: ‘#f’) (type: maybe-boolean)
          Whether to ignore high-level inhibitor locks (shutdown,
          reboot, sleep or idle) when the power key is pressed.

     ‘suspend-key-ignore-inhibited?’ (default: ‘#f’) (type: maybe-boolean)
          Whether to ignore high-level inhibitor locks (shutdown,
          reboot, sleep or idle) when the suspend key is pressed.

     ‘hibernate-key-ignore-inhibited?’ (default: ‘#f’) (type: maybe-boolean)
          Whether to ignore high-level inhibitor locks (shutdown,
          reboot, sleep or idle) when the hibernate key is pressed.

     ‘lid-switch-ignore-inhibited?’ (default: ‘#f’) (type: maybe-boolean)
          Whether to ignore high-level inhibitor locks (shutdown,
          reboot, sleep or idle) when the lid is closed.

     ‘holdoff-timeout-seconds’ (default: ‘30’) (type: maybe-non-negative-integer)
          Specifies the number of seconds after system startup or system
          resume during which elogind will hold off on reacting to lid
          events.

     ‘idle-action’ (default: ‘ignore’) (type: maybe-action)
          Action to take when the system is idle.

     ‘idle-action-seconds’ (type: maybe-non-negative-integer)
          The delay after which the action configured in ‘idle-action’
          is taken after the system is idle.

     ‘runtime-directory-size-percent’ (type: maybe-percent)
          Set the size limit, in percent, on the ‘XDG_RUNTIME_DIR’
          runtime directory for each user who logs in. This specifies
          the per-user size limit relative to the amount of physical RAM
          (read access memory). This value takes precedence over that
          specified via ‘runtime-directory-size’.

     ‘runtime-directory-size’ (type: maybe-non-negative-integer)
          Set the size limit, in bytes, on the ‘XDG_RUNTIME_DIR’ runtime
          directory for each user who logs in.

     ‘remove-ipc?’ (default: ‘#t’) (type: maybe-boolean)
          Whether IPC (inter-process communication) objects belonging to
          the user shall be removed when the user fully logs out.

     ‘suspend-state’ (default: ‘(mem standby freeze)’) (type: maybe-list-of-suspend-states)
          The suspend state values to be write to ‘/sys/power/state’ by
          elogind when suspending the system. They will be tried in
          turn, until one is written without error.

     ‘suspend-mode’ (type: maybe-list-of-suspend-modes)
          The suspend mode values to write to ‘/sys/power/mem_sleep’ by
          elogind when suspending the system.

     ‘suspend-estimation-seconds’ (default: ‘3600’) (type: maybe-non-negative-integer)
          Cause the RTC alarm to wake the system after the specified
          time span to measure the system battery capacity level and
          estimate the battery discharging rate, which is used for
          estimating the time span until the system battery charge level
          goes down to 5%. This option is only used by elogind when
          using the ‘'suspend-then-hibernate’ action.

     ‘hibernate-mode’ (default: ‘(platform shutdown)’) (type: maybe-list-of-hibernation-modes)
          The hibernation mode values to write to ‘/sys/power/disk’ by
          elogind when hibernating the system.

     ‘hibernate-delay-seconds’ (type: maybe-non-negative-integer)
          The amount of time the system spends in suspend mode before
          the system is automatically put into hibernate mode.

     ‘hibernate-state’ (type: maybe-list-of-strings)
          Opción obsoleta.

     ‘hybrid-sleep-state’ (type: maybe-list-of-strings)
          Opción obsoleta.

     ‘hybrid-sleep-mode’ (type: maybe-list-of-strings)
          Opción obsoleta.

 -- Variable: accountsservice-service-type
     Type for the service that runs AccountsService, a system service
     that can list available accounts, change their passwords, and so
     on. AccountsService integrates with PolicyKit to enable
     unprivileged users to acquire the capability to modify their system
     configuration. See AccountsService
     (https://www.freedesktop.org/wiki/Software/AccountsService/) for
     more information.

     The value for this service is a file-like object, by default it is
     set to ‘accountsservice’ (the package object for AccountsService).

 -- Variable: polkit-service-type
     Type for the service that runs the Polkit privilege management
     service (https://www.freedesktop.org/wiki/Software/polkit/), which
     allows system administrators to grant access to privileged
     operations in a structured way. By querying the Polkit service, a
     privileged system component can know when it should grant
     additional capabilities to ordinary users. For example, an ordinary
     user can be granted the capability to suspend the system if the
     user is logged in locally.

     The value for this service is a ‘<polkit-configuration>’ object.

 -- Variable: polkit-wheel-service
     Servicio que añade a las usuarias del grupo ‘wheel’ como
     administradoras del servicio Polkit. Esto hace que se solicite su
     propia contraseña a las usuarias del grupo ‘wheel’ cuando realicen
     acciones administrativas en vez de la contraseña de ‘root’, de
     manera similar al comportamiento de ‘sudo’.

 -- Variable: upower-service-type
     Servicio que ejecuta <https://upower.freedesktop.org/>, ‘upowerd’,
     un monitor a nivel de sistema de consumo de energía y niveles de
     batería, con las opciones de configuración proporcionadas.

     Implementa la interfaz D-Bus ‘org.freedesktop.UPower’, y se usa de
     forma notable en GNOME.

 -- Tipo de datos: upower-configuration
     Tipo de datos que representa la configuración de UPower.

     ‘upower’ (predeterminado: UPOWER)
          Paquete usado para ‘upower’.

     ‘watts-up-pro?’ (predeterminado: ‘#f’)
          Permite el uso del dispositivo Watts Up Pro.

     ‘poll-batteries?’ (predeterminado: ‘#t’)
          Usa el servicio de consulta del núcleo para los cambios en
          niveles de batería.

     ‘ignore-lid?’ (predeterminado: ‘#f’)
          Ignora el estado de la tapa, puede ser útil en caso de ser
          incorrecto un dispositivo determinado.

     ‘use-percentage-for-policy?’ (default: ‘#t’)
          Whether to use a policy based on battery percentage rather
          than on estimated time left. A policy based on battery
          percentage is usually more reliable.

     ‘percentage-low’ (default: ‘20’)
          Cuando ‘use-percentaje-for-policy?’ es ‘#t’, determina el
          porcentaje en el que la carga de la batería se considera baja.

     ‘percentage-critical’ (default: ‘5’)
          Cuando ‘use-percentaje-for-policy?’ es ‘#t’, determina el
          porcentaje en el que la carga de la batería se considera
          crítica.

     ‘percentage-action’ (predeterminado: ‘2’)
          Cuando ‘use-percentaje-for-policy?’ es ‘#t’, determina el
          porcentaje en el que se tomará la acción.

     ‘time-low’ (predeterminado: ‘1200’)
          Cuando ‘use-percentaje-for-policy?’ es ‘#t’, determina el
          tiempo restante en segundos con el que carga de la batería se
          considera baja.

     ‘time-critical’ (predeterminado: ‘300’)
          Cuando ‘use-percentaje-for-policy?’ es ‘#t’, determina el
          tiempo restante en segundos con el que carga de la batería se
          considera crítica.

     ‘time-action’ (predeterminado: ‘120’)
          Cuando ‘use-percentaje-for-policy?’ es ‘#t’, determina el
          tiempo restante en segundos con el que se tomará la acción.

     ‘critical-power-action’ (predeterminada: ‘'hybrid-sleep’)
          La acción tomada cuando se alcanza ‘percentage-action’ o
          ‘time-action’ (dependiendo de la configuración de
          ‘use-percentage-for-policy?’).

          Los valores posibles son:

             • ‘'power-off’

             • ‘'hibernate’

             • ‘'hybrid-sleep’.

 -- Variable: udisks-service-type
     Type for the service that runs UDisks
     (https://udisks.freedesktop.org/docs/latest/), a “disk management”
     daemon that provides user interfaces with notifications and ways to
     mount/unmount disks. Programs that talk to UDisks include the
     ‘udisksctl’ command, part of UDisks, and GNOME Disks. Note that
     Udisks relies on the ‘mount’ command, so it will only be able to
     use the file-system utilities installed in the system profile. For
     example if you want to be able to mount NTFS file-systems in read
     and write fashion, you’ll need to have ‘ntfs-3g’ installed
     system-wide.

     The value for this service is a ‘<udisks-configuration>’ object.

 -- Data Type: udisks-configuration
     Data type representing the configuration for ‘udisks-service-type’.

     ‘udisks’ (default: ‘udisks’) (type: file-like)
          Package object for UDisks.

 -- Variable: gvfs-service-type
     Type for the service that provides virtual file systems for GIO
     applications, which enables support for ‘trash://’, ‘ftp://’,
     ‘sftp://’ and many other location schemas in file managers like
     Nautilus (GNOME Files) and Thunar.

     The value for this service is a ‘<gvfs-configuration>’ object.

 -- Data Type: gvfs-configuration
     Data type representing the configuration for ‘gvfs-service-type’.

     ‘gvfs’ (default: ‘gvfs’) (type: file-like)
          Package object for GVfs.

 -- Variable: colord-service-type
     Devuelve un servicio que ejecuta ‘colord’, un servicio del sistema
     con una interfaz D-Bus para la gestión de perfiles de dispositivos
     de entrada y salida como la pantalla y el escáner. Se usa de forma
     notable por parte de la herramienta gráfica de “Gestión de color”
     de GNOME. Véase la página web de colord
     (https://www.freedesktop.org/software/colord/) para más
     información.

 -- Variable: sane-service-type
     This service provides access to scanners via SANE
     (http://www.sane-project.org) by installing the necessary udev
     rules and pluggable backends. It is included in ‘%desktop-services’
     (*note Servicios de escritorio::) and relies by default on
     ‘sane-backends’ package (see below) for hardware support.

 -- Data Type: sane-configuration
     Data type representing the configuration for SANE.

     ‘sane’ (default: ‘sane’)
          Package containing SANE library.

     ‘backends’ (default: ‘(sane-backends)’)
          List of packages with pluggable SANE backends:

             • ‘sane-backends’: The default backend collection which
               supports many recent scanners,

             • ‘sane-airscan’: A backend that enables network scanners
               supporting eSCL (Apple) or WSD, (Microsoft) protocols

             • ‘hplip’: A backend containing drivers for older
               Hewlett-Packard scanners,

             • ‘utsushi’: A backend containing drivers for older Epson
               devices.

   In order to use additional backends on a system which relies on
‘%desktop-services’, you may use ‘modify-services’ (*note
‘modify-services’: Referencia de servicios.) as illustrated below:

     (use-modules (gnu))
     (use-service-modules
       ...
       desktop)
     (use-package-modules
       ...
       scanner)

     (define %my-desktop-services
       ;; List of desktop services that supports a broader range of scanners.
       (modify-services %desktop-services
         (sane-service-type _ =>
           (sane-configuration
             (backends (list sane-backends sane-airscan))))))

     (operating-system
       ...
       (services %my-desktop-services))

 -- Procedimiento: geoclue-application-name [#:allowed? #t] [#:system?
          #f] [#:users '()]
     Devuelve una configuración que permite a una aplicación el acceso a
     los datos de posicionamiento de GeoClue. NOMBRE es el Desktop ID de
     la aplicación, sin la parte ‘.desktop’. Si el valor de ALLOWED? es
     verdadero, la aplicación tendrá acceso a la información de
     posicionamiento de manera predeterminada. El valor booleano SYSTEM?
     indica si una aplicación es un componente de sistema o no. Por
     último, USERS es una lista de UID de todas las usuarias para las
     que esta aplicación tiene permitido el acceso de información. Una
     lista de usuarias vacía significa que se permiten todas las
     usuarias.

 -- Variable: %standard-geoclue-applications
     La lista estándar de configuraciones de GeoClue de aplicaciones
     conocidas, proporcionando autoridad a la utilidad de fecha y hora
     de GNOME para obtener la localización actual para ajustar la zona
     horaria, y permitiendo que los navegadores Icecat y Epiphany puedan
     solicitar información de localización. Tanto IceCat como Epiphany
     solicitan permiso a la usuaria antes de permitir a una página web
     conocer la ubicación de la usuaria.

 -- Variable: geoclue-service-type
     Type for the service that runs the GeoClue
     (https://wiki.freedesktop.org/www/Software/GeoClue/) location
     service. This service provides a D-Bus interface to allow
     applications to request access to a user’s physical location, and
     optionally to add information to online location databases.

     The value for this service is a ‘<geoclue-configuration>’ object.

 -- Variable: iio-sensor-proxy-service-type
     Type for the service that runs IIO sensor proxy
     (https://gitlab.freedesktop.org/hadess/iio-sensor-proxy), a daemon
     that proxies low-level sensor data from Industrial I/O (IIO)
     devices into a D-Bus interface. It enables user-space applications,
     such as desktop environments like GNOME and KDE, and services like
     GeoClue, to access data from various sensors commonly found in
     devices like ultrabooks and 2-in-1s. This allows for:

        • Automatic screen rotation based on accelerometer data.
        • Ambient brightness adjustment using light sensor data.
        • Compass/direction information for location services (via
          GeoClue).

     The value for this service is a ‘<iio-sensor-proxy-configuration>’
     object.

 -- Data Type: iio-sensor-proxy-configuration
     Data type representing the configuration for
     ‘iio-sensor-proxy-service-type’.

     ‘iio-sensor-proxy’ (default: ‘iio-sensor-proxy’) (type: file-like)
          Package object of iio-sensor-proxy.

 -- Variable: bluetooth-service-type
     This is the type for the Linux Bluetooth Protocol Stack
     (https://bluez.org/) (BlueZ) system, which generates the
     ‘/etc/bluetooth/main.conf’ configuration file. The value for this
     type is a ‘bluetooth-configuration’ record as in this example:

          (service bluetooth-service-type)

     See below for details about ‘bluetooth-configuration’.

 -- Data Type: bluetooth-configuration
     Data type representing the configuration for ‘bluetooth-service’.

     ‘bluez’ (default: ‘bluez’)
          ‘bluez’ package to use.

     ‘name’ (default: ‘"BlueZ"’)
          Default adapter name.

     ‘class’ (default: ‘#x000000’)
          Default device class. Only the major and minor device class
          bits are considered.

     ‘discoverable-timeout’ (default: ‘180’)
          How long to stay in discoverable mode before going back to
          non-discoverable. The value is in seconds.

     ‘always-pairable?’ (default: ‘#f’)
          Always allow pairing even if there are no agents registered.

     ‘pairable-timeout’ (default: ‘0’)
          How long to stay in pairable mode before going back to
          non-discoverable. The value is in seconds.

     ‘device-id’ (default: ‘#f’)
          Use vendor id source (assigner), vendor, product and version
          information for DID profile support. The values are separated
          by ":" and ASSIGNER, VID, PID and VERSION.

          Los valores posibles son:

             • ‘#f’ para desactivarlo,

             • ‘"assigner:1234:5678:abcd"’, where ASSIGNER is either
               ‘usb’ (default) or ‘bluetooth’.

     ‘reverse-service-discovery?’ (default: ‘#t’)
          Do reverse service discovery for previously unknown devices
          that connect to us. For BR/EDR this option is really only
          needed for qualification since the BITE tester doesn’t like us
          doing reverse SDP for some test cases, for LE this disables
          the GATT client functionally so it can be used in system which
          can only operate as peripheral.

     ‘name-resolving?’ (default: ‘#t’)
          Enable name resolving after inquiry. Set it to ‘#f’ if you
          don’t need remote devices name and want shorter discovery
          cycle.

     ‘debug-keys?’ (default: ‘#f’)
          Enable runtime persistency of debug link keys. Default is
          false which makes debug link keys valid only for the duration
          of the connection that they were created for.

     ‘controller-mode’ (default: ‘'dual’)
          Restricts all controllers to the specified transport. ‘'dual’
          means both BR/EDR and LE are enabled (if supported by the
          hardware).

          Los valores posibles son:

             • ‘'dual’

             • ‘'bredr’

             • ‘'le’

     ‘multi-profile’ (default: ‘'off’)
          Enables Multi Profile Specification support. This allows to
          specify if system supports only Multiple Profiles Single
          Device (MPSD) configuration or both Multiple Profiles Single
          Device (MPSD) and Multiple Profiles Multiple Devices (MPMD)
          configurations.

          Los valores posibles son:

             • ‘'off’

             • ‘'single’

             • ‘'multiple’

     ‘fast-connectable?’ (default: ‘#f’)
          Permanently enables the Fast Connectable setting for adapters
          that support it. When enabled other devices can connect faster
          to us, however the tradeoff is increased power consumptions.
          This feature will fully work only on kernel version 4.1 and
          newer.

     ‘privacy’ (default: ‘'off’)
          Default privacy settings.

             • ‘'off’: Disable local privacy

             • ‘'network/on’: A device will only accept advertising
               packets from peer devices that contain private addresses.
               It may not be compatible with some legacy devices since
               it requires the use of RPA(s) all the time

             • ‘'device’: A device in device privacy mode is only
               concerned about the privacy of the device and will accept
               advertising packets from peer devices that contain their
               Identity Address as well as ones that contain a private
               address, even if the peer device has distributed its IRK
               in the past

          and additionally, if CONTROLLER-MODE is set to ‘'dual’:

             • ‘'limited-network’: Apply Limited Discoverable Mode to
               advertising, which follows the same policy as to BR/EDR
               that publishes the identity address when discoverable,
               and Network Privacy Mode for scanning

             • ‘'limited-device’: Apply Limited Discoverable Mode to
               advertising, which follows the same policy as to BR/EDR
               that publishes the identity address when discoverable,
               and Device Privacy Mode for scanning.

     ‘just-works-repairing’ (default: ‘'never’)
          Specify the policy to the JUST-WORKS repairing initiated by
          peer.

          Possible values:
             • ‘'never’

             • ‘'confirm’

             • ‘'always’

     ‘temporary-timeout’ (default: ‘30’)
          How long to keep temporary devices around. The value is in
          seconds. ‘0’ disables the timer completely.

     ‘refresh-discovery?’ (default: ‘#t’)
          Enables the device to issue an SDP request to update known
          services when profile is connected.

     ‘experimental’ (default: ‘#f’)
          Enables experimental features and interfaces, alternatively a
          list of UUIDs can be given.

          Possible values:

             • ‘#t’

             • ‘#f’

             • ‘(list (uuid <uuid-1>) (uuid <uuid-2>) ...)’.

          List of possible UUIDs:
             • ‘d4992530-b9ec-469f-ab01-6c481c47da1c’: BlueZ
               Experimental Debug,

             • ‘671b10b5-42c0-4696-9227-eb28d1b049d6’: BlueZ
               Experimental Simultaneous Central and Peripheral,

             • ‘15c0a148-c273-11ea-b3de-0242ac130004’: BlueZ
               Experimental LL privacy,

             • ‘330859bc-7506-492d-9370-9a6f0614037f’: BlueZ
               Experimental Bluetooth Quality Report,

             • ‘a6695ace-ee7f-4fb9-881a-5fac66c629af’: BlueZ
               Experimental Offload Codecs.

     ‘remote-name-request-retry-delay’ (default: ‘300’)
          The duration to avoid retrying to resolve a peer’s name, if
          the previous try failed.

     ‘page-scan-type’ (default: ‘#f’)
          BR/EDR Page scan activity type.

     ‘page-scan-interval’ (default: ‘#f’)
          BR/EDR Page scan activity interval.

     ‘page-scan-window’ (default: ‘#f’)
          BR/EDR Page scan activity window.

     ‘inquiry-scan-type’ (default: ‘#f’)
          BR/EDR Inquiry scan activity type.

     ‘inquiry-scan-interval’ (default: ‘#f’)
          BR/EDR Inquiry scan activity interval.

     ‘inquiry-scan-window’ (default: ‘#f’)
          BR/EDR Inquiry scan activity window.

     ‘link-supervision-timeout’ (default: ‘#f’)
          BR/EDR Link supervision timeout.

     ‘page-timeout’ (default: ‘#f’)
          BR/EDR Page timeout.

     ‘min-sniff-interval’ (default: ‘#f’)
          BR/EDR minimum sniff interval.

     ‘max-sniff-interval’ (default: ‘#f’)
          BR/EDR maximum sniff interval.

     ‘min-advertisement-interval’ (default: ‘#f’)
          LE minimum advertisement interval (used for legacy
          advertisement only).

     ‘max-advertisement-interval’ (default: ‘#f’)
          LE maximum advertisement interval (used for legacy
          advertisement only).

     ‘multi-advertisement-rotation-interval’ (default: ‘#f’)
          LE multiple advertisement rotation interval.

     ‘scan-interval-auto-connect’ (default: ‘#f’)
          LE scanning interval used for passive scanning supporting auto
          connect.

     ‘scan-window-auto-connect’ (default: ‘#f’)
          LE scanning window used for passive scanning supporting auto
          connect.

     ‘scan-interval-suspend’ (default: ‘#f’)
          LE scanning interval used for active scanning supporting wake
          from suspend.

     ‘scan-window-suspend’ (default: ‘#f’)
          LE scanning window used for active scanning supporting wake
          from suspend.

     ‘scan-interval-discovery’ (default: ‘#f’)
          LE scanning interval used for active scanning supporting
          discovery.

     ‘scan-window-discovery’ (default: ‘#f’)
          LE scanning window used for active scanning supporting
          discovery.

     ‘scan-interval-adv-monitor’ (default: ‘#f’)
          LE scanning interval used for passive scanning supporting the
          advertisement monitor APIs.

     ‘scan-window-adv-monitor’ (default: ‘#f’)
          LE scanning window used for passive scanning supporting the
          advertisement monitor APIs.

     ‘scan-interval-connect’ (default: ‘#f’)
          LE scanning interval used for connection establishment.

     ‘scan-window-connect’ (default: ‘#f’)
          LE scanning window used for connection establishment.

     ‘min-connection-interval’ (default: ‘#f’)
          LE default minimum connection interval. This value is
          superseded by any specific value provided via the Load
          Connection Parameters interface.

     ‘max-connection-interval’ (default: ‘#f’)
          LE default maximum connection interval. This value is
          superseded by any specific value provided via the Load
          Connection Parameters interface.

     ‘connection-latency’ (default: ‘#f’)
          LE default connection latency. This value is superseded by any
          specific value provided via the Load Connection Parameters
          interface.

     ‘connection-supervision-timeout’ (default: ‘#f’)
          LE default connection supervision timeout. This value is
          superseded by any specific value provided via the Load
          Connection Parameters interface.

     ‘autoconnect-timeout’ (default: ‘#f’)
          LE default autoconnect timeout. This value is superseded by
          any specific value provided via the Load Connection Parameters
          interface.

     ‘adv-mon-allowlist-scan-duration’ (default: ‘300’)
          Allowlist scan duration during interleaving scan. Only used
          when scanning for ADV monitors. The units are msec.

     ‘adv-mon-no-filter-scan-duration’ (default: ‘500’)
          No filter scan duration during interleaving scan. Only used
          when scanning for ADV monitors. The units are msec.

     ‘enable-adv-mon-interleave-scan?’ (default: ‘#t’)
          Enable/Disable Advertisement Monitor interleave scan for power
          saving.

     ‘cache’ (default: ‘'always’)
          GATT attribute cache.

          Los valores posibles son:
             • ‘'always’: Always cache attributes even for devices not
               paired, this is recommended as it is best for
               interoperability, with more consistent reconnection times
               and enables proper tracking of notifications for all
               devices

             • ‘'yes’: Only cache attributes of paired devices

             • ‘'no’: Never cache attributes.

     ‘key-size’ (default: ‘0’)
          Minimum required Encryption Key Size for accessing secured
          characteristics.

          Los valores posibles son:
             • ‘0’: Don’t care

             • ‘7 <= N <= 16’

     ‘exchange-mtu’ (default: ‘517’)
          Exchange MTU size. Possible values are:

             • ‘23 <= N <= 517’

     ‘att-channels’ (default: ‘3’)
          Number of ATT channels. Possible values are:

             • ‘1’: Disables EATT

             • ‘2 <= N <= 5’

     ‘session-mode’ (default: ‘'basic’)
          AVDTP L2CAP signalling channel mode.

          Los valores posibles son:

             • ‘'basic’: Use L2CAP basic mode

             • ‘'ertm’: Use L2CAP enhanced retransmission mode.

     ‘stream-mode’ (default: ‘'basic’)
          AVDTP L2CAP transport channel mode.

          Los valores posibles son:

             • ‘'basic’: Use L2CAP basic mode

             • ‘'streaming’: Use L2CAP streaming mode.

     ‘reconnect-uuids’ (default: ‘'()’)
          The ReconnectUUIDs defines the set of remote services that
          should try to be reconnected to in case of a link loss (link
          supervision timeout). The policy plugin should contain a sane
          set of values by default, but this list can be overridden
          here. By setting the list to empty the reconnection feature
          gets disabled.

          Possible values:

             • ‘'()’

             • ‘(list (uuid <uuid-1>) (uuid <uuid-2>) ...)’.

     ‘reconnect-attempts’ (default: ‘7’)
          Defines the number of attempts to reconnect after a link lost.
          Setting the value to 0 disables reconnecting feature.

     ‘reconnect-intervals’ (default: ‘'(1 2 4 8 16 32 64)’)
          Defines a list of intervals in seconds to use in between
          attempts. If the number of attempts defined in
          RECONNECT-ATTEMPTS is bigger than the list of intervals the
          last interval is repeated until the last attempt.

     ‘auto-enable?’ (default: ‘#f’)
          Defines option to enable all controllers when they are found.
          This includes adapters present on start as well as adapters
          that are plugged in later on.

     ‘resume-delay’ (default: ‘2’)
          Audio devices that were disconnected due to suspend will be
          reconnected on resume. RESUME-DELAY determines the delay
          between when the controller resumes from suspend and a
          connection attempt is made. A longer delay is better for
          better co-existence with Wi-Fi. The value is in seconds.

     ‘rssi-sampling-period’ (default: ‘#xFF’)
          Default RSSI Sampling Period. This is used when a client
          registers an advertisement monitor and leaves the
          RSSISamplingPeriod unset.

          Los valores posibles son:
             • ‘#x0’: Report all advertisements

             • ‘N = #xXX’: Report advertisements every N x 100 msec
               (range: #x01 to #xFE)

             • ‘#xFF’: Report only one advertisement per device during
               monitoring period.

 -- Variable: gnome-keyring-service-type
     This is the type of the service that adds the GNOME Keyring
     (https://wiki.gnome.org/Projects/GnomeKeyring). Its value is a
     ‘gnome-keyring-configuration’ object (see below). Note that there
     is no need to use this service when using
     ‘gnome-desktop-service-type’, which includes it.

     Este servicio añade el paquete ‘gnome-keyring’ al perfil del
     sistema y extiende PAM con entradas que usan
     ‘pam_gnome_keyring.so’, las cuales desbloquean el anillo de claves
     del sistema de la usuaria cuando ingrese en el sistema o cambie su
     contraseña con passwd.

 -- Tipo de datos: gnome-keyring-configuration
     Registro de configuración para el servicio del anillo de claves de
     GNOME.

     ‘keyring’ (predeterminado: ‘gnome-keyring’)
          El paquete GNOME keyring usado.

     ‘pam-services’
          Una lista de pares ‘(SERVICIO . TIPO)’ que denotan los
          servicios de PAM que deben extenderse, donde SERVICIO es el
          nombre de un servicio existente que debe extenderse y TIPO es
          ‘login’ o ‘passwd’.

          Si se proporciona ‘login’, añade un campo opcional
          ‘pam_gnome_keyring.so’ al bloque de identificación sin
          parámetros y al bloque de sesión con ‘auto_start’. Si se
          proporciona ‘passwd’, añade un campo opcional
          ‘pam_gnome_keyring.so’ al bloque de contraseña sin parámetros.

          De manera predeterminada, este campo contiene “gdm-password”
          con el valor ‘login’ y “passwd” tiene valor ‘passwd’.

 -- Variable: kwallet-service-type
     This is the type of the service that adds the KWallet keyring
     (https://invent.kde.org/plasma/kwallet-pam). Its value is a
     ‘kwallet-configuration’ object (see below). Note that, contrary to
     ‘gnome-desktop-service-type’, which includes the respective keyring
     for that service, ‘gnome-keyring-service-type’,
     ‘plasma-desktop-service-type’ does not include
     ‘kwallet-service-type’.

     This service adds the ‘kwallet-pam’ package to the system profile
     and extends PAM with entries using ‘pam_kwallet5.so’. It can unlock
     the user’s login keyring or set their password with ‘passwd’ at the
     time they log in.

 -- Data Type: kwallet-configuration
     Configuration record for the KWallet Keyring service.

     ‘keyring’ (default: ‘kwallet-pam’)
          The KWallet keyring package to use.

     ‘pam-services’
          A list of ‘(SERVICE . KIND)’ pairs denoting PAM services to
          extend, where SERVICE is the name of an existing service to
          extend and KIND is one of ‘login’ or ‘passwd’ symbols.

          If ‘login’ is given, it adds an optional ‘pam_kwallet5.so’ to
          the auth block without arguments and to the session block with
          ‘auto_start’. If ‘passwd’ is given, it adds an optional
          ‘pam_kwallet5.so’ to the password block without arguments.

          By default, it takes for value an alist associating the
          ‘"sddm"’ key with the ‘'login’ value, and the ‘"passwd"’ key
          with the ‘'passwd’ value.

 -- Variable: seatd-service-type
     seatd (https://sr.ht/~kennylevinsen/seatd/) is a minimal seat
     management daemon.

     Seat management takes care of mediating access to shared devices
     (graphics, input), without requiring the applications needing
     access to be root.

          (append
            (list
             ;; make sure seatd is running
             (service seatd-service-type))

            ;; normally one would want %base-services
            %base-services)


     ‘seatd’ operates over a UNIX domain socket, with ‘libseat’
     providing the client side of the protocol. Applications that
     acquire access to the shared resources via ‘seatd’ (e.g. ‘sway’)
     need to be able to talk to this socket. This can be achieved by
     adding the user they run under to the group owning ‘seatd’’s socket
     (usually “seat”), like so:

          (user-account
            (name "alice")
            (group "users")
            (supplementary-groups '("wheel"   ; allow use of sudo, etc.
                                    "seat"    ; seat management
                                    "audio"   ; sound card
                                    "video"   ; video devices such as webcams
                                    "cdrom")) ; the good ol' CD-ROM
            (comment "Bob's sister"))

     Depending on your setup, you will have to not only add regular
     users, but also system users to this group. For instance, some
     greetd greeters require graphics and therefore also need to
     negotiate with seatd.

 -- Data Type: seatd-configuration
     Configuration record for the seatd daemon service.

     ‘seatd’ (default: ‘seatd’)
          The seatd package to use.

     ‘group’ (default: ‘"seat"’)
          Group to own the seatd socket.

     ‘socket’ (default: ‘"/run/seatd.sock"’)
          Where to create the seatd socket.

     ‘logfile’ (default: ‘"/var/log/seatd.log"’)
          Log file to write to.

     ‘loglevel’ (default: ‘"error"’)
          Log level to output logs. Possible values: ‘"silent"’,
          ‘"error"’, ‘"info"’ and ‘"debug"’.

   ---------- Footnotes ----------

   (1) D-Bus (https://dbus.freedesktop.org/) es una herramienta para la
facilitación de intercomunicación entre procesos. Su bus del sistema se
usa para permitir la comunicación entre y la notificación de eventos a
nivel de sistema a los servicios.

