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

Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021
Ludovic Courtès
Copyright © 2013, 2014, 2016 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 Leo Famulari
Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus
Copyright © 2016 Ben Woodcroft
Copyright © 2016, 2017, 2018, 2021 Chris Marusich
Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner
Copyright © 2016 John Darrington
Copyright © 2016, 2017 Nikita Gillmann
Copyright © 2016, 2017, 2018, 2019, 2020 Jan Nieuwenhuizen
Copyright © 2016, 2017, 2018, 2019, 2020 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 Mathieu Othacehe
Copyright © 2017 Federico Beffa
Copyright © 2017, 2018 Carlo Zancanaro
Copyright © 2017 Thomas Danckaert
Copyright © 2017 humanitiesNerd
Copyright © 2017, 2021 Christopher Lemmer Webber
Copyright © 2017, 2018, 2019, 2020 Marius Bakke
Copyright © 2017, 2019, 2020 Hartmut Goebel
Copyright © 2017, 2019, 2020, 2021 Maxim Cournoyer
Copyright © 2017, 2018, 2019, 2020, 2021 Tobias Geerinckx-Rice
Copyright © 2017 George Clemmer
Copyright © 2017 Andy Wingo
Copyright © 2017, 2018, 2019, 2020 Arun Isaac
Copyright © 2017 nee
Copyright © 2018 Rutger Helling
Copyright © 2018, 2021 Oleg Pykhalov
Copyright © 2018 Mike Gerwitz
Copyright © 2018 Pierre-Antoine Rouby
Copyright © 2018, 2019 Gábor Boskovits
Copyright © 2018, 2019, 2020 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 Guillaume Le Vaillant
Copyright © 2020 Leo Prikler
Copyright © 2019, 2020 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 Brice Waegeneire
Copyright © 2020 R Veera Kumar
Copyright © 2020 Pierre Langlois
Copyright © 2020 pinoaffe
Copyright © 2020 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 Maxime Devos

   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: (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 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: Uso de la configuración del sistema,  Next: Referencia de operating-system,  Up: Configuración del sistema

10.1 Uso de la configuración del sistema
========================================

El sistema operativo se configura proporcionando una declaración
‘operating-system’ en un archivo que pueda ser proporcionado a la orden
‘guix system’ (*note Invocación de guix system::). Una configuración
simple, con los servicios predeterminados del sistema, el núcleo
Linux-Libre predeterminado, un disco de RAM inicial y un cargador de
arranque puede ser como sigue:

     ;; This is an operating system configuration template
     ;; for a "bare bones" setup, with no X11 display server.

     (use-modules (gnu))
     (use-service-modules networking ssh)
     (use-package-modules screen ssh)

     (operating-system
       (host-name "komputilo")
       (timezone "Europe/Berlin")
       (locale "en_US.utf8")

       ;; Boot in "legacy" BIOS mode, assuming /dev/sdX is the
       ;; target hard disk, and "my-root" is the label of the target
       ;; root file system.
       (bootloader (bootloader-configuration
                     (bootloader grub-bootloader)
                     (target "/dev/sdX")))
       (file-systems (cons (file-system
                             (device (file-system-label "my-root"))
                             (mount-point "/")
                             (type "ext4"))
                           %base-file-systems))

       ;; This is where user accounts are specified.  The "root"
       ;; account is implicit, and is initially created with the
       ;; empty password.
       (users (cons (user-account
                     (name "alice")
                     (comment "Bob's sister")
                     (group "users")

                     ;; Adding the account to the "wheel" group
                     ;; makes it a sudoer.  Adding it to "audio"
                     ;; and "video" allows the user to play sound
                     ;; and access the webcam.
                     (supplementary-groups '("wheel"
                                             "audio" "video")))
                    %base-user-accounts))

       ;; Globally-installed packages.
       (packages (cons screen %base-packages))

       ;; Add services to the baseline: a DHCP client and
       ;; an SSH server.
       (services (append (list (service dhcp-client-service-type)
                               (service openssh-service-type
                                        (openssh-configuration
                                         (openssh openssh-sans-x)
                                         (port-number 2222))))
                         %base-services)))

   Este ejemplo debería ser auto-descriptivo. Algunos de los campos
definidos anteriormente, como ‘host-name’ y ‘bootloader’, son
necesarios. Otros como ‘packages’ y ‘services’, pueden omitirse, en cuyo
caso obtienen un valor por defecto.

   Más adelante se muestran los efectos de algunos de los campos más
importantes (*note Referencia de operating-system::, para detalles
acerca de todos los campos disponibles), y cómo “instanciar” el sistema
operativo usando ‘guix system’.

Cargador de arranque
--------------------

El campo ‘bootloader’ describe el método que será usado para arrancar su
sistema. Las máquinas basadas en procesadores Intel pueden arrancar en
el “obsoleto” modo BIOS, como en el ejemplo previo. No obstante,
máquinas más recientes usan la “Interfaz Unificada Extensible de
Firmware” (UEFI) para arrancar. En ese caso, el capo ‘bootloader’ debe
contener algo parecido a esto:

     (bootloader-configuration
       (bootloader grub-efi-bootloader)
       (target "/boot/efi"))

   *Note Configuración del gestor de arranque::, para más información
sobre las opciones de configuración disponibles.

Paquetes visibles globalmente
-----------------------------

El campo ‘packages’ enumera los paquetes que serán visibles globalmente
en el sistema, para todas las cuentas de usuaria—es decir, en la
variable de entorno ‘PATH’ de cada usuaria—sin tener en cuenta los
perfiles de cada usuaria (*note Invocación de guix package::). La
variable ‘%base-packages’ proporciona todas las herramientas esperadas
para tareas básicas y de administración—incluyendo las utilidades
básicas GNU, las herramientas de red GNU, el editor de texto ligero GNU
Zile, ‘find’, ‘grep’, etc. El ejemplo previo se añade GNU Screen a
estos, tomado del módulo ‘(gnu packages screen)’ (*note Módulos de
paquetes::). La sintaxis ‘(list package output)’ puede usarse para
añadir una salida específica de un paquete:

     (use-modules (gnu packages))
     (use-modules (gnu packages dns))

     (operating-system
       ;; ...
       (packages (cons (list bind "utils")
                       %base-packages)))

   Referirse a los paquetes por nombre de variable, como antes a ‘bind’,
tiene la ventaja de evitar ambigüedades; también permite que errores
tipográficos y demás obtengan un diagnóstico directo como “variables sin
definir”. La parte problemática es que se necesita conocer qué módulo
define qué paquete, y aumentar adecuadamente la línea de
‘use-package-modules’. Para evitar esto, se puede usar el procedimiento
‘specification->package’ del módulo ‘(gnu packages)’, que devuelve el
mejor paquete para un nombre dado, o nombre y versión:

     (use-modules (gnu packages))

     (operating-system
       ;; ...
       (packages (append (map specification->package
                              '("tcpdump" "htop" "gnupg@2.0"))
                         %base-packages)))

Servicios del sistema
---------------------

El campo ‘services’ enumera los “servicios del sistema” disponibles
cuando el sistema arranque (*note Servicios::). La declaración
‘operating-system’ previa especifica que, además de los servicios
básicos, queremos que el daemon de shell seguro OpenSSH espere
conexiones por el puerto 2222 (*note ‘openssh-service-type’: Servicios
de red.). En su implementación, ‘openssh-service-type’ prepara todo para
que ‘sshd’ se inicie con las opciones de la línea de órdenes adecuadas,
posiblemente generando bajo demanda los archivos de configuración
necesarios (*note Definición de servicios::).

   De manera ocasional, en vez de usar los servicios básicos tal y como
vienen, puede querer personalizarlos. Para hacerlo, use
‘modify-services’ (*note ‘modify-services’: Referencia de servicios.)
para modificar la lista.

   Por ejemplo, supongamos que quiere modificar ‘guix-daemon’ y Mingetty
(el punto de acceso al sistema por consola) en la lista ‘%base-services’
(*note ‘%base-services’: Servicios base.). Para hacerlo, puede escribir
lo siguiente en su declaración de sistema operativo:

     (define %mis-servicios
       ;; Mi propia lista de servicios
       (modify-services %base-services
         (guix-service-type config =>
                            (guix-configuration
                             (inherit config)
                             ;; Obtenemos sustituciones desde example.org.
                             (substitute-urls
                               (list "https://example.org/guix"
                                     "https://ci.guix.gnu.org"))))
         (mingetty-service-type config =>
                                (mingetty-configuration
                                 (inherit config)
                                 ;; Ingresamos automáticamente con
                                 ;; la cuenta "guest".
                                 (auto-login "guest")))))

     (operating-system
       ;; ...
       (services %mis-servicios))

   Esto modifica la configuración—es decir, los parámetros de los
servicios—de la instancia ‘guix-service-type’, y de todas las instancias
de ‘mingetty-service-type’ en la lista ‘%base-services’. Observe cómo se
consigue: primero, enlazamos la configuración actual al identificador
‘config’ en el CUERPO, y entonces escribimos el CUERPO de manera que
evalúe a la configuración deseada. En particular, fíjese como se usa
‘inherit’ para crear una nueva configuración que tiene los mismos
valores que la configuración antigua, pero con unas pocas
modificaciones.

   La configuración para un uso típico de “escritorio”, con una
partición de raíz cifrada, el servidor gráfico X11, GNOME y Xfce (las
usuarias pueden escoger cual de estos entornos de escritorio usarán en
la pantalla de inicio de sesión pulsando ‘F1’), gestión de red, gestión
de energía y más, podría ser así:

     ;; This is an operating system configuration template
     ;; for a "desktop" setup with GNOME and Xfce where the
     ;; root partition is encrypted with LUKS.

     (use-modules (gnu) (gnu system nss))
     (use-service-modules desktop xorg)
     (use-package-modules certs gnome)

     (operating-system
       (host-name "antelope")
       (timezone "Europe/Paris")
       (locale "en_US.utf8")

       ;; Choose US English keyboard layout.  The "altgr-intl"
       ;; variant provides dead keys for accented characters.
       (keyboard-layout (keyboard-layout "us" "altgr-intl"))

       ;; Use the UEFI variant of GRUB with the EFI System
       ;; Partition mounted on /boot/efi.
       (bootloader (bootloader-configuration
                     (bootloader grub-efi-bootloader)
                     (target "/boot/efi")
                     (keyboard-layout keyboard-layout)))

       ;; Specify a mapped device for the encrypted root partition.
       ;; The UUID is that returned by 'cryptsetup luksUUID'.
       (mapped-devices
        (list (mapped-device
               (source (uuid "12345678-1234-1234-1234-123456789abc"))
               (target "my-root")
               (type luks-device-mapping))))

       (file-systems (append
                      (list (file-system
                              (device (file-system-label "my-root"))
                              (mount-point "/")
                              (type "ext4")
                              (dependencies mapped-devices))
                            (file-system
                              (device (uuid "1234-ABCD" 'fat))
                              (mount-point "/boot/efi")
                              (type "vfat")))
                      %base-file-systems))

       ;; Create user `bob' with `alice' as its initial password.
       (users (cons (user-account
                     (name "bob")
                     (comment "Alice's brother")
                     (password (crypt "alice" "$6$abc"))
                     (group "users")
                     (supplementary-groups '("wheel" "netdev"
                                             "audio" "video")))
                    %base-user-accounts))

       ;; This is where we specify system-wide packages.
       (packages (append (list
                          ;; for HTTPS access
                          nss-certs
                          ;; for user mounts
                          gvfs)
                         %base-packages))

       ;; Add GNOME and Xfce---we can choose at the log-in screen
       ;; by clicking the gear.  Use the "desktop" services, which
       ;; include the X11 log-in service, networking with
       ;; NetworkManager, and more.
       (services (append (list (service gnome-desktop-service-type)
                               (service xfce-desktop-service-type)
                               (set-xorg-configuration
                                (xorg-configuration
                                 (keyboard-layout keyboard-layout))))
                         %desktop-services))

       ;; Allow resolution of '.local' host names with mDNS.
       (name-service-switch %mdns-host-lookup-nss))

   Un sistema gráfico con una selección de gestores de ventanas ligeros
en vez de entornos de escritorio completos podría ser así:

     ;; This is an operating system configuration template
     ;; for a "desktop" setup without full-blown desktop
     ;; environments.

     (use-modules (gnu) (gnu system nss))
     (use-service-modules desktop)
     (use-package-modules bootloaders certs emacs emacs-xyz ratpoison suckless wm
                          xorg)

     (operating-system
       (host-name "antelope")
       (timezone "Europe/Paris")
       (locale "en_US.utf8")

       ;; Use the UEFI variant of GRUB with the EFI System
       ;; Partition mounted on /boot/efi.
       (bootloader (bootloader-configuration
                     (bootloader grub-efi-bootloader)
                     (target "/boot/efi")))

       ;; Assume the target root file system is labelled "my-root",
       ;; and the EFI System Partition has UUID 1234-ABCD.
       (file-systems (append
                      (list (file-system
                              (device (file-system-label "my-root"))
                              (mount-point "/")
                              (type "ext4"))
                            (file-system
                              (device (uuid "1234-ABCD" 'fat))
                              (mount-point "/boot/efi")
                              (type "vfat")))
                      %base-file-systems))

       (users (cons (user-account
                     (name "alice")
                     (comment "Bob's sister")
                     (group "users")
                     (supplementary-groups '("wheel" "netdev"
                                             "audio" "video")))
                    %base-user-accounts))

       ;; Add a bunch of window managers; we can choose one at
       ;; the log-in screen with F1.
       (packages (append (list
                          ;; window managers
                          ratpoison i3-wm i3status dmenu
                          emacs emacs-exwm emacs-desktop-environment
                          ;; terminal emulator
                          xterm
                          ;; for HTTPS access
                          nss-certs)
                         %base-packages))

       ;; Use the "desktop" services, which include the X11
       ;; log-in service, networking with NetworkManager, and more.
       (services %desktop-services)

       ;; Allow resolution of '.local' host names with mDNS.
       (name-service-switch %mdns-host-lookup-nss))

   Este ejemplo se refiere al sistema de archivos ‘/boot/efi’ por su
UUID ‘1234-ABCD’. Substituya este UUID con el UUID correcto en su
sistema, como el devuelto por la orden ‘blkid’.

   *Note Servicios de escritorio::, para la lista exacta de servicios
proporcionados por ‘%desktop-services’. *Note Certificados X.509::, para
información sobre el paquete ‘nss-certs’ usado aquí.

   De nuevo, ‘%desktop-services’ es simplemente una lista de objetos de
servicios. Si desea borrar servicios de aquí, puede hacerlo usando
procedimientos de filtrado de listas (*note (guile)SRFI-1 Filtering and
Partitioning::). Por ejemplo, la siguiente expresión devuelve una lista
que contiene todos los servicios en ‘%desktop-services’ excepto el
servicio Avahi:

     (remove (lambda (service)
               (eq? (service-kind service) avahi-service-type))
             %desktop-services)

   Alternatively, the ‘modify-services’ macro can be used:

     (modify-services %desktop-services
       (delete avahi-service-type))

Instanciación del sistema
-------------------------

Asumiendo que la declaración de ‘operating-system’ se encuentra en el
archivo ‘mi-configuración-del-sistema.scm’, la orden ‘guix system
mi-conf-del-sistema.scm’ instancia esa configuración, y la convierte en
la entrada predeterminada de GRUB en el arranque (*note Invocación de
guix system::).

   La manera habitual de cambiar la configuración del sistema es
actualizar este archivo y volver a ejecutar ‘guix system reconfigure’.
Nunca se deberían tocar los archivos en ‘/etc’ o ejecutar órdenes que
modifiquen el estado del sistema como ‘useradd’ o ‘grub-install’. De
hecho, debe evitarlo ya que no únicamente anularía su garantía sino que
también le impediría volver a una versión previa de su sistema, en caso
de necesitarlo.

   Hablando de vuelta atrás, cada vez que ejecuta ‘guix system
reconfigure’ se crea una nueva “generación” del sistema—sin modificar o
borrar generaciones previas. Las generaciones previas tienen una entrada
en el menú del cargador de arranque, lo que permite arrancarlas en caso
de que algo funcionase mal en las últimas generaciones. Tranquilizador,
¿no? La orden ‘guix system list-generations’ enumera las generaciones
del sistema disponibles en el disco. Es también posible volver a una
versión previa con las órdenes ‘guix system roll-back’ y ‘guix system
switch-generation’.

   Aunque la orden ‘guix system reconfigure’ no modificará las
generaciones previas, debe tener cuidado cuando la generación actual no
es la última (por ejemplo, después de invocar ‘guix system roll-back’),
ya que la operación puede sobreescribir una generación posterior (*note
Invocación de guix system::).

La interfaz programática
------------------------

A nivel Scheme, el grueso de una declaración ‘operating-system’ se
instancia con el siguiente procedimiento monádico (*note La mónada del
almacén::):

 -- Procedimiento monádico: operating-system-derivation so
     Devuelve una derivación que construye SO, un objeto
     ‘operating-system’ (*note Derivaciones::).

     La salida de la derivación es un único directorio que hace
     referencia a todos los paquetes, archivos de configuración y otros
     archivos auxiliares necesarios para instanciar SO.

   Este procedimiento se proporciona por el módulo ‘(gnu system)’. Junto
con ‘(gnu services)’ (*note Servicios::), este módulo contiene los
entresijos del sistema Guix. ¡Asegúrese de echarle un vistazo!


File: guix.es.info,  Node: Referencia de operating-system,  Next: Sistemas de archivos,  Prev: Uso de la configuración del sistema,  Up: Configuración del sistema

10.2 Referencia de ‘operating-system’
=====================================

Esta sección resume todas las opciones disponibles en las declaraciones
de ‘operating-system’ (*note Uso de la configuración del sistema::).

 -- Tipo de datos: operating-system
     Este es el tipo de datos que representa la configuración del
     sistema operativo. Con ello queremos decir toda la configuración
     global del sistema, no la configuración específica de las usuarias
     (*note Uso de la configuración del sistema::).

     ‘kernel’ (predeterminado: ‘linux-libre’)
          El objeto del paquete del núcleo del sistema operativo
          usado(1).

     ‘hurd’ (predeterminado: ‘#f’)
          El objeto del paquete de Hurd iniciado por el núcleo. Cuando
          se proporciona este campo, produce un sistema operativo
          GNU/Hurd. En ese caso, ‘kernel’ también debe contener el
          paquete ‘gnumach’—el micronúcleo sobre el que se ejecuta Hurd.

               Aviso: Esta característica es experimental y únicamente
               está implementada para imágenes de disco.

     ‘kernel-loadable-modules’ (predeterminados: ‘'()’)
          Una lista de objetos (habitualmente paquetes) desde los que se
          obtendrán los módulos del núcleo–por ejemplo ‘(list
          ddcci-driver-linux)’.

     ‘kernel-arguments’ (predeterminados: ‘%default-kernel-arguments’)
          Lista de cadenas o expresiones-G que representan parámetros
          adicionales a pasar en la línea de órdenes del núcleo—por
          ejemplo, ‘("console=ttyS0")’.

     ‘bootloader’
          El objeto de configuración del cargador de arranque del
          sistema. *Note Configuración del gestor de arranque::.

     ‘label’
          Es una etiqueta (una cadena) con la que aparecerá en el menú
          del cargador de arranque. La etiqueta predeterminada incluye
          el nombre y la versión del núcleo.

     ‘keyboard-layout’ (predeterminada: ‘#f’)
          This field specifies the keyboard layout to use in the
          console. It can be either ‘#f’, in which case the default
          keyboard layout is used (usually US English), or a
          ‘<keyboard-layout>’ record. *Note Distribución de teclado::,
          for more information.

          Esta distribución de teclado se hace efectiva tan pronto el
          núcleo haya arrancado. Por ejemplo, la distribución de teclado
          está en efecto cuando introduzca una contraseña si su sistema
          de archivos raíz se encuentra en un dispositivo traducido
          ‘luks-device-mapping’ (*note Dispositivos traducidos::).

               Nota: Esto _no_ especifica la distribución de teclado
               usada por el cargador de arranque, ni tampoco la usada
               por el servidor gráfico. *Note Configuración del gestor
               de arranque::, para información sobre cómo especificar la
               distribución de teclado del cargador de arranque. *Note
               Sistema X Window::, para información sobre cómo
               especificar la distribución de teclado usada por el
               sistema de ventanas X.

     ‘initrd-modules’ (predeterminados: ‘%base-initrd-modules’)
          La lista de módulos del núcleo Linux que deben estar
          disponibles en el disco inicial en RAM. *Note Disco en RAM
          inicial::.

     ‘initrd’ (predeterminado: ‘base-initrd’)
          Un procedimiento que devuelve un disco inicial en RAM para el
          núcleo Linux. Este campo se proporciona para permitir
          personalizaciones de bajo nivel y no debería ser necesario
          para un uso habitual. *Note Disco en RAM inicial::.

     ‘firmware’ (predeterminado: ‘%base-firmware’)
          Lista de paquetes de firmware que pueden ser cargados por el
          núcleo del sistema operativo.

          El valor predeterminado incluye el firmware necesario para
          dispositivos WiFi basados en Atheros y Broadcom (módulos
          Linux-libre ‘ath9k’ y ‘b43-open’, respectivamente). *Note
          Consideraciones sobre el hardware::, para más información
          sobre hardware soportado.

     ‘host-name’
          El nombre de la máquina.

     ‘hosts-file’
          Un objeto tipo-archivo (*note objetos “tipo-archivo”:
          Expresiones-G.) para ser usado como ‘/etc/hosts’ (*note
          (libc)Host Names::). El predeterminado es un archivo con
          entradas para ‘localhost’ y HOST-NAME.

     ‘mapped-devices’ (predeterminados: ‘'()’)
          Una lista de dispositivos traducidos. *Note Dispositivos
          traducidos::.

     ‘file-systems’
          Una lista de sistemas de archivos. *Note Sistemas de
          archivos::.

     ‘swap-devices’ (predeterminados: ‘'()’)
          Lista de UUID, etiquetas de sistema de archivos o cadenas que
          identifiquen dispositivos o archivos que se usarán como
          espacio de intercambio (*note (libc)Memory Concepts::). A
          continuación puede encontrar algunos ejemplos:

          ‘(list (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb"))’
               Use the swap partition with the given UUID. You can learn
               the UUID of a Linux swap partition by running ‘swaplabel
               DEVICE’, where DEVICE is the ‘/dev’ file name of that
               partition.

          ‘(list (file-system-label "intercambio"))’
               Se usa la partición con etiqueta ‘intercambio’. De nuevo,
               la orden ‘swaplabel’ le permite ver y cambiar la etiqueta
               de una partitición de intercambio de Linux.

          ‘(list "/archivo-de-intercambio")’
               Se usa el archivo ‘/archivo-de-intercambio’ como espacio
               de intercambio.

          ‘(list "/dev/sda3" "/dev/sdb2")’
               Se usan las particiones ‘/dev/sda3’ y ‘/dev/sdb2’ como
               espacio de intercambio. Le recomendamos que haga
               referencia a los dispositivos de intercambio a través de
               UUID o etiquetas como se muestra en los ejemplos previos.

          Es posible especificar un archivo de intercambio en un sistema
          de archivos en un dispositivo traducido (bajo ‘/dev/mapper’),
          siempre que la traducción y el sistema de archivos se
          especifiquen también. *Note Dispositivos traducidos:: y *note
          Sistemas de archivos::.

     ‘users’ (predeterminadas: ‘%base-user-accounts’)
     ‘groups’ (predeterminados: ‘%base-groups’)
          Lista de cuentas de usuaria y grupos. *Note Cuentas de
          usuaria::.

          Si la lista de ‘usuarias’ carece de una cuenta de usuaria con
          UID 0, una cuenta “root” con UID 0 se añade automáticamente.

     ‘skeletons’ (predeterminados: ‘(default-skeletons)’)
          Una lista de tuplas de nombre de archivo de destino/objeto
          tipo-archivo (*note objetos “tipo-archivo”: Expresiones-G.).
          Estos son los archivos de esqueleto que se añadirán al
          directorio de las cuentas de usuaria que se creen.

          Por ejemplo, un valor válido puede parecer algo así:

               `((".bashrc" ,(plain-file "bashrc" "echo Hola\n"))
                 (".guile" ,(plain-file "guile"
                                        "(use-modules (ice-9 readline))
                                         (activate-readline)")))

     ‘issue’ (predeterminado: ‘%default-issue’)
          Una cadena que denota el contenido del archivo ‘/etc/issue’,
          que se muestra cuando las usuarias ingresan al sistema en una
          consola de texto.

     ‘packages’ (predeterminados: ‘%base-packages’)
          Una lista de paquetes instalados en el perfil global, que es
          accesible en ‘/run/current-system/profile’. Cada elemento debe
          ser una variable de paquete o una tupla paquete/salida. A
          continuación se muestra un ejemplo de ambos tipos:

               (cons* git                     ; la salida predeterminada "out"
                      (list git "send-email") ; otra salida de git
                      %base-packages)         ; el conjunto predeterminado

          El conjunto predeterminado incluye utilidades básicas y es una
          buena práctica instalar utilidades no-básicas en los perfiles
          de las usuarias (*note Invocación de guix package::).

     ‘timezone’
          Una cadena que identifica la zona horaria—por ejemplo,
          ‘"Europe/Paris"’.

          Puede ejecutar la orden ‘tzselect’ para encontrar qué cadena
          de zona horaria corresponde con su región. Elegir una zona
          horaria no válida provoca un fallo en ‘guix system’.

     ‘locale’ (predeterminado: ‘"en_US.utf8"’)
          El nombre de la localización predeterminada (*note
          (libc)Locale Names::). *Note Localizaciones::, para más
          información.

     ‘locale-definitions’ (predeterminadas: ‘%default-locale-definitions’)
          La lista de definiciones de localizaciones a compilar y que
          puede ser usada en tiempo de ejecución. *Note
          Localizaciones::.

     ‘locale-libcs’ (predeterminadas: ‘(list GLIBC)’)
          La lista de paquetes GNU libc cuyos datos de localización y
          herramientas son usadas para las definiciones de
          localizaciones. *Note Localizaciones::, para consideraciones
          de compatibilidad que justifican esta opción.

     ‘name-service-switch’ (predeterminado: ‘%default-nss’)
          Configuración del selector de servicios de nombres de libc
          (NSS)—un objeto ‘<name-service-switch>’. *Note Selector de
          servicios de nombres::, para detalles.

     ‘services’ (predeterminados: ‘%base-services’)
          Una lista de objetos service denotando los servicios del
          sistema. *Note Servicios::.

     ‘essential-services’ (predeterminados: ...)
          La lista de “servicios esenciales”—es decir, cosas como
          instancias de ‘system-service-type’ y ‘host-name-service-type’
          (*note Referencia de servicios::), las cuales se derivan de su
          definición de sistema operativo en sí. Como usuaria _nunca_
          debería modificar este campo.

     ‘pam-services’ (predeterminados: ‘(base-pam-services)’)
          Servicios de los “módulos de identificación conectables” (PAM)
          de Linux.

     ‘setuid-programs’ (predeterminados: ‘%setuid-programs’)
          Lista de expresiones-G con valores de cadena que denotan los
          programas setuid. *Note Programas con setuid::.

     ‘sudoers-file’ (predeterminado: ‘%sudoers-specification’)
          El contenido de ‘/etc/sudoers’ como un objeto tipo-archivo
          (*note ‘local-file’ y ‘plain-file’: Expresiones-G.).

          Este archivo especifica qué usuarias pueden usar la orden
          ‘sudo’, lo que se les permite hacer y qué privilegios pueden
          obtener. El comportamiento predefinido es que únicamente
          ‘root’ y los miembros del grupo ‘wheel’ pueden usar ‘sudo’.

      -- Tipo de datos: this-operating-system
          Cuando se usa en el _ámbito léxico_ de un campo de una
          definición de sistema operativo, este identificador está
          enlazado al sistema operativo en definición.

          El siguiente ejemplo muestra cómo hacer referencia al sistema
          operativo en definición en la definición del campo ‘label’:

               (use-modules (gnu) (guix))

               (operating-system
                 ;; ...
                 (label (package-full-name
                         (operating-system-kernel this-operating-system))))

          Es un error hacer referencia a ‘this-operating-system’ fuera
          de una definición de sistema operativo.

   ---------- Footnotes ----------

   (1) Actualmente únicamente está completamente implementado el núcleo
Linux-libre. El uso de GNU mach con GNU Hurd es experimental y
únicamente está disponible cuando se construye una imagen de disco para
máquina virtual.


File: guix.es.info,  Node: Sistemas de archivos,  Next: Dispositivos traducidos,  Prev: Referencia de operating-system,  Up: Configuración del sistema

10.3 Sistemas de archivos
=========================

La lista de sistemas de archivos que deben montarse se especifica en el
campo ‘file-systems’ de la declaración del sistema operativo (*note Uso
de la configuración del sistema::). Cada sistema de archivos se declara
usando la forma ‘file-system’, como en el siguiente ejemplo:

     (file-system
       (mount-point "/home")
       (device "/dev/sda3")
       (type "ext4"))

   Como es habitual, algunos de los campos son obligatorios—aquellos
mostrados en el ejemplo previo—mientras que otros pueden omitirse. Se
describen a continuación.

 -- Tipo de datos: file-system
     Objetos de este tipo representan los sistemas de archivos a montar.
     Contienen los siguientes campos:

     ‘type’
          Este campo es una cadena que especifica el tipo de sistema de
          archivos—por ejemplo, ‘"ext4"’.

     ‘mount-point’
          Designa la ruta donde el sistema de archivos debe montarse.

     ‘device’
          Nombra la “fuente” del sistema de archivos. Puede ser una de
          estas tres opciones: una etiqueta de sistema de archivos, un
          UUID de sistema de archivos o el nombre de un nodo ‘/dev’. Las
          etiquetas y UUID ofrecen una forma de hacer referencia a
          sistemas de archivos sin codificar su nombre de dispositivo
          actual(1).

          Las etiquetas del sistema de archivos se crean mediante el uso
          del procedimiento ‘file-system-label’, los UUID se crean
          mediante el uso de ‘uuid’ y los nodos ‘/dev’ son simples
          cadenas. A continuación se proporciona un ejemplo de un
          sistema de archivos al que se hace referencia mediante su
          etiqueta, como es mostrada por la orden ‘e2label’:

               (file-system
                 (mount-point "/home")
                 (type "ext4")
                 (device (file-system-label "mi-home")))

          Los UUID se convierten dede su representación en forma de
          cadena (como se muestra con la orden ‘tune2fs -l’) mediante el
          uso de la forma ‘uuid’(2), como sigue:

               (file-system
                 (mount-point "/home")
                 (type "ext4")
                 (device (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")))

          Cuando la fuente de un sistema de archivos es un dispositivo
          traducido (*note Dispositivos traducidos::), su campo ‘device’
          _debe_ hacer referencia al nombre del dispositivo
          traducido—por ejemplo, ‘"/dev/mapper/particion-raiz"’. Esto es
          necesario para que el sistema sepa que el montaje del sistema
          de archivos depende del establecimiento de la traducción de
          dispositivos correspondiente.

     ‘flags’ (predeterminadas: ‘'()’)
          Es una lista de símbolos que indican opciones del montado. Las
          opciones reconocidas incluyen ‘read-only’(3), ‘bind-mount’(4),
          ‘no-dev’ (prohibición del acceso a archivos especiales),
          ‘no-suid’ (ignora los bits setuid y setgid), ‘no-atime’ (no
          actualiza la marca de tiempo del acceso a archivos),
          ‘strict-atime’ (actualiza la marca de tiempo del acceso a
          archivos), ‘lazy-time’ (únicamente actualiza la marca de
          tiempo en la versión en memoria del nodo-i) y ‘no-exec’ (no
          permite de la ejecución de programas). *Note
          (libc)Mount-Unmount-Remount::, para más información sobre
          estas opciones.

     ‘options’ (predeterminadas: ‘#f’)
          Es o bien ‘#f’, o bien una cadena que denota las opciones de
          montaje proporcionadas al controlador del sistema de archivos.
          *Note (libc)Mount-Unmount-Remount:: para obtener detalles, y
          ejecute ‘man 8 mount’ para conocer las opciones de varios
          sistemas de archivos. Tenga en cuenta los procedimientos
          ‘file-system-options->alist’ y ‘alist->file-system-options’ de
          ‘(gnu system file-systems)’ pueden usarse para convertir las
          opciones de sistema de archivos proporcionadas como una lista
          asociativa a su representación en cadena y viceversa.

     ‘mount?’ (predeterminado: ‘#t’)
          Este valor indica si debe montarse el sistema de archivos
          automáticamente al iniciar el sistema. Cuando se establece
          como ‘#f’, el sistema de archivos tiene una entrada en
          ‘/etc/fstab’ (el cual es leído por la orden ‘mount’) pero no
          se montará automáticamente.

     ‘needed-for-boot?’ (predeterminado: ‘#f’)
          Este valor lógico indica si el sistema de archivos es
          necesario para el arranque. Si es verdadero, el sistema de
          archivos se monta al cargar el disco inicial en RAM (initrd).
          Este es siempre el caso, por ejemplo, para el sistema de
          archivos raíz.

     ‘check?’ (predeterminado: ‘#t’)
          Este valor lógico indica si el sistema de archivos se debe
          comprobar en busca de errores antes de montarse.

     ‘create-mount-point?’ (predeterminado: ‘#f’)
          Cuando es verdadero, el punto de montaje es creado si no
          existía previamente.

     ‘mount-may-fail?’ (predeterminado: ‘#f’)
          Cuando tiene valor verdadero indica que el montaje de este
          sistema de archivos puede fallar pero no debe considerarse un
          error. Es útil en casos poco habituales; un ejemplo de esto es
          ‘efivarfs’, un sistema de archivos que únicamente puede
          montarse en sistemas EFI/UEFI.

     ‘dependencies’ (predeterminadas: ‘'()’)
          Una lista de objetos ‘<file-system>’ o ‘<mapped-device>’ que
          representan sistemas de archivos que deben montarse o
          dispositivos traducidos que se deben abrir antes (y desmontar
          o cerrar después) que el declarado.

          Como ejemplo, considere la siguiente jerarquía de montajes:
          ‘/sys/fs/cgroup’ es una dependencia de ‘/sys/fs/cgroup/cpu’ y
          ‘/sys/fs/cgroup/memory’.

          Otro ejemplo es un sistema de archivos que depende de un
          dispositivo traducido, por ejemplo una partición cifrada
          (*note Dispositivos traducidos::).

 -- Procedimiento Scheme: file-system-label STR
     Este procedimiento devuelve un objeto opaco de etiqueta del sistema
     de archivos a partir de STR, una cadena:

          (file-system-label "home")
          ⇒ #<file-system-label "home">

     Las etiquetas del sistema de archivos se usan para hacer referencia
     a los sistemas de archivos por etiqueta en vez de por nombre de
     dispositivo. Puede haber encontrado previamente ejemplos en el
     texto.

   El módulo ‘(gnu system file-systems)’ exporta las siguientes
variables útiles.

 -- Variable Scheme: %base-file-systems
     Estos son los sistemas de archivos esenciales que se necesitan en
     sistemas normales, como ‘%pseudo-terminal-file-system’ y
     ‘%immutable-store’ (véase a continuación). Las declaraciones de
     sistemas operativos deben contener siempre estos al menos.

 -- Variable Scheme: %pseudo-terminal-file-systems
     El sistema de archivos que debe montarse como ‘/dev/pts’. Permite
     la creación de “pseudoterminales” a través de ‘openpty’ y funciones
     similares (*note (libc)Pseudo-Terminals::). Los pseudoterminales
     son usados por emuladores de terminales como ‘xterm’.

 -- Variable Scheme: %shared-memory-file-system
     Este sistema de archivos se monta como ‘/dev/shm’ y se usa para
     permitir el uso de memoria compartida entre procesos (*note
     ‘shm_open’: (libc)Memory-mapped I/O.).

 -- Variable Scheme: %immutable-store
     Este sistema de archivos crea un montaje enlazado (“bind-mount”) de
     ‘/gnu/store’, permitiendo solo el acceso de lectura para todas las
     usuarias incluyendo a ‘root’. Esto previene modificaciones
     accidentales por software que se ejecuta como ‘root’ o por las
     administradoras del sistema.

     El daemon sí es capaz de escribir en el almacén: vuelve a montar
     ‘/gnu/store’ en modo lectura-escritura en su propio “espacio de
     nombres”.

 -- Variable Scheme: %binary-format-file-system
     El sistema de archivos ‘binfmt_misc’, que permite que el manejo de
     tipos de archivos ejecutables arbitrarios se delegue al espacio de
     usuaria. Necesita la carga del módulo del núcleo ‘binfmt.ko’.

 -- Variable Scheme: %fuse-control-file-system
     El sistema de archivos ‘fusectl’, que permite a usuarias sin
     privilegios montar y desmontar sistemas de archivos de espacio de
     usuaria FUSE. Necesita la carga del módulo del núcleo ‘fuse.ko’.

   El módulo ‘(gnu system uuid)’ proporciona herramientas para tratar
con “identificadores únicos” de sistemas de archivos (UUID).

 -- Procedimiento Scheme: uuid STR [TIPO]
     Devuelve un objeto opaco de UUID (identificador único) del TIPO (un
     símbolo) procesando STR (una cadena):

          (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")
          ⇒ #<<uuid> type: dce bv: ...>

          (uuid "1234-ABCD" 'fat)
          ⇒ #<<uuid> type: fat bv: ...>

     TIPO puede ser ‘dce’, ‘iso9660’, ‘fat’, ‘ntfs’, o uno de sus
     sinónimos habitualmente usados para estos tipos.

     Los UUID son otra forma de hacer referencia de forma inequívoca a
     sistemas de archivos en la configuración de sistema operativo.
     Puede haber encontrado previamente ejemplos en el texto.

* Menu:

* Sistema de archivos Btrfs::

   ---------- Footnotes ----------

   (1) Fíjese que, aunque es tentador usa ‘/dev/disk/by-uuid’ y nombres
de dispositivo similares para obtener el mismo resultado, no es lo
recomendado: estos nodo especiales de dispositivos se crean por el
daemon udev y puede no estar disponible cuando el dispositivo sea
montado.

   (2) La forma ‘uuid’ espera un UUID de 16 bytes como se define en la
RFC 4122 (https://tools.ietf.org/html/rfc4122). Este es el formato de
UUID que usan la familia de sistemas de archivos ext2 y otros, pero es
diferente de los “UUID” de los sistemas de archivos FAT, por ejemplo.

   (3) NdT: modo de sólo lectura.

   (4) NdT: montaje enlazado.


File: guix.es.info,  Node: Sistema de archivos Btrfs,  Up: Sistemas de archivos

10.3.1 Sistema de archivos Btrfs
--------------------------------

El sistema de archivos Btrfs tiene características especiales, como los
subvolúmenes, que merecen una explicación más detallada. La siguiente
sección intenta cubrir usos básicos así como usos complejos del sistema
de archivos Btrfs con el sistema Guix.

   Con el uso más simple se puede describir un sistema de archivos Btrfs
puede describirse, por ejemplo, del siguiente modo:

     (file-system
       (mount-point "/home")
       (type "btrfs")
       (device (file-system-label "mi-home")))

   El ejemplo siguiente es más complejo, ya que usa un subvolumen de
Btrfs, llamado ‘rootfs’. El sistema de archivos tiene la etiqueta
‘mi-btrfs’, y se encuentra en un dispositivo cifrado (de aquí la
dependencia de ‘mapped-devices’):

     (file-system
       (device (file-system-label "mi-btrfs"))
       (mount-point "/")
       (type "btrfs")
       (options "subvol=rootfs")
       (dependencies mapped-devices))

   Algunos cargadores de arranque, por ejemplo GRUB, únicamente montan
una partición Btrfs en su nivel superior durante los momentos iniciales
del arranque, y dependen de que su configuración haga referencia a la
ruta correcta del subvolumen dentro de dicho nivel superior. Los
cargadores de arranque que operan de este modo producen habitualmente su
configuración en un sistema en ejecución donde las particiones Btrfs ya
se encuentran montadas y donde la información de subvolúmenes está
disponible. Como un ejemplo, ‘grub-mkconfig’, la herramienta de
generación de configuración que viene con GRUB, lee
‘/proc/self/mountinfo’ para determinar la ruta desde el nivel superior
de un subvolumen.

   El sistema Guix produce una configuración para el cargador de
arranque usando la configuración del sistema operativo como su única
entrada; por lo tanto es necesario extraer la información del subvolumen
en el que se encuentra ‘/gnu/store’ (en caso de estar en alguno) de la
configuración del sistema operativo. Para ilustrar esta situación mejor,
considere un subvolumen que se llama ’rootfs’ el cual contiene el
sistema de archivos raiz. En esta situación, el cargador de arranque
GRUB únicamente vería el nivel superior de la partición de raíz de
Btrfs, por ejemplo:

     /                   (nivel superior)
     ├── rootfs          (directorio del subvolumen)
         ├── gnu         (directorio normal)
             ├── store   (directorio normal)
     [...]

   Por lo tanto, el nombre del subvolumen debe añadirse al inicio de la
ruta al núcleo, los binarios de initrd y otros archivos a los que haga
referencia la configuración de GRUB en ‘/gnu/store’, para que puedan
encontrarse en los momentos iniciales del arranque.

   El siguiente ejemplo muestra una jerarquía anidada de subvolúmenes y
directorios:

     /                   (nivel superior)
     ├── rootfs          (subvolumen)
         ├── gnu         (directorio normal)
             ├── store   (subvolumen)
     [...]

   Este escenario funcionaría sin montar el subvolumen ’store’. Montar
’rootfs’ es suficiente, puesto que el nombre del subvolumen corresponde
con el punto de montaje deseado en la jerarquía del sistema de archivos.
Alternativamente se puede hacer referencia el subvolumen ’store’
proporcionando tanto el valor ‘/rootfs/gnu/store’ como el valor
‘rootfs/gnu/store’ a la opción ‘subvol’.

   Por último, un ejemplo más elaborado de subvolúmenes anidados:

     /                           (nivel superior)
     ├── root-snapshots          (subvolumen)
         ├── root-current        (subvolumen)
             ├── guix-store      (subvolumen)
     [...]

   Aquí, el subvolumen ’guix-store’ no corresponde con el punto de
montaje deseado, por lo que es necesario montarlo. El subvolumen debe
ser especificado completamente proporcionando su nombre de archivo a la
opción ‘subvol’. Para ilustrar este ejemplo, el subvolumen ’guix-store’
puede montarse en ‘/gnu/store’ usando una declaración de sistema de
archivos como la siguiente:

     (file-system
       (device (file-system-label "mi-otro-btrfs"))
       (mount-point "/gnu/store")
       (type "btrfs")
       (options "subvol=root-snapshots/root-current/guix-store,\
     compress-force=zstd,space_cache=v2"))


File: guix.es.info,  Node: Dispositivos traducidos,  Next: Cuentas de usuaria,  Prev: Sistemas de archivos,  Up: Configuración del sistema

10.4 Dispositivos traducidos
============================

The Linux kernel has a notion of “device mapping”: a block device, such
as a hard disk partition, can be “mapped” into another device, usually
in ‘/dev/mapper/’, with additional processing over the data that flows
through it(1). A typical example is encryption device mapping: all
writes to the mapped device are encrypted, and all reads are deciphered,
transparently. Guix extends this notion by considering any device or set
of devices that are “transformed” in some way to create a new device;
for instance, RAID devices are obtained by “assembling” several other
devices, such as hard disks or partitions, into a new one that behaves
as one partition.

   Los dispositivos traducidos se declaran mediante el uso de la forma
‘mapped-device’, definida a continuación; ejemplos más adelante.

 -- Tipo de datos: mapped-device
     Objetos de este tipo representan traducciones de dispositivo que se
     llevarán a cabo cuando el sistema arranque.

     ‘source’
          This is either a string specifying the name of the block
          device to be mapped, such as ‘"/dev/sda3"’, or a list of such
          strings when several devices need to be assembled for creating
          a new one. In case of LVM this is a string specifying name of
          the volume group to be mapped.

     ‘target’
          This string specifies the name of the resulting mapped device.
          For kernel mappers such as encrypted devices of type
          ‘luks-device-mapping’, specifying ‘"my-partition"’ leads to
          the creation of the ‘"/dev/mapper/my-partition"’ device. For
          RAID devices of type ‘raid-device-mapping’, the full device
          name such as ‘"/dev/md0"’ needs to be given. LVM logical
          volumes of type ‘lvm-device-mapping’ need to be specified as
          ‘"VGNAME-LVNAME"’.

     ‘targets’
          This list of strings specifies names of the resulting mapped
          devices in case there are several. The format is identical to
          TARGET.

     ‘type’
          Debe ser un objeto ‘mapped-device-kind’, que especifica cómo
          SOURCE se traduce a TARGET.

 -- Variable Scheme: luks-device-mapping
     Define el cifrado de bloques LUKS mediante el uso de la orden
     ‘cryptsetup’ del paquete del mismo nombre. Depende del módulo
     ‘dm-crypt’ del núcleo Linux.

 -- Variable Scheme: raid-device-mapping
     Define un dispositivo RAID, el cual se ensambla mediante el uso de
     la orden ‘mdadm’ del paquete del mismo nombre. Requiere la carga
     del módulo del núcleo Linux para el nivel RAID apropiado, como
     ‘raid456’ para RAID-4, RAID-5 o RAID-6, o ‘raid10’ para RAID-10.

 -- Scheme Variable: lvm-device-mapping
     This defines one or more logical volumes for the Linux Logical
     Volume Manager (LVM) (https://www.sourceware.org/lvm2/). The volume
     group is activated by the ‘vgchange’ command from the ‘lvm2’
     package.

   El siguiente ejemplo especifica una traducción de ‘/dev/sda3’ a
‘/dev/mapper/home’ mediante el uso de LUKS—la configuración de claves
unificada de Linux (https://gitlab.com/cryptsetup/cryptsetup), un
mecanismo estándar para cifrado de disco. El dispositivo
‘/dev/mapper/home’ puede usarse entonces como el campo ‘device’ de una
declaración ‘file-system’ (*note Sistemas de archivos::).

     (mapped-device
       (source "/dev/sda3")
       (target "home")
       (type luks-device-mapping))

   De manera alternativa, para independizarse de la numeración de
dispositivos, puede obtenerse el UUID LUKS (“identificador único”) del
dispositivo fuente con una orden así:

     cryptsetup luksUUID /dev/sda3

   y usarlo como sigue:

     (mapped-device
       (source (uuid "cb67fc72-0d54-4c88-9d4b-b225f30b0f44"))
       (target "home")
       (type luks-device-mapping))

   También es deseable cifrar el espacio de intercambio, puesto que el
espacio de intercambio puede contener información sensible. Una forma de
conseguirlo es usar un archivo de intercambio en un sistema de archivos
en un dispositivo traducido a través del cifrado LUKS. *Note
Particionado del disco: Preparación para la instalación, para un
ejemplo.

   Un dispositivo RAID formado por las particiones ‘/dev/sda1’ y
‘/dev/sdb1’ puede declararse como se muestra a continuación:

     (mapped-device
       (source (list "/dev/sda1" "/dev/sdb1"))
       (target "/dev/md0")
       (type raid-device-mapping))

   El dispositivo ‘/dev/md0’ puede usarse entonces como el campo
‘device’ de una declaración ‘file-system’ (*note Sistemas de
archivos::). Fíjese que no necesita proporcionar el nivel RAID; se
selecciona durante la creación inicial y formato del dispositivo RAID y
después se determina automáticamente.

   LVM logical volumes “alpha” and “beta” from volume group “vg0” can be
declared as follows:

     (mapped-device
       (source "vg0")
       (targets (list "vg0-alpha" "vg0-beta"))
       (type lvm-device-mapping))

   Devices ‘/dev/mapper/vg0-alpha’ and ‘/dev/mapper/vg0-beta’ can then
be used as the ‘device’ of a ‘file-system’ declaration (*note Sistemas
de archivos::).

   ---------- Footnotes ----------

   (1) Note that the GNU Hurd makes no difference between the concept of
a “mapped device” and that of a file system: both boil down to
_translating_ input/output operations made on a file to operations on
its backing store. Thus, the Hurd implements mapped devices, like file
systems, using the generic “translator” mechanism (*note
(hurd)Translators::).


File: guix.es.info,  Node: Cuentas de usuaria,  Next: Distribución de teclado,  Prev: Dispositivos traducidos,  Up: Configuración del sistema

10.5 Cuentas de usuaria
=======================

Los grupos y cuentas de usuaria se gestionan completamente a través de
la declaración ‘operating-system’. Se especifican con las formas
‘user-account’ y ‘user-group’:

     (user-account
       (name "alicia")
       (group "users")
       (supplementary-groups '("wheel"   ;permite usar sudo, etc.
                               "audio"   ;tarjeta de sonido
                               "video"   ;dispositivos audivisuales como cámaras
                               "cdrom")) ;el veterano CD-ROM
       (comment "hermana de Roberto"))

   Esta es una cuenta que usa un shell diferente y un directorio
personalizado (el predeterminado sería ‘"/home/rober"’):

     (user-account
       (name "rober")
       (group "users")
       (comment "hermano de Alicia")
       (shell (file-append zsh "/bin/zsh"))
       (home-directory "/home/roberto"))

   Durante el arranque o tras la finalización de ‘guix system
reconfigure’, el sistema se asegura de que únicamente las cuentas de
usuaria y grupos especificados en la declaración ‘operating-system’
existen, y con las propiedades especificadas. Por tanto, la creación o
modificación de cuentas o grupos realizadas directamente invocando
órdenes como ‘useradd’ se pierden al reconfigurar o reiniciar el
sistema. Esto asegura que el sistema permanece exactamente como se
declaró.

 -- Tipo de datos: user-account
     Objetos de este tipo representan cuentas de usuaria. Los siguientes
     miembros pueden ser especificados:

     ‘name’
          El nombre de la cuenta de usuaria.

     ‘group’
          Este es el nombre (una cadena) o identificador (un número) del
          grupo de usuarias al que esta cuenta pertenece.

     ‘supplementary-groups’ (predeterminados: ‘'()’)
          Opcionalmente, esto puede definirse como una lista de nombres
          de grupo a los que esta cuenta pertenece.

     ‘uid’ (predeterminado: ‘#f’)
          Este es el ID de usuaria para esta cuenta (un número), o ‘#f’.
          En el último caso, un número es seleccionado automáticamente
          por el sistema cuando la cuenta es creada.

     ‘comment’ (predeterminado: ‘""’)
          Un comentario sobre la cuenta, como el nombre completo de la
          propietaria.

     ‘home-directory’
          Este es el nombre del directorio de usuaria de la cuenta.

     ‘create-home-directory?’ (predeterminado: ‘#t’)
          Indica si el directorio de usuaria de esta cuenta debe ser
          creado si no existe todavía.

     ‘shell’ (predeterminado: Bash)
          Esto es una expresión-G denotando el nombre de archivo de un
          programa que será usado como shell (*note Expresiones-G::).
          Por ejemplo, podría hacer referencia al ejecutable de Bash de
          este modo:

               (file-append bash "/bin/bash")

          ... y al ejecutable de Zsh de este otro:

               (file-append zsh "/bin/zsh")

     ‘system?’ (predeterminado: ‘#f’)
          Este valor lógico indica si la cuenta es una cuenta “del
          sistema”. Las cuentas del sistema se tratan a veces de forma
          especial; por ejemplo, los gestores gráficos de inicio no las
          enumeran.

     ‘password’ (predeterminada: ‘#f’)
          Normalmente debería dejar este campo a ‘#f’, inicializar la
          contraseña de usuaria como ‘root’ con la orden ‘passwd’, y
          entonces dejar a las usuarias cambiarla con ‘passwd’. Las
          contraseñas establecidas con ‘passwd’ son, por supuesto,
          preservadas entre reinicio y reinicio, y entre
          reconfiguraciones.

          Si usted _realmente quiere_ tener una contraseña prefijada
          para una cuenta, entonces este campo debe contener la
          contraseña cifrada, como una cadena. Puede usar el
          procedimiento ‘crypt’ para este fin:

               (user-account
                 (name "carlos")
                 (group "users")

                 ;; Especifica una contraseña inicial mediante un hash SHA-512.
                 (password (crypt "ContraseñaInicial!" "$6$abc")))

               Nota: El hash de esta contraseña inicial estará
               disponible en un archivo en ‘/gnu/store’, legible por
               todas las usuarias, por lo que este método debe usarse
               con precaución.

          *Note (libc)Passphrase Storage::, para más información sobre
          el cifrado de contraseñas, y *note (guile)Encryption::, para
          información sobre el procedimiento de Guile ‘crypt’.

   Las declaraciones de grupos incluso son más simples:

     (user-group (name "estudiantes"))

 -- Tipo de datos: user-group
     Este tipo es para grupos de usuarias. Hay únicamente unos pocos
     campos:

     ‘name’
          El nombre del grupo.

     ‘id’ (predeterminado: ‘#f’)
          El identificador del grupo (un número). Si es ‘#f’, un nuevo
          número es reservado automáticamente cuando se crea el grupo.

     ‘system?’ (predeterminado: ‘#f’)
          Este valor booleano indica si el grupo es un grupo “del
          sistema”. Los grupos del sistema tienen identificadores
          numéricos bajos.

     ‘password’ (predeterminada: ‘#f’)
          ¿Qué? ¿Los grupos de usuarias pueden tener una contraseña?
          Bueno, aparentemente sí. A menos que sea ‘#f’, este campo
          especifica la contraseña del grupo.

   Por conveniencia, una variable contiene una lista con todos los
grupos de usuarias básicos que se puede esperar:

 -- Variable Scheme: %base-groups
     Esta es la lista de grupos de usuarias básicos que las usuarias y/o
     los paquetes esperan que estén presentes en el sistema. Esto
     incluye grupos como “root”, “wheel” y “users”, así como grupos
     usados para controlar el acceso a dispositivos específicos como
     “audio”, “disk” y “cdrom”.

 -- Variable Scheme: %base-user-accounts
     Esta es la lista de cuentas de usuaria básicas que los programas
     pueden esperar encontrar en un sistema GNU/Linux, como la cuenta
     “nobody”.

     Fíjese que la cuenta de “root” no se incluye aquí. Es un caso
     especial y se añade automáticamente esté o no especificada.


File: guix.es.info,  Node: Distribución de teclado,  Next: Localizaciones,  Prev: Cuentas de usuaria,  Up: Configuración del sistema

10.6 Distribución de teclado
============================

Para especificar qué hace cada tecla de su teclado, necesita decirle al
sistema operativo qué “distribución de teclado” desea usar. La
predeterminada, cuando no se especifica ninguna, es la distribución
QWERTY de 105 teclas para PC de teclado inglés estadounidense. No
obstante, las personas germano-parlantes habitualmente prefieren la
distribución QWERTZ alemana, las franco-parlantes desearán la
distribución AZERTY, etcétera; las hackers pueden preferir Dvorak o
bépo, y pueden incluso desear personalizar más aún el efecto de
determinadas teclas. Esta sección explica cómo hacerlo.

   Hay tres componentes que desearán conocer la distribución de su
teclado:

   • El _cargador de arranque_ puede desear conocer cual es la
     distribución de teclado que desea usar (*note ‘keyboard-layout’:
     Configuración del gestor de arranque.). Esto es útil si desea, por
     ejemplo, asegurarse de que puede introducir la contraseña de
     cifrado de su partición raíz usando la distribución correcta.

   • El _núcleo del sistema operativo_, Linux, la necesitará de manera
     que la consola se configure de manera adecuada (*note
     ‘keyboard-layout’: Referencia de operating-system.).

   • El _servidor gráfico_, habitualmente Xorg, también tiene su propia
     idea de distribución de teclado (*note ‘keyboard-layout’: Sistema X
     Window.).

   Guix le permite configurar las tres distribuciones por separado pero,
afortunadamente, también le permite compartir la misma distribución de
teclado para los tres componentes.

   Las distribuciones de teclado se representan mediante registros
creados con el procedimiento ‘keyboard-layout’ de ‘(gnu system
keyboard)’. A imagen de la extensión de teclado de X (XKB), cada
distribución tiene cuatro atributos: un nombre (habitualmente un código
de idioma como “fi” para finés o “jp” para japonés), un nombre opcional
de variante, un nombre opcional de modelo de teclado y una lista, puede
que vacía, de opciones adicionales. En la mayor parte de los casos el
nombre de la distribución es lo único que le interesará.

 -- Procedimiento Scheme: keyboard-layout NOMBRE [VARIANTE] [#:model]
          [#:options '()]
     Devuelve una distribución de teclado para el NOMBRE y la VARIANTE
     que se proporcionan.

     NOMBRE debe ser una cadena como ‘"fr"’; VARIANTE debe ser una
     cadena como ‘"bepo"’ o ‘"nodeadkeys"’. Véase el paquete
     ‘xkeyboard-config’ para las opciones válidas.

   Estos son algunos ejemplos:

     ;; La distribución QWERTZ alemana. Se asume un modelo de
     ;; teclado "pc105" estándar.
     (keyboard-layout "de")

     ;; La variante bépo de la distribución francesa.
     (keyboard-layout "fr" "bepo")

     ;; La distribución de teclado catalana.
     (keyboard-layout "es" "cat")

     ;; Distribución de teclado árabe con "Alt-Shift" para cambiar
     ;; a la distribución de teclado de EEUU.
     (keyboard-layout "ar,us" #:options '("grp:alt_shift_toggle"))

     ;; La distribución de teclado de latinoamérica. Además,
     ;; la tecla "Bloq Mayús" se usa como una tecla "Ctrl"
     ;; adicional, y la tecla "Menú" se usa como una tecla
     ;; "Componer/Compose" para introducir letras acentuadas.
     (keyboard-layout "latam"
                      #:options '("ctrl:nocaps" "compose:menu"))

     ;; La distribución rusa para un teclado ThinkPad.
     (keyboard-layout "ru" #:model "thinkpad")

     ;; La distribución estadounidense internacional, la cual es
     ;; la distribución estadounidense junto a teclas muertas para
     ;; introducir caracteres acentuados. Esta es para un teclado
     ;; Apple MackBook.
     (keyboard-layout "us" "intl" #:model "macbook78")

   Véase el directorio ‘share/X11/xkb’ del paquete ‘xkeyboard-config’
para una lista completa de implementaciones de distribuciones, variantes
y modelos.

   Digamos que desea que su sistema use la distribución de teclado turca
a lo largo de todo su sistema—cargador de arranque, consola y Xorg. Así
es como sería su configuración del sistema:

     ;; Usando la distribución turca para el cargador de
     ;; arranque, la consola y Xorg.

     (operating-system
       ;; ...
       (keyboard-layout (keyboard-layout "tr"))  ;para la consola
       (bootloader (bootloader-configuration
                     (bootloader grub-efi-bootloader)
                     (target "/boot/efi")
                     (keyboard-layout keyboard-layout))) ;para GRUB
       (services (cons (set-xorg-configuration
                         (xorg-configuration             ;para Xorg
                           (keyboard-layout keyboard-layout)))
                       %desktop-services)))

   En el ejemplo previo, para GRUB y para Xorg, simplemente hemos hecho
referencia al campo ‘keyboard-layout’ definido previamente, pero también
podíamos haber hecho referencia a una distribución diferente. El
procedimiento ‘set-xorg-configuration’ comunica la configuración de Xorg
deseada al gestor gráfico de ingreso en el sistema, GDM por omisión.

   Hemos tratado cómo especificar la distribución _predeterminada_ del
teclado de su sistema cuando arranca, pero también la puede modificar en
tiempo de ejecución:

   • Si usa GNOME, su panel de configuración tiene una entrada de
     “Región e Idioma” donde puede seleccionar una o más distribuciones
     de teclado.

   • En Xorg, la orden ‘setxkbmap’ (del paquete con el mismo nombre) le
     permite cambiar la distribución en uso actualmente. Por ejemplo,
     así es como cambiaría a la distribución Dvorak estadounidense:

          setxkbmap us dvorak

   • La orden ‘loadkeys’ cambia la distribución de teclado en efecto en
     la consola Linux. No obstante, tenga en cuenta que ‘loadkeys’ _no_
     usa la categorización de distribuciones de XKB descrita
     previamente. La orden a continuación carga la distribución francesa
     bépo:

          loadkeys fr-bepo


File: guix.es.info,  Node: Localizaciones,  Next: Servicios,  Prev: Distribución de teclado,  Up: Configuración del sistema

10.7 Localizaciones
===================

Una “localización” define convenciones culturales para una lengua y
región del mundo particular (*note (libc)Localizaciones::). Cada
localización tiene un nombre que típicamente tiene la forma de
‘LENGUA_TERRITORIO.CODIFICACIÓN’—por ejemplo, ‘fr_LU.utf8’ designa la
localización para la lengua francesa, con las convenciones culturales de
Luxemburgo, usando la codificación UTF-8.

   Normalmente deseará especificar la localización predeterminada para
la máquina usando el campo ‘locale’ de la declaración ‘operating-system’
(*note ‘locale’: Referencia de operating-system.).

   La localización seleccionada es automáticamente añadida a las
“definiciones de localización” conocidas en el sistema si es necesario,
con su codificación inferida de su nombre—por ejemplo, se asume que
‘bo_CN.utf8’ usa la codificación ‘UTF-8’. Definiciones de localización
adicionales pueden ser especificadas en el campo ‘locale-definitions’ de
‘operating-system’—esto es util, por ejemplo, si la codificación no
puede ser inferida del nombre de la localización. El conjunto
predeterminado de definiciones de localización incluye algunas
localizaciones ampliamente usadas, pero no todas las disponibles, para
ahorrar espacio.

   Por ejemplo, para añadir la localización del frisio del norte para
Alemania, el valor de dicho campo puede ser:

     (cons (locale-definition
             (name "fy_DE.utf8") (source "fy_DE"))
           %default-locale-definitions)

   De mismo modo, para ahorrar espacio, se puede desear que
‘locale-definitions’ contenga únicamente las localizaciones que son
realmente usadas, como en:

     (list (locale-definition
             (name "ja_JP.eucjp") (source "ja_JP")
             (charset "EUC-JP")))

   Las definiciones de localización compiladas están disponibles en
‘/run/current-system/locale/X.Y’, donde ‘X.Y’ es la versión de libc, que
es la ruta donde la GNU libc contenida en Guix buscará los datos de
localización. Esto puede ser sobreescrito usando la variable de entorno
‘LOCPATH’ (*note ‘LOCPATH’ and locale packages: locales-and-locpath.).

   La forma ‘locale-definition’ es proporcionada por el módulo ‘(gnu
system locale)’. Los detalles se proporcionan a continuación.

 -- Tipo de datos: locale-definition
     Este es el tipo de datos de una definición de localización.

     ‘name’
          El nombre de la localización. *Note (libc)Locale Names::, para
          más información sobre nombres de localizaciones.

     ‘source’
          El nombre de la fuente para dicha localización. Habitualmente
          es la parte ‘IDIOMA_TERRITORIO’ del nombre de localización.

     ‘charset’ (predeterminado: ‘"UTF-8"’)
          La “codificación de caracteres” o “conjunto de caracteres”
          para dicha localización, como lo define IANA
          (https://www.iana.org/assignments/character-sets).

 -- Variable Scheme: %default-locale-definitions
     Una lista de localizaciones UTF-8 usadas de forma común, usada como
     valor predeterminado del campo ‘locale-definitions’ en las
     declaraciones ‘operating-system’.

     Estas definiciones de localizaciones usan la “codificación
     normalizada” para el fragmento tras el punto en el nombre (*note
     normalized codeset: (libc)Using gettextized software.). Por lo que
     por ejemplo es válido ‘uk_UA.utf8’ pero _no_, digamos,
     ‘uk_UA.UTF-8’.

10.7.1 Consideraciones sobre la compatibilidad de datos de localización
-----------------------------------------------------------------------

Las declaraciones ‘operating-system’ proporcionan un campo
‘locale-libcs’ para especificar los paquetes GNU libc que se usarán para
compilar las declaraciones de localizaciones (*note Referencia de
operating-system::). “¿Por qué debo preocuparme?”, puede preguntarse.
Bueno, sucede que el formato binario de los datos de localización es
ocasionalmente incompatible de una versión de libc a otra.

   Por ejemplo, un programa enlazado con la versión 2.21 de libc no
puede leer datos de localización producidos con libc 2.22; peor aún, ese
programa _aborta_ en vez de simplemente ignorar los datos de
localización incompatibles(1). De manera similar, un programa enlazado
con libc 2.22 puede leer la mayor parte, pero no todo, de los datos de
localización de libc 2.21 (específicamente, los datos ‘LC_COLLATE’ son
incompatibles); por tanto las llamadas a ‘setlocale’ pueden fallar, pero
los programas no abortarán.

   El “problema” con Guix es que las usuarias tienen mucha libertad:
pueden elegir cuando e incluso si actualizar el software en sus
perfiles, y pueden estar usando una versión de libc diferente de la que
la administradora del sistema usó para construir los datos de
localización comunes a todo el sistema.

   Por suerte, las usuarias sin privilegios también pueden instalar sus
propios datos de localización y definir ‘GUIX_LOCPATH’ de manera
adecuada (*note ‘GUIX_LOCPATH’ y paquetes de localizaciones:
locales-and-locpath.).

   No obstante, es mejor si los datos de localización globales del
sistema en ‘/run/current-system/locale’ se construyen para todas las
versiones de libc realmente en uso en el sistema, de manera que todos
los programas puedan acceder a ellos—esto es especialmente crucial en un
sistema multiusuaria. Para hacerlo, la administradora puede especificar
varios paquetes libc en el campo ‘locale-libcs’ de ‘operating-system’:

     (use-package-modules base)

     (operating-system
       ;; ...
       (locale-libcs (list glibc-2.21 (canonical-package glibc))))

   Este ejemplo llevaría a un sistema que contiene definiciones de
localización tanto para libc 2.21 como para la versión actual de libc en
‘/run/current-system/locale’.

   ---------- Footnotes ----------

   (1) Las versiones 2.23 y posteriores de GNU libc simplemente
ignorarán los datos de localización incompatibles, lo cual ya es un
avance.


File: guix.es.info,  Node: Servicios,  Next: Programas con setuid,  Prev: Localizaciones,  Up: Configuración del sistema

10.8 Servicios
==============

Una parte importante de la preparación de una declaración
‘operating-system’ es listar los “servicios del sistema” y su
configuración (*note Uso de la configuración del sistema::). Los
servicios del sistema típicamente son daemon lanzados cuando el sistema
arrancha, u otras acciones necesarias en ese momento—por ejemplo,
configurar el acceso de red.

   Guix tiene una definición amplia de “servicio” (*note Composición de
servicios::), pero muchos servicios se gestionan por GNU Shepherd (*note
Servicios de Shepherd::). En un sistema en ejecución, la orden ‘herd’ le
permite enumerar los servicios disponibles, mostrar su estado,
arrancarlos y pararlos, o realizar otras acciones específicas (*note
(shepherd)Jump Start::). Por ejemplo:

     # herd status

   La orden previa, ejecutada como ‘root’, enumera los servicios
actualmente definidos. La orden ‘herd doc’ muestra una sinopsis del
servicio proporcionado y sus acciones asociadas:

     # herd doc nscd
     Run libc's name service cache daemon (nscd).

     # herd doc nscd action invalidate
     invalidate: Invalidate the given cache--e.g., 'hosts' for host name lookups.

   Las ordenes internas ‘start’, ‘stop’ y ‘restart’ tienen el efecto de
arrancar, parar y reiniciar el servicio, respectivamente. Por ejemplo,
las siguientes órdenes paran el servicio nscd y reinician el servidor
gráfico Xorg:

     # herd stop nscd
     Service nscd has been stopped.
     # herd restart xorg-server
     Service xorg-server has been stopped.
     Service xorg-server has been started.

   Las siguientes secciones documentan los servicios disponibles,
comenzando con los servicios básicos, que pueden ser usados en una
declaración ‘operating-system’.

* Menu:

* Servicios base::           Servicios esenciales del sistema.
* Ejecución de tareas programadas::  El servicio mcron.
* Rotación del registro de mensajes::  El servicio rottlog.
* Servicios de red::         Configuración de red, daemon SSH, etc.
* Actualizaciones no-atendidas::  Actualizaciones del sistema automatizadas.
* Sistema X Window::         Interfaz gráfica.
* Servicios de impresión::  Uso de impresoras locales y remotas.
* Servicios de escritorio::  D-Bus y servicios de escritorio.
* Servicios de sonido::      Servicios de ALSA y Pulseaudio.
* Servicios de bases de datos::  Bases de datos SQL, almacenes de
                                   clave-valor, etc.
* Servicios de correo::      IMAP, POP3, SMTP y todo eso.
* Servicios de mensajería::  Servicios de mensajería.
* Servicios de telefonía::  Servicios de telefonía.
* File-Sharing Services::    File-sharing services.
* Servicios de monitorización::  Servicios de monitorización.
* Servicios Kerberos::       Servicios Kerberos.
* Servicios LDAP::           Servicios LDAP.
* Servicios Web::            Servidores Web.
* Servicios de certificados::  Certificados TLS via Let’s Encrypt.
* Servicios DNS::            Daemon de DNS.
* Servicios VPN::            Daemon de VPN.
* Sistema de archivos en red::  Servicios relacionados con NFS.
* Integración continua::    Cuirass and Laminar services.
* Servicios de gestión de energía::  Extender la vida de la batería.
* Servicios de audio::       El MPD.
* Servicios de virtualización::  Servicios de virtualización.
* Servicios de control de versiones::  Proporcionar acceso remoto a
                                         repositorios Git.
* Servicios de juegos::      Servidores de juegos.
* Servicio PAM Mount::       Servicio de montado de volúmenes en el ingreso
                               al sistema.
* Servicios de Guix::        Servicios relacionados específicamente con
                               Guix.
* Servicios de Linux::       Servicios asociados al núcleo Linux.
* Servicios de Hurd::        Servicios específicos para un sistema Hurd.
* Servicios misceláneos::   Otros servicios.


File: guix.es.info,  Node: Servicios base,  Next: Ejecución de tareas programadas,  Up: Servicios

10.8.1 Servicios base
---------------------

El módulo ‘(gnu services base)’ proporciona definiciones para los
servicios básicos que se esperan en el sistema. Los servicios exportados
por este módulo se enumeran a continuación.

 -- Variable Scheme: %base-services
     Esta variable contiene una lista de servicios básicos (*note Tipos
     de servicios y servicios::, para más información sobre los objetos
     servicio) que se pueden esperar en el sistema: un servicio de
     ingreso al sistema (mingetty) en cada tty, syslogd, el daemon de la
     caché del servicio de nombres (nscd), el gestor de dispositivos
     udev, y más.

     Este es el valor predeterminado del campo ‘services’ de las
     declaraciones ‘operating-system’. De manera habitual, cuando se
     personaliza el sistema, es deseable agregar servicios a
     ‘%base-services’, de esta forma:

          (append (list (service avahi-service-type)
                        (service openssh-service-type))
                  %base-services)

 -- Variable Scheme: special-files-service-type
     El servicio que establece “archivos especiales” como ‘/bin/sh’; una
     instancia suya es parte de ‘%base-services’.

     El valor asociado con servicios ‘special-file-service-type’ debe
     ser una lista de tuplas donde el primer elemento es el “archivo
     especial” y el segundo elemento es su destino. El valor
     predeterminado es:

          `(("/bin/sh" ,(file-append bash "/bin/sh")))

     Si quiere añadir, digamos, ‘/usr/bin/env’ a su sistema, puede
     cambiar su valor por:

          `(("/bin/sh" ,(file-append bash "/bin/sh"))
            ("/usr/bin/env" ,(file-append coreutils "/bin/env")))

     Ya que es parte de ‘%base-services’, puede usar ‘modify-services’
     para personalizar el conjunto de archivos especiales (*note
     ‘modify-services’: Referencia de servicios.). Pero una forma simple
     de añadir un archivo especial es usar el procedimiento
     ‘extra-special-file’ (véase a continuación).

 -- Procedimiento Scheme: extra-special-file ARCHIVO DESTINO
     Usa DESTINO como el “archivo especial” ARCHIVO.

     Por ejemplo, la adición de las siguientes líneas al campo
     ‘services’ de su declaración de sistema operativo genera
     ‘/usr/bin/env’ como un enlace simbólico:

          (extra-special-file "/usr/bin/env"
                              (file-append coreutils "/bin/env"))

 -- Procedimiento Scheme: host-name-service NOMBRE
     Devuelve un servicio que establece el nombre de máquina a NOMBRE.

 -- Variable Scheme: console-font-service-type
     Instala las tipografías proporcionadas en las consolas virtuales
     (tty) especificados (las tipografías se asocian a cada consola
     virtual con el núcleo Linux). El valor de este servicio es una
     lista de pares tty/tipografía. La tipografía puede ser el nombre de
     alguna de las proporcionadas por el paquete ‘kbd’ o cualquier
     parámetro válido para la orden ‘setfont’, como en este ejemplo:

          `(("tty1" . "LatGrkCyr-8x16")
            ("tty2" . ,(file-append
                          font-tamzen
                          "/share/kbd/consolefonts/TamzenForPowerline10x20.psf"))
            ("tty3" . ,(file-append
                          font-terminus
                          "/share/consolefonts/ter-132n"))) ; para HDPI

 -- Procedimiento Scheme: login-service CONFIG
     Devuelve un servicio para ejecutar el ingreso al sistema de acuerdo
     con CONFIG, un objeto ‘<login-configuration>’, que especifica el
     mensaje del día, entre otras cosas.

 -- Tipo de datos: login-configuration
     Este es el tipo de datos que representa la configuración del
     ingreso al sistema.

     ‘motd’
          Un objeto tipo-archivo que contiene el “mensaje del día”.

     ‘allow-empty-passwords?’ (predeterminado: ‘#t’)
          Permite contraseñas vacías por defecto para que las primeras
          usuarias puedan ingresar en el sistema cuando la cuenta de
          “root” está recién creada.

 -- Procedimiento Scheme: mingetty-service CONFIG
     Devuelve un servicio para ejecutar mingetty de acuerdo con CONFIG,
     un objeto ‘<mingetty-configuration>’, que especifica el tty a
     ejecutar entre otras cosas.

 -- Tipo de datos: mingetty-configuration
     Este es el tipo de datos que representa la configuración de
     Mingetty, el cual proporciona la implementación predeterminada de
     ingreso al sistema en las consolas virtuales.

     ‘tty’
          El nombre de la consola en la que se ejecuta este Mingetty—por
          ejemplo, ‘"tty1"’.

     ‘auto-login’ (predeterminado: ‘#f’)
          Cuando sea verdadero, este campo debe ser una cadena que
          denote el nombre de usuaria bajo el cual el sistema ingresa
          automáticamente. Cuando es ‘#f’, se deben proporcionar un
          nombre de usuaria y una contraseña para ingresar en el
          sistema.

     ‘login-program’ (predeterminado: ‘#f’)
          Debe ser ‘#f’, en cuyo caso se usa el programa predeterminado
          de ingreso al sistema (‘login’ de las herramientas Shadow), o
          una expresión-G que determine el nombre del programa de
          ingreso al sistema.

     ‘login-pause?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’ en conjunción con AUTO-LOGIN, la usuaria deberá
          presionar una tecla para lanzar el shell de ingreso al
          sistema.

     ‘clear-on-logout?’ (default: ‘#t’)
          When set to ‘#t’, the screen will be cleared after logout.

     ‘mingetty’ (predeterminado: MINGETTY)
          El paquete Mingetty usado.

 -- Procedure Scheme: agetty-service CONFIG
     Devuelve un servicio para ejecutar agetty de acuerdo con CONFIG, un
     objeto ‘<agetty-configuration>’, que especifica el tty a ejecutar
     entre otras cosas.

 -- Tipo de datos: agetty-configuration
     Este es el tipo de datos que representa la configuración de agetty,
     que implementa el ingreso al sistema en las consolas virtuales y
     serie. Véase la página de manual ‘agetty(8)’ para más información.

     ‘tty’
          El nombre de la consola en la que se ejecuta este agetty, como
          una cadena—por ejemplo, ‘"ttyS0"’. Este parámetro es opcional,
          su valor predeterminado es un puerto serie razonable usado por
          el núcleo Linux.

          Para ello, si hay un valor para una opción ‘agetty.tty’ en la
          línea de órdenes del núcleo, agetty extraerá el nombre del
          dispositivo del puerto serie de allí y usará dicho valor.

          Si no y hay un valor para la opción ‘console’ con un tty en la
          línea de órdenes de Linux, agetty extraerá el nombre del
          dispositivo del puerto serie de allí y usará dicho valor.

          En ambos casos, agetty dejará el resto de configuración de
          dispositivos serie (tasa de transmisión, etc.) sin
          modificar—con la esperanza de que Linux haya proporcionado ya
          los valores correctos.

     ‘baud-rate’ (predeterminado: ‘#f’)
          Una cadena que contenga una lista separada por comas de una o
          más tasas de transmisión, en orden descendiente.

     ‘term’ (predeterminado: ‘#f’)
          Una cadena que contiene el valor usado para la variable de
          entorno ‘TERM’.

     ‘eight-bits?’ (predeterminado: ‘#f’)
          En caso de ser ‘#t’, se asume que el tty permite el paso de 8
          bits, y la detección de paridad está desactivada.

     ‘auto-login’ (predeterminado: ‘#f’)
          Cuando se proporciona un nombre de ingreso al sistema, como
          una cadena, la usuaria especificada ingresará automáticamente
          sin solicitar su nombre de ingreso ni su contraseña.

     ‘no-reset?’ (predeterminado: ‘#f’)
          En caso de ser ‘#t’, no reinicia los modos de control del
          terminal (cflags).

     ‘host’ (predeterminado: ‘#f’)
          Acepta una cadena que contenga el
          “nombre_de_máquina_de_ingreso”, que será escrito en el archivo
          ‘/var/run/utmpx’.

     ‘remote?’ (predeterminado: ‘#f’)
          Cuando se fija a ‘#t’ en conjunción con HOST, se añadirá una
          opción ‘-r’ "fakehost" a la línea de órdenes del programa de
          ingreso al sistema especificado en LOGIN-PROGRAM.

     ‘flow-control?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’, activa el control de flujo hardware (RTS/CTS).

     ‘no-issue?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’, el contenido del archivo ‘/etc/issue’ no se
          mostrará antes de presentar el mensaje de ingreso al sistema.

     ‘init-string’ (predeterminada: ‘#f’)
          Esto acepta una cadena que se enviará al tty o módem antes de
          mandar nada más. Puede usarse para inicializar un modem.

     ‘no-clear?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’, agetty no limpiará la pantalla antes de
          mostrar el mensaje de ingreso al sistema.

     ‘login-program’ (predeterminado: (file-append shadow "/bin/login"))
          Esto debe ser o bien una expresión-g que denote el nombre del
          programa de ingreso al sistema, o no debe proporcionarse, en
          cuyo caso el valor predeterminado es ‘login’ del conjunto de
          herramientas Shadow.

     ‘local-line’ (predeterminado: ‘#f’)
          Control the CLOCAL line flag. This accepts one of three
          symbols as arguments, ‘'auto’, ‘'always’, or ‘'never’. If
          ‘#f’, the default value chosen by agetty is ‘'auto’.

     ‘extract-baud?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’, instruye a agetty para extraer la tasa de
          transmisión de los mensajes de estado producidos por ciertos
          tipos de módem.

     ‘skip-login?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’, no solicita el nombre de la usuaria para el
          ingreso al sistema. Puede usarse con el campo LOGIN-PROGRAM
          para usar sistemas de ingreso no estándar.

     ‘no-newline?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’, no imprime una nueva línea antes de imprimir
          el archivo ‘/etc/issue’.

     ‘login-options’ (predeterminadas: ‘#f’)
          Esta opción acepta una cadena que contenga opciones para
          proporcionar al programa de ingreso al sistema. Cuando se use
          con LOGIN-PROGRAM, sea consciente de que una usuaria con malas
          intenciones podría intentar introducir un nombre que
          contuviese opciones embebidas que serían procesadas por el
          programa de ingreso.

     ‘login-pause’ (predeterminada: ‘#f’)
          Cuando es ‘#t’, espera la pulsación de cualquier tecla antes
          de mostrar el mensaje de ingreso al sistema. Esto puede usarse
          en conjunción con AUTO-LOGIN para ahorrar memoria lanzando
          cada shell cuando sea necesario.

     ‘chroot’ (predeterminado: ‘#f’)
          Cambia la raíz al directorio especificado. Esta opción acepta
          una ruta de directorio como una cadena.

     ‘hangup?’ (predeterminado: ‘#f’)
          Usa la llamada del sistema Linux ‘vhangup’ para colgar de
          forma virtual el terminal especificado.

     ‘keep-baud?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’, prueba a mantener la tasa de transmisión
          existente. Las tasas de transmisión de BAUD-RATE se usan
          cuando agetty recibe un carácter <BREAK>.

     ‘timeout’ (predeterminado: ‘#f’)
          Cuando sea un valor entero, termina si no se pudo leer ningún
          nombre de usuaria en TIMEOUT segundos.

     ‘detect-case?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’, activa la detección de terminales únicamente
          con mayúsculas. ESta configuración detectará un nombre de
          ingreso que contenga únicamente letras mayúsculas como un
          indicativo de un terminal con letras únicamente mayúsculas y
          activará las conversiones de mayúscula a minúscula. Tenga en
          cuenta que esto no permitirá caracteres Unicode.

     ‘wait-cr?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’, espera hasta que la usuaria o el modem envíen
          un carácter de retorno de carro o de salto de línea antes de
          mostrar ‘/etc/issue’ o el mensaje de ingreso. Se usa de forma
          típica junto a la opción INIT-STRING.

     ‘no-hints?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’, no imprime avisos sobre el bloqueo numérico,
          las mayúsculas o el bloqueo del desplazamiento.

     ‘no-hostname?’ (predeterminado: ‘#f’)
          El nombre de la máquina se imprime de forma predeterminada.
          Cuando esta opción es ‘#t’, no se mostrará ningún nombre de
          máquina.

     ‘long-hostname?’ (predeterminado: ‘#f’)
          El nombre de máquina se imprime de forma predeterminada
          únicamente hasta el primer punto. Cuando esta opción es ‘#t’,
          se muestra el nombre completamente cualificado de la máquina
          mostrado por ‘gethostname’ o ‘getaddrinfo’.

     ‘erase-characters’ (predeterminado: ‘#f’)
          Esta opción acepta una cadena de caracteres adicionales que
          deben interpretarse como borrado del carácter anterior cuando
          la usuaria introduce su nombre de ingreso.

     ‘kill-characters’ (predeterminado: ‘#f’)
          Esta opción acepta una cadena de que debe ser interpretada
          como “ignora todos los caracteres anteriores” (también llamado
          carácter “kill”) cuando la usuaria introduce su nombre de
          ingreso.

     ‘chdir’ (predeterminado: ‘#f’)
          Esta opción acepta, como una cadena, una ruta de directorio
          que a la que se cambiará antes del ingreso al sistema.

     ‘delay’ (predeterminado: ‘#f’)
          Esta opción acepta, como un entero, el número de segundos a
          esperar antes de abrir el tty y mostrar el mensaje de ingreso
          al sistema.

     ‘nice’ (predeterminado: ‘#f’)
          Esta opción acepta, como un entero, el valor “nice” con el que
          se ejecutará el programa ‘login’.

     ‘extra-options’ (predeterminadas: ‘'()’)
          Esta opción proporciona una “trampilla de escape” para que la
          usuaria proporcione parámetros de línea de órdenes adicionales
          a ‘agetty’ como una lista de cadenas.

 -- Procedimiento Scheme: kmscon-service-type CONFIG
     Devuelve un servicio que ejecuta kmscon
     (https://www.freedesktop.org/wiki/Software/kmscon) de acuerdo a
     CONFIG, un objeto ‘<kmscon-configuration>’, que especifica el tty
     sobre el que se ejecutará, entre otras cosas.

 -- Tipo de datos: kmscon-configuration
     Este es el tipo de datos que representa la configuración de Kmscon,
     que implementa el ingreso al sistema en consolas virtuales.

     ‘virtual-terminal’
          El nombre de la consola en la que se ejecuta este Kmscon—por
          ejemplo, ‘"tty1"’.

     ‘login-program’ (predeterminado: ‘#~(string-append #$shadow "/bin/login")’)
          A gexp denoting the name of the log-in program. The default
          log-in program is ‘login’ from the Shadow tool suite.

     ‘login-arguments’ (predeterminados: ‘'("-p")’)
          Una lista de parámetros para proporcionar a ‘login’.

     ‘auto-login’ (predeterminado: ‘#f’)
          Cuando se proporciona un nombre de ingreso al sistema, como
          una cadena, la usuaria especificada ingresará automáticamente
          sin solicitar su nombre de ingreso ni su contraseña.

     ‘hardware-acceleration?’ (predeterminado: #f)
          Determina si se usará aceleración hardware.

     ‘font-engine’ (default: ‘"pango"’)
          Font engine used in Kmscon.

     ‘font-size’ (default: ‘12’)
          Font size used in Kmscon.

     ‘kmscon’ (predeterminado: KMSCON)
          El paquete Kmscon usado.

 -- Procedimiento Scheme: nscd-service [CONFIGURACIÓN] [#:glibc glibc]
          [#:name-services '()]
     Devuelve un servicio que ejecuta el daemon de la caché del servicio
     de nombres (nscd) con la CONFIGURACIÓN proporcionada—un objeto
     ‘<nscd-configuration>’. *Note Selector de servicios de nombres::,
     para un ejemplo.

     Por conveniencia, el servicio ncsd de Shepherd proporciona las
     siguientes acciones:

     ‘invalidate’
          Esto invalida la caché dada. Por ejemplo, ejecutar:

               herd invalidate nscd hosts

          invalida la caché de búsqueda de nombres de máquinas de nscd.

     ‘statistics’
          Ejecutar ‘herd statistics nscd’ muestra información del uso
          nscd y la caché.

 -- Variable Scheme: %nscd-default-configuration
     El valor del ‘<ncsd-configuration>’ predeterminado (véase a
     continuación) usado por ‘nscd-service’. Usa los espacios de caché
     definidos por ‘%nscd-default-caches’; véase a continuación.

 -- Tipo de datos: nscd-configuration
     Este tipo de datos representa la configuración del daemon de caché
     del servicio de nombres (nscd).

     ‘name-services’ (predeterminados: ‘'()’)
          Lista de paquetes que indican los “servicios de nombres” que
          serán visibles al nscd—por ejemplo, ‘(list NSS-MDNS)’.

     ‘glibc’ (predeterminada: GLIBC)
          Paquete que denota la biblioteca C de GNU que proporciona la
          orden ‘nscd’.

     ‘log-file’ (predeterminado: ‘"/var/log/nscd.log"’)
          Nombre del archivo de registro de nscd. Aquí es donde se
          almacena la salida de depuración cuando ‘debug-level’ es
          estrictamente positivo.

     ‘debug-level’ (predeterminado: ‘0’)
          Entero que indica el nivel de depuración. Números mayores
          significan que se registra más salida de depuración.

     ‘caches’ (predeterminado: ‘%nscd-default-caches’)
          Lista de objetos ‘<nscd-cache>’ que indican cosas a mantener
          en caché; véase a continuación.

 -- Tipo de datos: nscd-cache
     Tipo de datos que representa una base de datos de caché de nscd y
     sus parámetros.

     ‘base de datos’
          Es un símbolo que representa el nombre de la base de datos de
          la que se actúa como caché. Se aceptan los valores ‘passwd’,
          ‘group’, ‘hosts’ y ‘services’, que designan las bases de datos
          NSS correspondientes (*note (libc)NSS Basics::).

     ‘positive-time-to-live’
     ‘negative-time-to-live’ (predeterminado: ‘20’)
          Un número que representa el número de segundos durante los que
          una búsqueda positiva o negativa permanece en la caché.

     ‘check-files?’ (predeterminado: ‘#t’)
          Si se comprobará en busca de actualizaciones los archivos que
          correspondan con DATABASE.

          Por ejemplo, cuando DATABASE es ‘hosts’, la activación de esta
          opción instruye a nscd para comprobar actualizaciones en
          ‘/etc/hosts’ y tenerlas en cuenta.

     ‘persistent?’ (predeterminada: ‘#t’)
          Determina si la caché debe almacenarse de manera persistente
          en disco.

     ‘shared?’ (predeterminado: ‘#t’)
          Determina si la caché debe compartirse entre las usuarias.

     ‘max-database-size’ (predeterminado: 32 MiB)
          Tamaño máximo en bytes de la caché de la base de datos.

 -- Variable Scheme: %nscd-default-caches
     Lista de objetos ‘<nscd-cache>’ usados por omisión por
     ‘nscd-configuration’ (véase en la sección previa)

     Activa el almacenamiento en caché persistente y agresivo de
     búsquedas de servicios y nombres de máquina. La última proporciona
     un mejor rendimiento en la búsqueda de nombres de máquina,
     resilencia en caso de nombres de servidor no confiables y también
     mejor privacidad—a menudo el resultado de las búsquedas de nombres
     de máquina está en la caché local, por lo que incluso ni es
     necesario consultar servidores de nombres externos.

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

     ‘syslogd’ (predeterminado: ‘#~(string-append #$inetutils "/libexec/syslogd")’)
          El daemon syslog usado.

     ‘config-file’ (predeterminado: ‘%default-syslog.conf’)
          El archivo de configuración de syslog usado.

 -- Procedimiento Scheme: syslog-service CONFIG
     Devuelve un servicio que ejecuta el daemon de syslog de acuerdo a
     CONFIG.

     *Note (inetutils)syslogd invocation::, para más información sobre
     la sintaxis del archivo de configuración.

 -- Variable Scheme: guix-service-type
     El tipo de servicio que ejecuta el daemon de construcción,
     ‘guix-daemon’ (*note Invocación de guix-daemon::). Su valor debe
     ser un registro ‘guix-configuration’ como se describe a
     continuación.

 -- Tipo de datos: guix-configuration
     Este tipo de datos representa la configuración del daemon de
     construcción de Guix. *Note Invocación de guix-daemon::, para más
     información.

     ‘guix’ (predeterminado: GUIX)
          El paquete Guix usado.

     ‘build-group’ (predeterminado: ‘"guixbuild"’)
          El nombre del grupo de las cuentas de usuarias de
          construcción.

     ‘build-accounts’ (predeterminadas: ‘10’)
          Número de cuentas de usuarias de construcción a crear.

     ‘authorize-key?’ (predeterminado: ‘#t’)
          Determina si se autoriza las claves de sustituciones listadas
          en ‘authorized-keys’—predeterminada la de ‘ci.guix.gnu.org’
          (*note Sustituciones::).

          Cuando ‘authorize-key?’ es verdadero, ‘/etc/guix/acl’ no se
          puede cambiar a través de ‘guix archive --authorize’. En vez
          de eso debe ajustar ‘guix-configuration’ como desee y
          reconfigurar el sistema. Esto asegura que la configuración de
          su sistema operativo es auto-contenida.

               Nota: Cuando arranque o reconfigure a un sistema donde
               ‘authorize-key?’ sea verdadero, se crea una copia de
               seguridad del archivo ‘/etc/guix/acl’ existente como
               ‘/etc/guix/acl.bak’ si se determina que el archivo se ha
               modificado de manera manual. Esto facilita la migración
               desde versiones anteriores, en las que se permitían las
               modificaciones directas del archivo ‘/etc/guix/acl’.

     ‘authorized-keys’ (predeterminadas: ‘%default-authorized-guix-keys’)
          La lista de archivos de claves autorizadas para importaciones
          de archivos, como una lista de expresiones-G que evalúan a
          cadenas (*note Invocación de guix archive::). Por defecto,
          contiene las de ‘ci.guix.gnu.org’ (*note Sustituciones::).
          Véase ‘substitute-urls’ a continuación para obtener un ejemplo
          de cómo cambiar este valor.

     ‘use-substitutes?’ (predeterminado: ‘#t’)
          Determina si se usarán sustituciones.

     ‘substitute-urls’ (predeterminado: ‘%default-substitute-urls’)
          La lista de URLs donde se buscarán sustituciones por defecto.

          Supongamos que desea obtener sustituciones desde
          ‘guix.example.org’ además de ‘ci.guix.gnu.org’. Para ello debe
          hacer dos cosas: (1) añadir ‘guix.example.org’ a
          ‘substitute-urls’, y (2) autorizar su clave de firma digital,
          tras realizar las comprobaciones adecuadas (*note Autorización
          de servidores de sustituciones::). La siguiente configuración
          hace exáctamente eso:

               (guix-configuration
                 (substitute-urls
                  (append (list "https://guix.example.org")
                          %default-substitute-urls))
                 (authorized-keys
                  (append (list (local-file "./guix.example.org-clave.pub"))
                          %default-authorized-guix-keys)))

          Este ejemplo asume que el archivo
          ‘./guix.example.org-clave.pub’ contiene la clave pública que
          ‘guix.example.org’ usa para firmar las sustituciones.

     ‘max-silent-time’ (predeterminado: ‘0’)
     ‘timeout’ (predeterminado: ‘0’)
          El número de segundos de silencio y el número de segundos de
          actividad respectivamente, tras los cuales el proceso de
          construcción supera el plazo. Un valor de cero proporciona
          plazos ilimitados.

     ‘log-compression’ (predeterminado: ‘'bzip2’)
          El tipo de compresión usado en los log de construcción—o bien
          ‘gzip’, o bien ‘bzip2’ o ‘none’.

     ‘discover?’ (default: ‘#f’)
          Whether to discover substitute servers on the local network
          using mDNS and DNS-SD.

     ‘extra-options’ (predeterminadas: ‘'()’)
          Lista de opciones de línea de órdenes adicionales para
          ‘guix-daemon’.

     ‘log-file’ (predeterminado: ‘"/var/log/guix-daemon.log"’)
          Archivo al que se escriben la salida estándar y la salida
          estándar de error de ‘guix-daemon’.

     ‘http-proxy’ (predeterminado: ‘#f’)
          La URL de los proxy HTTP y HTTPS que se usa para la descarga
          de derivaciones de salida fija y sustituciones.

          También es posible cambiar la pasarela del daemon en tiempo te
          ejecución con la acción ‘set-http-proxy’, la cual lo reinicia:

               herd set-http-proxy guix-daemon http://localhost:8118

          Para desactivar el uso actual de una pasarela ejecute:

               herd set-http-proxy guix-daemon

     ‘tmpdir’ (predeterminado: ‘#f’)
          Una ruta de directorio donde ‘guix-daemon’ realiza las
          construcciones.

 -- Procedimiento Scheme: udev-service [#:udev EUDEV #:rules ‘'()’]
     Ejecuta UDEV, que gestiona el contenido del directorio ‘/dev’ de
     forma dinámica. Se pueden proporcionar reglas de udev como una
     lista de archivos a través de la variable RULES. Los procedimientos
     ‘udev-rule’, ‘udev-rules-service’ y ‘file->udev-rule’ de ‘(gnu
     services base)’ simplifican la creación de dichos archivos de
     reglas.

     La orden ‘herd rules udev’, como root, devuelve el nombre del
     directorio que contiene todas las reglas udev activas.

 -- Procedimiento Scheme: udev-rule [NOMBRE-ARCHIVO CONTENIDO]
     Devuelve un archivo de reglas de udev con nombre NOMBRE-ARCHIVO que
     contiene las reglas definidas en el literal CONTENIDO.

     En el ejemplo siguiente se define una regla para un dispositivo USB
     que será almacenada en el archivo ‘90-usb-cosa.rules’. Esta regla
     ejecuta un script cuando se detecta un dispositivo USB con un
     identificador de producto dado.

          (define %regla-ejemplo-udev
            (udev-rule
              "90-usb-cosa.rules"
              (string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", "
                             "ATTR{product}==\"Ejemplo\", "
                             "RUN+=\"/ruta/al/ejecutable\"")))

 -- Procedimiento Scheme: udev-rules-service [NOMBRE REGLAS] [#:groups
          GRUPOS]
     Devuelve un servicio que extiende ‘udev-service-type’ con REGLAS y
     ‘account-service-type’ con GRUPOS como grupos del sistema. Esto
     funciona creando una instancia única del tipo de servicio
     ‘NOMBRE-udev-rules’, del cual el servicio devuelto es una
     instancia.

     A continuación se muestra cómo se puede usar para extender
     ‘udev-service-type’ con la regla ‘%regla-ejemplo-udev’ definida
     previamente.

          (operating-system
           ;; ...
           (services
             (cons (udev-rules-service 'usb-thing %regla-ejemplo-udev)
                   %desktop-services)))

 -- Procedimiento Scheme: file->udev-rule [NOMBRE-ARCHIVO ARCHIVO]
     Devuelve un archivo de udev con nombre NOMBRE-ARCHIVO que contiene
     las reglas definidas en ARCHIVO, un objeto tipo-archivo.

     El ejemplo siguiente muestra cómo podemos usar un archivo de reglas
     existente.

          (use-modules (guix download)     ;para url-fetch
                       (guix packages)     ;para origin
                       ...)

          (define %reglas-android-udev
            (file->udev-rule
              "51-android-udev.rules"
              (let ((version "20170910"))
                (origin
                 (method url-fetch)
                 (uri (string-append "https://raw.githubusercontent.com/M0Rf30/"
                                     "android-udev-rules/" version "/51-android.rules"))
                 (sha256
                  (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003"))))))

   Adicionalmente, las definiciones de paquete Gui pueden ser incluidas
en RULES para extender las reglas udev con las definiciones encontradas
bajo su subdirectorio ‘lib/udev/rules.d’. En vez del ejemplo previo de
FILE->UDEV-RULE, podíamos haber usado el paquete ANDROID-UDEV-RULES que
existe en Guix en el módulo ‘(gnu packages android)’.

   El siguiente ejemplo muestra cómo usar el paquete ANDROID-UDEV-RULES
para que la herramienta de Android ‘adb’ pueda detectar dispositivos sin
privilegios de “root”. También detalla como crear el grupo ‘adbusers’,
el cual se requiere para el funcionamiento correcto de las reglas
definidas dentro del paquete ‘android-udev-rules’. Para crear tal grupo,
debemos definirlo tanto como parte de SUPPLEMENTARY-GROUPS de la
declaración de nuestra cuenta de usuaria en USER-ACCOUNT, así como en el
parámetro GROUPS del procedimiento ‘udev-rules-service’.

     (use-modules (gnu packages android)  ;para android-udev-rules
                  (gnu system shadow)     ;para user-group
                  ...)

     (operating-system
       ;; ...
       (users (cons (user-account
                     ;; ...
                     (supplementary-groups
                      '("adbusers"   ;for adb
                        "wheel" "netdev" "audio" "video")))))
       ;; ...
       (services
         (cons (udev-rules-service 'android android-udev-rules
                                   #:groups '("adbusers"))
               %desktop-services)))

 -- Variable Scheme: urandom-seed-service-type
     Almacena alguna entropía en ‘%random-seed-file’ para alimentar
     ‘/dev/urandom’ cuando se reinicia. También intenta alimentar
     ‘/dev/urandom’ con ‘/dev/hwrng’ durante el arranque, si
     ‘/dev/hwrng’ existe y se tienen permisos de lectura.

 -- Variable Scheme: %random-seed-file
     Es el nombre del archivo donde algunos bytes aleatorios son
     almacenados por el servicio URANDOM-SEED-SERVICE para alimentar
     ‘/dev/urandom’ durante el reinicio. Su valor predeterminado es
     ‘/var/lib/random-seed’.

 -- Variable Scheme: gpm-service-type
     Este es el tipo de servicio que ejecuta GPM, el “daemon de ratón de
     propósito general”, que permite el uso del ratón en la consola
     Linux. GPM permite a las usuarias el uso del ratón en la consola,
     notablemente la selección, copia y pegado de texto.

     El valor para servicios de este tipo debe ser un objeto
     ‘gpm-configuration’ (véase a continuación). Este servicio no es
     parte de ‘%base-services’.

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

     ‘opciones’ (predeterminadas: ‘%default-gpm-options’)
          Opciones de línea de órdenes proporcionadas a ‘gpm’. El
          conjunto predeterminado de opciones instruye a ‘gpm’ para
          esperar eventos de ratón en ‘/dev/input/mice’. *Note
          (gpm)Command Line::, para más información.

     ‘gpm’ (predeterminado: ‘gpm’)
          El paquete GPM usado.

 -- Variable Scheme: guix-publish-service-type
     Este es el tipo de servicio para ‘guix publish’ (*note Invocación
     de guix publish::). Su valor debe ser un objeto
     ‘guix-publish-configuration’, como se describe a continuación.

     Se asume que ‘/etc/guix’ ya contiene el par de claves de firma como
     ‘guix archive --generate-key’ lo crea (*note Invocación de guix
     archive::). Si no es el caso, el servicio fallará al arrancar.

 -- Tipo de datos: guix-publish-configuration
     Tipo de datos que representa la configuración del servicio ‘guix
     publish’.

     ‘guix’ (predeterminado: ‘guix’)
          El paquete Guix usado.

     ‘port’ (predeterminado: ‘80’)
          El puerto TCP en el que se esperan conexiones.

     ‘host’ (predeterminado: ‘"localhost"’)
          La dirección de red (y, por tanto, la interfaz de red) en la
          que se esperarán conexiones. Use ‘"0.0.0.0"’ para aceptar
          conexiones por todas las interfaces de red.

     ‘advertise?’ (default: ‘#f’)
          When true, advertise the service on the local network via the
          DNS-SD protocol, using Avahi.

          This allows neighboring Guix devices with discovery on (see
          ‘guix-configuration’ above) to discover this ‘guix publish’
          instance and to automatically download substitutes from it.

     ‘compression’ (default: ‘'(("gzip" 3) ("zstd" 3))’)
          Es una lista de tuplas método de compresión/nivel usadas para
          la compresión de sustituciones. Por ejemplo, para comprimir
          todas las sustituciones _tanto con_ lzip a nivel 8 _como con_
          gzip a nivel 9, escriba:

               '(("lzip" 7) ("gzip" 9))

          Level 9 achieves the best compression ratio at the expense of
          increased CPU usage, whereas level 1 achieves fast
          compression. *Note Invocación de guix publish::, for more
          information on the available compression methods and the
          tradeoffs involved.

          Una lista vacía desactiva completamente la compresión.

     ‘nar-path’ (predeterminado: ‘"nar"’)
          La ruta URL de la que se pueden obtener “nars”. *Note
          ‘--nar-path’: Invocación de guix publish, para más detalles.

     ‘cache’ (predeterminado: ‘#f’)
          Cuando es ‘#f’, desactiva la caché y genera los archivos bajo
          demanda. De otro modo, debería ser el nombre de un
          directorio—por ejemplo, ‘"/var/cache/guix/publish"’—donde
          ‘guix pubish’ almacena los archivos y metadatos en caché
          listos para ser enviados. *Note ‘--cache’: Invocación de guix
          publish, para más información sobre sus ventajas e
          inconvenientes.

     ‘workers’ (predeterminado: ‘#f’)
          Cuando es un entero, es el número de hilos de trabajo usados
          para la caché; cuando es ‘#f’, se usa el número de
          procesadores. *Note ‘--workers’: Invocación de guix publish,
          para más información.

     ‘cache-bypass-threshold’ (predeterminado: 10 MiB)
          Cuando ‘cache’ es verdadero, su valor indica el tamaño máximo
          en bytes de un elemento del almacén hasta el cual ‘guix
          publish’ puede ignorar un fallo de caché y realizar la
          petición directamente. *Note ‘--cache-bypass-threshold’:
          Invocación de guix publish. para obtener más información.

     ‘ttl’ (predeterminado: ‘#f’)
          Cuando es un entero, denota el “tiempo de vida” en segundos de
          los archivos publicados. *Note ‘--ttl’: Invocación de guix
          publish, para más información.

 -- Procedimiento Scheme: rngd-service [#:rng-tools RNG-TOOLS] [#:device
          "/dev/hwrng"]
     Devuelve un servicio que ejecuta el programa ‘rngd’ de RNG-TOOLS
     para añadir DEVICE a la fuente de entropía del núcleo. El servicio
     emitirá un fallo si DEVICE no existe.

 -- Procedimiento Scheme: pam-limits-service [#:limits ‘'()’]

     Return a service that installs a configuration file for the
     ‘pam_limits’ module
     (http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html). The
     procedure optionally takes a list of ‘pam-limits-entry’ values,
     which can be used to specify ‘ulimit’ limits and ‘nice’ priority
     limits to user sessions.

     Las siguientes definiciones de límites establecen dos límites
     “hard” y “soft” para todas las sesiones de ingreso al sistema de
     usuarias pertenecientes al grupo ‘realtime’:

          (pam-limits-service
           (list
            (pam-limits-entry "@realtime" 'both 'rtprio 99)
            (pam-limits-entry "@realtime" 'both 'memlock 'unlimited)))

     La primera entrada incrementa la prioridad máxima de tiempo real
     para procesos sin privilegios; la segunda entrada elimina cualquier
     restricción sobre el espacio de direcciones que puede bloquearse en
     memoria. Estas configuraciones se usan habitualmente para sistemas
     de sonido en tiempo real.

     Another useful example is raising the maximum number of open file
     descriptors that can be used:

          (pam-limits-service
           (list
            (pam-limits-entry "*" 'both 'nofile 100000)))

     In the above example, the asterisk means the limit should apply to
     any user. It is important to ensure the chosen value doesn’t exceed
     the maximum system value visible in the ‘/proc/sys/fs/file-max’
     file, else the users would be prevented from login in. For more
     information about the Pluggable Authentication Module (PAM) limits,
     refer to the ‘pam_limits’ man page from the ‘linux-pam’ package.


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

10.8.2 Ejecución de tareas programadas
--------------------------------------

El módulo ‘(gnu services mcron)’ proporciona una interfaz a GNU mcron,
un daemon para ejecutar trabajos planificados de antemano (*note
(mcron)Top::). GNU mcron es similar al daemon tradicional de Unix
‘cron’; la principal diferencia es que está implementado en Scheme
Guile, que proporciona mucha flexibilidad cuando se especifica la
planificación de trabajos y sus acciones.

   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 trabajo-updatedb
       ;; Ejecuta 'updatedb' a las 3AM cada día. Aquí escribimos
       ;; las acciones del trabajo como un procedimiento Scheme.
       #~(job '(next-hour '(3))
              (lambda ()
                (execl (string-append #$findutils "/bin/updatedb")
                       "updatedb"
                       "--prunepaths=/tmp /var/tmp /gnu/store"))))

     (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)))

   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 Scheme: mcron-service-type
     Este es el tipo del servicio ‘mcron’, cuyo valor es un objeto
     ‘mcron-configuration’.

     Este tipo de servicio puede ser objeto de una extensión de servicio
     que le proporciona especificaciones de trabajo adicionales (*note
     Composición de servicios::). En otras palabras, es posible definir
     servicios que proporcionen trabajos mcron adicionales para su
     ejecución.

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

     ‘mcron’ (predeterminado: MCRON)
          El paquete mcron usado.

     ‘jobs’
          Es una lista de expresiones-G (*note Expresiones-G::), donde
          cada expresión-G corresponde a una especificación de trabajo
          de mcron (*note mcron job specifications: (mcron)Syntax.).


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

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

Los archivos de registro como los encontrados en ‘/var/log’ tienden a
crecer indefinidamente, de modo que es buena idea “llevar a cabo una
rotación” de vez en cuando—es decir, archivar su contenido en archivos
distintos, posiblemente comprimidos. El módulo ‘(gnu services admin)’
proporciona una interfaz con GNU Rot[t]log, una herramienta de rotación
de registros (*note (rottlog)Top::).

   Este servicio es parte de ‘%base-services’, y por lo tanto se activa
de manera predeterminada, con la configuración predeterminada, para
archivos de registro que se pueden encontrar habitualmente. El siguiente
ejemplo muestra como extenderlo con una “rotación” adicional, en caso de
que deba hacerlo (habitualmente los servicios que producen archivos de
registro ya lo hacen ellos mismos):

     (use-modules (guix) (gnu))
     (use-service-modules admin)

     (define mis-archivos-de-registro
       ;; Archivos que deseo rotar.
       '("/var/log/un-archivo.log" "/var/log/otro.log"))

     (operating-system
       ;; ...
       (services (cons (simple-service 'rota-mis-cosas
                                       rottlog-service-type
                                       (list (log-rotation
                                              (frequency 'daily)
                                              (files mis-archivos-de-registro))))
                       %base-services)))

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

     Otros servicios pueden extenderlo con nuevos objetos ‘log-rotation’
     (véase a continuación), aumentando de dicho modo el conjunto de
     archivos a rotar.

     Este servicio puede definir trabajos de mcron (*note Ejecución de
     tareas programadas::) para ejecutar el servicio rottlog.

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

     ‘rottlog’ (predeterminado: ‘rottlog’)
          El paquete Rottlog usado.

     ‘rc-file’ (predeterminado: ‘(file-append rottlog "/etc/rc")’)
          El archivo de configuración de Rottlog usado (*note
          (rottlog)Mandatory RC Variables::).

     ‘rotations’ (predeterminadas: ‘%default-rotations’)
          Una lista de objetos ‘log-rotation’ como se define a
          continuación.

     ‘jobs’
          Esta es una lista de expresiones-G donde cada expresión-G
          corresponde a una especificación de trabajo de mcron (*note
          Ejecución de tareas programadas::).

 -- Tipo de datos: log-rotation
     Tipo de datos que representa la rotación de un grupo de archivos de
     log.

     Tomando el ejemplo del manual de Rottlog (*note (rottlog)Period
     Related File Examples::), una rotación de registros se podría
     definir de esta manera:

          (log-rotation
            (frequency 'daily)
            (files '("/var/log/apache/*"))
            (options '("storedir apache-archives"
                       "rotate 6"
                       "notifempty"
                       "nocompress")))

     La lista de campos es como sigue:

     ‘frequency’ (predeterminada: ‘'weekly’)
          La frecuencia de rotación de logs, un símbolo.

     ‘files’
          La lista de archivos o patrones extendidos de archivo a rotar.

     ‘options’ (predeterminadas: ‘'()’)
          La lista de opciones de rottlog para esta rotación (*note
          (rottlog)Configuration parameters::).

     ‘post-rotate’ (predeterminado: ‘#f’)
          O bien ‘#f’, o bien una expresión-G que se ejecutará una vez
          la rotación se haya completado.

 -- Variable Scheme: %default-rotations
     Especifica la rotación semanal de ‘%rotated-files’ y de
     ‘/var/log/guix-daemon.log’.

 -- Variable Scheme: %rotated-files
     La lista de archivos controlados por syslog que deben ser rotados.
     De manera predeterminada es ‘'("/var/log/messages"
     "/var/log/secure" "/var/log/maillog")’.


File: guix.es.info,  Node: Servicios de red,  Next: Actualizaciones no-atendidas,  Prev: Rotación del registro de mensajes,  Up: Servicios

10.8.4 Servicios de red
-----------------------

El módulo ‘(gnu services networking)’ proporciona servicios para
configurar la interfaz de red.

 -- Variable Scheme: dhcp-client-service-type
     Este es el tipo de los servicios que ejecutan DHCP, un cliente del
     protocolo de configuración dinámica de máquinas DHCP, en todas las
     interfaces de red no locales. Su valor es el paquete del cliente
     DHCP, ‘isc-dhcp’ de manera predeterminada.

 -- Procedimiento Scheme: 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’)
          El paquete que proporciona el daemon DHCP. Se espera que este
          paquete proporcione el daemon en ‘sbin/dhcpd’ de manera
          relativa a su directorio de salida. El paquete predeterminado
          es el servidor DHCP de ISC
          (https://www.isc.org/products/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 Scheme: static-networking-service-type
     Este es el tipo para las interfaces de red configuradas de forma
     estática.

 -- Procedimiento Scheme: static-networking-service INTERFAZ IP
          [#:netmask #f] [#:gateway #f] [#:name-servers ‘'()’]
           [#:requirement
     ‘'(udev)’] Devuelve un servicio que activa la INTERFAZ con la
     dirección IP. Si NETMASK es verdadero, se usa como máscara de red.
     Si GATEWAY es verdadero, se usa como cadena que especifica la
     pasarela predeterminada de la red. REQUIREMENT puede usarse para
     especificar una dependencia en otro servicio antes de configurar la
     interfaz.

     Se puede llamar a este procedimiento varias veces, una por cada
     interfaz de red sobre la que se tenga interés. Internamente, lo que
     hace es extender ‘static-networking-service-type’ con interfaces de
     red adicionales que gestionar.

     Por ejemplo:

          (static-networking-service "eno1" "192.168.1.82"
                                     #:gateway "192.168.1.2"
                                     #:name-servers '("192.168.1.2"))

 -- Procedimiento Scheme: wicd-service [#:wicd WICD]
     Devuelve un servicio que ejecuta Wicd (https://launchpad.net/wicd),
     un daemon de gestión de red que intenta simplificar la gestión de
     redes cableadas e inalámbricas.

     Este servicio añade WICD al perfil global, proporcionando varias
     ordenes destinadas a la interacción con el daemon y a la
     configuración de la red: ‘wicd-client’, una interfaz gráfica, y las
     interfaces de usuaria ‘wicd-cli’ y ‘wicd-curses’.

 -- Variable Scheme: 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 Scheme: 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.

 -- Variable Scheme: 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.

     ‘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.

 -- Variable Scheme: 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.

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

 -- Variable Scheme: 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.

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

     ‘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 Scheme: 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 Scheme: 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 Scheme: 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 "reglas.iptables" "*filter
          :INPUT ACCEPT
          :FORWARD ACCEPT
          :OUTPUT ACCEPT
          -A INPUT -p tcp --dport 22 -j ACCEPT
          -A INPUT -j REJECT --reject-with icmp-port-unreachable
          COMMIT
          "))
                    (ipv6-rules (plain-file "reglas.ip6tables" "*filter
          :INPUT ACCEPT
          :FORWARD ACCEPT
          :OUTPUT 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 Scheme: nftables-service-type
     This is the service type to set up a nftables configuration.
     nftables is a netfilter project that aims to replace the existing
     iptables, ip6tables, arptables and ebtables framework. It provides
     a new packet filtering framework, a new user-space utility ‘nft’,
     and a compatibility layer for iptables. This service comes with a
     default ruleset ‘%default-nftables-ruleset’ that rejecting all
     incoming connections except those to the ssh port 22. To use it,
     simply write:

          (service nftables-service-type)

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

     ‘package’ (predeterminado: ‘nftables’)
          El paquete nftables que proporciona ‘nft’.
     ‘ruleset’ (predeterminados: ‘%default-nftables-ruleset’)
          El conjunto de reglas de nftables usado. Puede ser cualquier
          objeto “tipo-archivo” (*note objetos “tipo-archivo”:
          Expresiones-G.).

 -- Variable Scheme: 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 Scheme: %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))))

 -- Procedimiento Scheme: 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 Scheme: %openntpd-servers
     Esta variable es una lista de las direcciones de servidores
     definidos en ‘%ntp-servers’.

 -- Tipo de datos: openntpd-configuration
     ‘openntpd’ (predeterminado: ‘(file-append openntpd "/sbin/ntpd")’)
          El ejecutable openntpd usado.
     ‘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 Scheme: 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 Scheme: tor-service-type
     Este es el tipo para un servicio que ejecuta el daemon de red
     anónima Tor (https://torproject.org). El servicio se configura
     mediante un registro ‘<tor-configuration>’. De manera
     predeterminada, el daemon Tor se ejecuta como la usuaria sin
     privilegios ‘tor’, que es miembro del grupo ‘tor’.

 -- 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: ‘'()’)
          La lista de registros de servicios ocultos ‘<hidden-service>’
          usados. Para cada servicio oculto que añada en esta lista, se
          activará la configuración apropiada para su activación en el
          archivo de configuración predeterminado. Puede crear registros
          ‘<hidden-service>’ de manera conveniente mediante el uso del
          procedimiento ‘tor-hidden-service’ descrito a continuación.

     ‘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.

 -- Procedimiento Scheme: tor-hidden-service NOMBRE RELACIÓN
     Define un “servicio oculto” Tor llamado NOMBRE y que implementa la
     RELACIÓN. RELACIÓN es una lista de tuplas puerto/máquina, como:

           '((22 "127.0.0.1:22")
             (80 "127.0.0.1:8080"))

     En este ejemplo, el puerto 22 del servicio oculto se asocia con el
     puerto 22 local, y el puerto 80 se asocia con el puerto 8080 local.

     Esto crea un directorio ‘/var/lib/tor/hidden-services/NOMBRE’,
     donde el archivo ‘hostname’ contiene el nombre de máquina ‘.onion’
     para el servicio oculto.

     Véase la documentación del proyecto Tor
     (https://www.torproject.org/docs/tor-hidden-service.html.en) para
     más información.

   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 Scheme: 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.

          (service rsync-service-type)

     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.

     ‘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.

     ‘use-chroot?’ (predeterminado: #T)
          Si se debe usar “chroot” en el directorio compartido de
          ‘rsync’.

     ‘share-path’ (predeterminado: ‘/srv/rsync’)
          Localización del directorio compartido de ‘rsync’.

     ‘share-comment’ (predeterminado: ‘"Rsync share"’)
          Comentario del directorio compartido de ‘rsync’.

     ‘read-only?’ (predeterminado: #F)
          Permisos de lectura/escritura en el directorio compartido.

     ‘timeout’ (predeterminado: ‘300’)
          Plazo de la E/S en segundos.

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

     ‘group’ (predeterminado: "ROOT")
          Grupo del proceso ‘rsync’.

     ‘uid’ (predeterminado: "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’ (predeterminado: "RSYNCD")
          Nombre o ID de grupo que se usa cuando se accede al módulo.

   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.

 -- Scheme Variable: syncthing-service-type
     This is the service type for the syncthing (https://syncthing.net/)
     daemon, The value for this service type is a
     ‘syncthing-configuration’ record as in this example:

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

     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)
               Common configuration and data directory. The default
               configuration directory is ‘$HOME’ of the specified
               Syncthing ‘user’.

   Es más, ‘(gnu services ssh)’ proporciona los siguientes servicios.

 -- Procedimiento Scheme: lsh-service [#:host-key "/etc/lsh/host-key"]
          [#:daemonic? #t] [#:interfaces '()] [#:port-number 22]
          [#:allow-empty-passwords? #f] [#:root-login? #f]
          [#:syslog-output? #t] [#:x11-forwarding? #t]
          [#:tcp/ip-forwarding? #t] [#:password-authentication? #t]
          [#:public-key-authentication? #t] [#:initialize? #t]
     Ejecuta el programa ‘lshd’ de LSH para escuchar en el puerto
     PORT-NUMBER. HOST-KEY debe designar a un archivo que contiene la
     clave de la máquina, y que sea legible únicamente por root.

     Cuando DAEMONIC? es verdadero, ‘lshd’ se desligará del terminal de
     control y registrará su salida con syslogd, a menos que se
     establezca SYSLOG-OUTPUT? a falso. Obviamente, esto hace que
     lsh-dependa de la existencia de un servicio syslogd. Cuando
     PID-FILE? es verdadero, ‘lshd’ escribe su PID al archivo llamado
     PID-FILE.

     Cuando INITIALIZE? es verdadero, crea automáticamente una semilla
     una clave de máquina una vez se active el servicio si no existen
     todavía. Puede tomar un tiempo prolongado y necesita interacción.

     Cuando INITIALIZE? es falso, es cuestión de la usuaria la
     inicialización del generador aleatorio (*note
     (lsh)lsh-make-seed::), la creación de un par de claves y el
     almacenamiento de la clave privada en el archivo HOST-KEY (*note
     (lsh)lshd basics::).

     Cuando INTERFACES está vacío, lshd escucha conexiones en todas las
     interfaces de red; en otro caso, INTERFACES debe ser una lista de
     nombres de máquina o direcciones.

     ALLOW-EMPTY-PASSWORDS? especifica si se aceptará el ingreso al
     sistema con una contraseña vacía y ROOT-LOGIN? especifica si se
     acepta el ingreso al sistema como root.

     El resto de opciones deberían ser autodescriptivas.

 -- Variable Scheme: 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 'without-password)
                     (authorized-keys
                       `(("alicia" ,(local-file "alicia.pub"))
                         ("rober" ,(local-file "rober.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)
          El paquete OpenSSH usado.

     ‘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.

     ‘permit-root-login’ (predeterminado: ‘#f’)
          Este archivo determina si y cuando se permite el ingreso al
          sistema como root. Si es ‘#f’, el ingreso como root no está
          permitido; si es ‘#f’ está permitido. Si es el símbolo
          ‘'without-password’, se permite el ingreso al sistema como
          root pero no con identificación basada en contraseña.

     ‘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’.

     ‘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"))

 -- Procedimiento Scheme: dropbear-service [CONFIG]
     Ejecuta el daemon Dropbear SSH
     (https://matt.ucc.asn.au/dropbear/dropbear.html) con la
     CONFIGuración proporcionada, un objeto ‘<dropbear-configuration>’.

     Por ejemplo, para especificar un servicio Dropbear que escuche en
     el puerto 1234, añada esta llama al campo ‘services’ de su sistema
     operativo:

          (dropbear-service (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 Scheme: 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 Scheme: 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 Scheme: %facebook-host-aliases
     Esta variable contiene una cadena para su uso en ‘/etc/hosts’
     (*note (libc)Host Names::). Cada línea contiene una entrada que
     asocia un nombre de servidor conocido del servicio en línea
     Facebook—por ejemplo, ‘www.facebook.com’—a la máquina
     local—‘127.0.0.1’ o su equivalente IPv6, ‘::1’.

     Esta variable habitualmente se usa en el campo ‘hosts-file’ de una
     declaración ‘operating-system’ (*note ‘/etc/hosts’: Referencia de
     operating-system.):

          (use-modules (gnu) (guix))

          (operating-system
            (host-name "micompu")
            ;; ...
            (hosts-file
              ;; Crea un archivo /etc/hosts file con alias para "localhost"
              ;; y "micompu", así como los servidores de facebook.
              (plain-file "hosts"
                          (string-append (local-host-aliases host-name)
                                         %facebook-host-aliases))))

     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 Scheme: avahi-service-type
     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”, véase <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 Scheme: 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 Scheme: 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.

 -- Scheme 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 public encryption key. Your peers may ask you for this to put
            # into their AllowedEncryptionPublicKeys configuration.
            EncryptionPublicKey: 378dc5...

            # Your private encryption key. DO NOT share this with anyone!
            EncryptionPrivateKey: 0777...

            # Your public signing key. You should not ordinarily need to share
            # this with anyone.
            SigningPublicKey: e1664...

            # Your private signing key. DO NOT share this with anyone!
            SigningPrivateKey: 0589d...
          }

 -- 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
          adynamic 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 these options:

             • ‘EncryptionPublicKey’
             • ‘EncryptionPrivateKey’
             • ‘SigningPublicKey’
             • ‘SigningPrivateKey’

 -- Scheme 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.

 -- Scheme 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

10.8.5 Actualizaciones no-atendidas
-----------------------------------

Guix 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 Scheme: unattended-upgrade-service-type
     Es el tipo de servicio para las actualizaciones desatendidas.
     Configura un trabajo de mcron (*note Ejecución de tareas
     programadas::) que ejecuta ‘guix system reconfigure’ a partir de la
     última versión de los canales especificados.

     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"’)
          La planificación de las actualizaciones, expresada en una
          expresión-G que contiene una planificación de trabajo de mcron
          (*note mcron job specifications: (mcron)Syntax.).

     ‘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’.

     ‘services-to-restart’ (predeterminados: ‘'(mcron)’)
          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 ‘mcron’. 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

10.8.6 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.).

 -- Variable Scheme: gdm-service-type
     Este es el tipo para el gestor de acceso de 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éase a continuación).

     GDM busca “tipos de sesión” descritos por los archivos ‘.desktop’
     en ‘/run/current-system/profile/share/xsessions’ y permite a las
     usuarias seleccionar una sesión en la pantalla de ingreso. Paquetes
     como ‘gnome’, ‘xfce’ y ‘i3’ proporcionan archivos ‘.desktop’; su
     adición a la lista global de paquetes hace que estén
     automáticamente disponibles en la pantalla de ingreso al sistema.

     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’.

     ‘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.cc

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

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

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

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

 -- Variable Scheme: 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)
                       (srfi srfi-1))  ;para 'remove'

          (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.

     ‘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 Scheme: %default-theme
 -- Variable Scheme: %default-theme-name
     El tema predeterminado de SLiM y su nombre.

 -- Tipo de datos: sddm-configuration
     Tipo de datos que representa la configuración del servicio SDDM.

     ‘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’ (predeterminado ‘#~(string-apppend #$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 "")
          Usuaria usada para el ingreso automático en el sistema.

     ‘auto-login-session’ (predeterminado "")
          Archivo desktop usado para el ingreso automático en el
          sistema.

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

 -- Variable Scheme: 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.

     ‘display-server’ (predeterminado: ‘"x11"’)
          Debe ser o bien ‘"x11"’ o bien ‘"wayland"’.

     ‘auto-login-user’ (predeterminado: ‘""’)
          Si no está vacío, es la cuenta de usuaria que ingresará al
          sistema de manera automática.

     ‘auto-login-session’ (predeterminada: ‘""’)
          Si no está vacío, es el nombre de archivo ‘.desktop’ usado en
          el ingreso automático al sistema.

 -- 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, and
     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-keyboard’, 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’.

 -- Procedimiento Scheme: set-xorg-configuration CONFIG
          [TIPO-DE-SERVICIO-DEL-GESTOR-DE-PANTALLA]

     Le dice al gestor de pantalla (de tipo
     TIPO-DE-SERVICIO-DEL-GESTOR-DE-PANTALLA) que use CONFIG, un
     registro ‘<xorg-configuration>’.

     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.

 -- Procedimiento Scheme: 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.

 -- Procedimiento Scheme: screen-locker-service PAQUETE [PROGRAMA]
     Añade PAQUETE, un paquete para un bloqueador de sesión o un
     salvapantallas cuya orden es PROGRAMA, al conjunto de programas
     setuid y añade una entrada PAM para él. Por ejemplo:

          (screen-locker-service xlockmore "xlock")

     permite usar el viejo XlockMore.


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

10.8.7 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 Scheme: 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))))

   Fíjese: Si desea usar la interfaz gráfica basada en Qt5 que viene con
el paquete hplip se le sugiere que instale el paquete ‘hplip’, o bien en
su configuración del sistema operativo o bien como su usuaria.

   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"’.

      -- 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
     Especifica una lista de subtipos de DNS-SD anunciados por cada
     impresora compartida. Por ejemplo, ‘"_cups" "_print"’ le dirá a los
     clientes de red que se implementa tanto la compartición con CUPS
     como IPP Everywhere.

     El valor predeterminado es ‘"_cups"’.

 -- 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’: string classification
     Especifica la clasificación de seguridad del servidor. Se puede
     usar cualquier nombre válido para anunciar la identificación del
     nivel de seguridad, incluyendo ‘"classified"’, ‘"confidential"’,
     ‘"secret"’, ‘"topsecret"’ y ‘"unclassified"’, o el anuncio puede
     omitirse para desactivar las funciones de impresión segura.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cups-configuration’: boolean classify-override?
     Especifica si las usuarias pueden modificar la clasificación
     (página de portada) de trabajos de impresión individuales mediante
     el uso de la opción ‘job-sheets’.

     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
          keep-alive-timeout
     Especifica por cuanto tiempo permanece abierta una conexión de
     cliente en estado de espera, en segundos.

     El valor predeterminado es ‘30’.

 -- 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’: entero-no-negativo
          listen-back-log
     Especifica el número de conexiones pendientes permitidas.
     Habitualmente afecta de manera exclusiva a servidores con mucha
     carga de trabajo que han alcanzado el límite de clientes
     “MaxClients”, pero también puede ser provocado por grandes números
     de conexiones simultaneas. Cuando se alcanza el límite, el sistema
     operativo rechaza conexiones adicionales hasta que el planificador
     pueda aceptar las pendientes.

     El valor predeterminado es ‘128’.

 -- 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 “MaxJobs” 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 “MaxJobs” 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’.

 -- 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.

     El valor predeterminado es ‘300’.

 -- parámetro de ‘cups-configuration’: string page-log-format
     Especifica el formato de las líneas PageLog. Las secuencias de
     caracteres que comiencen con el signo de porcentaje (‘%’) se
     reemplazan con la información correspondiente, mientras que el
     resto de caracteres se copia de manera literal. Se reconocen las
     siguientes secuencias:

     ‘%%’
          inserta literalmente un símbolo de porcentaje

     ‘%{nombre}’
          inserta el valor del atributo IPP especificado

     ‘%C’
          inserta el número de copias para la página actual

     ‘%P’
          inserta el número de página actual

     ‘%T’
          inserta la fecha y hora actuales en el formato común de
          registro

     ‘%j’
          introduce el ID del trabajo

     ‘%p’
          inserta el nombre de impresora

     ‘%u’
          inserta el nombre de usuaria

     La cadena vacía desactiva el registro de página. La cadena ‘%p %u
     %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name}
     %{media} %{sides}’ crea un registro de página con los elementos
     estándar.

     El valor predeterminado es ‘""’.

 -- 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
          Especifica una lista de acceso para los valores privados de un
          trabajo. ‘@ACL’ se sustituye con los valores
          “requesting-user-name-allowed” o “requesting-user-name-denied”
          de la impresora. ‘@OWNER’ se sustituye con la propietaria del
          trabajo. ‘@SYSTEM’ se sustituye con los grupos enumerados en
          el campo ‘system-group’ de la configuración ‘files-config’,
          que se traduce en el archivo ‘cups-files.conf(5)’. Otros
          elementos de configuración de la lista de acceso posibles
          incluyen nombres de usuaria específicos y ‘@GROUP’ para
          indicar miembros de un grupo específico. La lista de acceso
          también puede simplemente ser ‘all’ o ‘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
          Especifica una lista de acceso para los valores privados de
          una subscripción. ‘@ACL’ se sustituye con los valores
          “requesting-user-name-allowed” o “requesting-user-name-denied”
          de la impresora. ‘@OWNER’ se sustituye con la propietaria del
          trabajo. ‘@SYSTEM’ se sustituye con los grupos enumerados en
          el campo ‘system-group’ de la configuración ‘files-config’,
          que se traduce en el archivo ‘cups-files.conf(5)’. Otros
          elementos de configuración de la lista de acceso posibles
          incluyen nombres de usuaria específicos y ‘@GROUP’ para
          indicar miembros de un grupo específico. La lista de acceso
          también puede simplemente ser ‘all’ o ‘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’

 -- 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 rip-cache
     Especifica la cantidad máxima de memoria usada durante la
     conversión de documentos en imágenes para una impresora.

     El valor predeterminado es ‘"128m"’.

 -- 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.

     El valor predeterminado es ‘300’.

 -- 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

10.8.8 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 Scheme: %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::), el daemon Avahi y configura el servicio del selector de
     servicios de nombres para que pueda usar ‘nss-mdns’ (*note mDNS:
     Selector de servicios de nombres.).

   La variable ‘%desktop-services’ puede usarse como el campo ‘services’
de una declaración ‘operating-system’ (*note ‘services’: Referencia de
operating-system.).

   De manera adicional, los procedimientos ‘gnome-desktop-service-type’,
‘xfce-desktop-service’, ‘mate-desktop-service-type’,
‘lxqt-desktop-service-type’ y ‘enlightenment-desktop-service-type’
pueden añadir GNOME, Xfce, MATE y/o Enlightenment al sistema. “Añadir
GNOME” significa que servicios a nivel de sistema como las herramientas
de ayuda para el ajuste de la intensidad de luz de la pantalla y de
gestión de energía se añaden al sistema, extendiendo ‘polkit’ y ‘dbus’
de manera apropiada, y permitiendo a GNOME operar con privilegios
elevados en un número de interfaces del sistema de propósito especial.
Además, la adición de un servicio generado por
‘gnome-desktop-service-type’ añade el metapaquete GNOME al perfil del
sistema. Del mismo modo, la adición del servicio Xfde no añade
únicamente el metapaquete ‘xfce’ al perfil del sistema, sino que también
le proporciona al gestor de archivos Thunar la posibilidad de abrir una
ventana de gestión de archivos en “modo root”, si la usuaria se
identifica mediante la contraseña de administración a través de la
interfaz gráfica estándar polkit. “Añadir MATE” significa que ‘polkit’ y
‘dbus’ se extienden de manera apropiada, permitiendo a MATE operar con
privilegios elevados en un número de interfaces del sistema de propósito
especial. De manera adicional, la adición de un servicio de tipo
‘mate-desktop-service-type’ añade el metapaquete MATE al perfil del
sistema. “Añadir Enlightenment” significa que ‘dbus’ se extiende de
manera apropiada y varios ejecutables de Enlightenment se marcan como
“setuid”, para permitir el funcionamiento esperado del sistema bloqueo
de pantalla de Enlightenment entre otras funcionalidades.

   The desktop environments in Guix use the Xorg display server by
default. If you’d like to use the newer display server protocol called
Wayland, you need to use the ‘sddm-service’ instead of GDM as the
graphical login manager. You should then select the “GNOME (Wayland)”
session in SDDM. Alternatively you can also try starting GNOME on
Wayland manually from a TTY with the command “XDG_SESSION_TYPE=wayland
exec dbus-run-session gnome-session“. Currently only GNOME has support
for Wayland.

 -- Variable Scheme: 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.

     ‘gnome’ (predeterminado: ‘gnome’)
          El paquete GNOME usado.

 -- Variable Scheme: 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 Scheme: 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 Scheme: lxqt-desktop-service-type
     Es el tipo del servicio que ejecuta el entorno de escritorio LXQt
     (https://lxqt.github.io). Su valor es un objeto
     ‘lxqt-desktop-configuration’ (véase a continuación).

     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 Scheme: 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* añade elementos a la lista proporcionada en el último
       ;; parámetro.
       (services (cons* (service gnome-desktop-service-type)
                        (service xfce-desktop-service)
                        %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.

 -- Procedimiento Scheme: dbus-service [#:dbus DBUS] [#:services '()]
     Devuelve un servicio que ejecuta el “bus del sistema”, mediante el
     uso de DBUS, con configuración para SERVICES.

     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.

     SERVICES debe ser una lista de paquetes que proporcionen un
     directorio ‘etc/dbus-1/system.d’ que contenga archivos de
     configuración y políticas adicionales de D-Bus. Por ejemplo, para
     permitir a avahi-daemon el uso del bus del sistema, SERVICES debe
     tener el valor ‘(list avahi)’.

 -- Procedimiento Scheme: elogind-service [#:config CONFIG]
     Devuelve un servicio que ejecuta el daemon de gestión de ingreso al
     sistema y de asientos ‘elogind’. Elogind
     (https://github.com/elogind/elogind) expone una interfaz D-Bus que
     puede usarse para conocer las usuarias que han ingresado en el
     sistema, conocer qué tipo de sesiones tienen abiertas, suspender el
     sistema o inhibir su suspensión, reiniciar el sistema y otras
     tareas.

     Elogind maneja la mayor parte de los eventos a nivel de sistema de
     alimentación de su máquina, por ejemplo mediante la suspensión del
     sistema cuando se cierre la tapa, o mediante el apagado al pulsar
     la tecla correspondiente.

     El parámetro CONFIG especifica la configuración de elogind, y
     debería resultar en una invocación ‘(elogind-configuration
     (PARÁMETRO VALOR)...)’. Los parámetros disponibles y sus valores
     predeterminados son:

     ‘kill-user-processes?’
          ‘#f’
     ‘kill-only-users’
          ‘()’
     ‘kill-exclude-users’
          ‘("root")’
     ‘inhibit-delay-max-seconds’
          ‘5’
     ‘handle-power-key’
          ‘poweroff’
     ‘handle-suspend-key’
          ‘suspend’
     ‘handle-hibernate-key’
          ‘hibernate’
     ‘handle-lid-switch’
          ‘suspend’
     ‘handle-lid-switch-docked’
          ‘ignore’
     ‘handle-lid-switch-external-power’
          ‘ignore’
     ‘power-key-ignore-inhibited?’
          ‘#f’
     ‘suspend-key-ignore-inhibited?’
          ‘#f’
     ‘hibernate-key-ignore-inhibited?’
          ‘#f’
     ‘lid-switch-ignore-inhibited?’
          ‘#t’
     ‘holdoff-timeout-seconds’
          ‘30’
     ‘idle-action’
          ‘ignore’
     ‘idle-action-seconds’
          ‘(* 30 60)’
     ‘runtime-directory-size-percent’
          ‘10’
     ‘runtime-directory-size’
          ‘#f’
     ‘remove-ipc?’
          ‘#t’
     ‘suspend-state’
          ‘("mem" "standby" "freeze")’
     ‘suspend-mode’
          ‘()’
     ‘hibernate-state’
          ‘("disk")’
     ‘hibernate-mode’
          ‘("platform" "shutdown")’
     ‘hybrid-sleep-state’
          ‘("disk")’
     ‘hybrid-sleep-mode’
          ‘("suspend" "platform" "shutdown")’

 -- Procedimiento Scheme: accountsservice-service [#:accountsservice
          ACCOUNTSSERVICE]
     Devuelve un servicio que ejecuta AccountsService, un servicio del
     sistema para la enumeración de cuentas disponibles, el cambio de
     sus contraseñas, etcétera. AccountsService se integra con PolicyKit
     para permitir a las usuarias sin privilegios la adquisición de la
     capacidad de modificar la configuración de su sistema. Véase la
     página web de AccountsService
     (https://www.freedesktop.org/wiki/Software/AccountsService/) para
     más información.

     El parámetro ACCOUNTSSERVICE es el paquete ‘accountsservice’ que se
     expondrá como un servicio.

 -- Procedimiento Scheme: polkit-service [#:polkit POLKIT]
     Devuelve un servicio que ejecuta el servicio de gestión de
     privilegios Polkit
     (https://www.freedesktop.org/wiki/Software/polkit/), que permite a
     las administradoras del sistema la concesión de permisos sobre
     operaciones privilegiadas de manera estructurada. Mediante las
     consultas al servicio Polkit, un componente del sistema con
     privilegios puede conocer cuando debe conceder capacidades
     adicionales a usuarias ordinarias. Por ejemplo, se le puede
     conceder la capacidad a una usuaria ordinaria de suspender el
     sistema si la usuaria ingresó de forma local.

 -- Variable Scheme: 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 Scheme: 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?’ (predeterminado: ‘#f’)
          Determina si se debe usar la política basada en el porcentaje
          de batería. La opción predeterminada es el uso del tiempo
          restante, cambie a ‘#t’ para usar el porcentaje.

     ‘percentage-low’ (predeterminado: ‘10’)
          Cuando ‘use-percentaje-for-policy?’ es ‘#t’, determina el
          porcentaje en el que la carga de la batería se considera baja.

     ‘percentage-critical’ (predeterminado: ‘3’)
          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’.

 -- Procedimiento Scheme: udisks-service [#:udisks UDISKS]
     Devuelve un servicio para UDisks
     (https://udisks.freedesktop.org/docs/latest/), un daemon de
     “gestión de discos” que proporciona interfaces de usuaria con
     notificaciones y formas de montar/desmontar discos. Los programas
     que se comunican con UDisk incluyen la orden ‘udisksctl’, parte de
     UDisks, y la utilidad “Discos” de GNOME. Tenga en cuenta que Udisks
     depende de la orden ‘mount’, de modo que únicamente será capaz de
     usar utilidades para sistemas de archivos instaladas en el perfil
     del sistema. Si quiere, por ejemplo, poder montar sistemas de
     archivos NTFS en modo lectura/escritura, debe instalar ‘ntfs-3g’ en
     su sistema operativo.

 -- Variable Scheme: 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.

 -- Scheme Variable: sane-service-type
     This service provides access to scanners via SANE
     (http://www.sane-project.org) by installing the necessary udev
     rules. It is included in ‘%desktop-services’ (*note Servicios de
     escritorio::) and relies by default on ‘sane-backends-minimal’
     package (see below) for hardware support.

 -- Scheme Variable: sane-backends-minimal
     The default package which the ‘sane-service-type’ installs. It
     supports many recent scanners.

 -- Scheme Variable: sane-backends
     This package includes support for all scanners that
     ‘sane-backends-minimal’ supports, plus older Hewlett-Packard
     scanners supported by ‘hplip’ package. In order to use this 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-backends)))

          (operating-system
            ...
            (services %my-desktop-services)

 -- Procedimiento Scheme: 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 Scheme: %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.

 -- Procedimiento Scheme: geoclue-service [#:colord COLORD] [#:whitelist
          '()]  [#:wifi-geolocation-url
     "https://location.services.mozilla.com/v1/geolocate?key=geoclue"]
      [#:submit-data? #f] [#:wifi-submission-url
     "https://location.services.mozilla.com/v1/submit?key=geoclue"]
      [#:submission-nick "geoclue"]  [#:applications
     %standard-geoclue-applications] Devuelve un servicio que ejecuta el
     servicio de posicionamiento GeoClue. Proporciona una interfaz D-Bus
     que permite a las aplicaciones solicitar una posición física de la
     usuaria, y de manera opcional añadir información a bases de datos
     de posicionamiento en línea. Véase la página web de GeoClue
     (https://wiki.freedesktop.org/www/Software/GeoClue/) para obtener
     más información.

 -- Procedimiento Scheme: bluetooth-service [#:bluez BLUEZ]
          [#:auto-enable? #f]
     Devuelve un servicio que ejecuta el daemon ‘bluetoothd’ que
     gestiona todos los dispositivos Bluetooth y proporciona cierto
     número de interfaces D-Bus. Cuando AUTO-ENABLE? es verdadero, el
     controlador bluetooth tendrá alimentación automáticamente tras el
     arranque, lo que puede ser útil si se posee un teclado o un ratón
     bluetooth.

     Las usuarias necesitan la pertenencia al grupo ‘lp’ para el acceso
     al servicio D-Bus.

 -- Variable Scheme: gnome-keyring-service-type
     Es el tipo del servicio que añade el entorno de escritorio el
     anillo de claves de GNOME
     (https://wiki.gnome.org/Projects/GnomeKeyring). Su valor es un
     objeto ‘gnome-keyring-configuration’ (véase a continuación).

     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’.


File: guix.es.info,  Node: Servicios de sonido,  Next: Servicios de bases de datos,  Prev: Servicios de escritorio,  Up: Servicios

10.8.9 Servicios de sonido
--------------------------

El módulo ‘(gnu services sound)’ proporciona un servicio para la
configuración del sistema ALSA (arquitectura avanzada de sonido de
Linux), el cual establece PulseAudio como el controlador de ALSA
preferido para salida de sonido.

 -- Variable Scheme: alsa-service-type
     Es el tipo para el sistema ALSA (https://alsa-project.org/)
     (Arquitectura de sonido avanzada de Linux), que genera el archivo
     de configuración ‘/etc/asound.conf’. El valor para este tipo es un
     registro ‘alsa-configuration’ como en el ejemplo:

          (service alsa-service-type)

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

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

     ‘alsa-plugins’ (predeterminados: ALSA-PLUGINS)
          El paquete ‘alsa-plugins’ usado.

     ‘pulseaudio?’ (predeterminado: #T)
          Determina si las aplicaciones ALSA deben usar el servidor de
          sonido PulseAudio (https://www.pulseaudio.org/) de manera
          transparente.

          El uso de PulseAudio le permite la ejecución de varias
          aplicaciones que produzcan sonido al mismo tiempo y su control
          individual mediante ‘pavucontrol’, entre otras opciones.

     ‘extra-options’ (predeterminado: "")
          Cadena a añadir al final del archivo ‘/etc/asound.conf’.

   Las usuarias individuales que deseen forzar la configuración de ALSA
en el sistema para sus cuentas pueden hacerlo con el archivo
‘~/.asoundrc’:

     # En guix tenemos que especificar la ruta absoluta del módulo.
     pcm_type.jack {
       lib "/home/alicia/.guix-profile/lib/alsa-lib/libasound_module_pcm_jack.so"
     }

     # Redirección de ALSA a jack:
     # <http://jackaudio.org/faq/routing_alsa.html>.
     pcm.rawjack {
       type jack
       playback_ports {
         0 system:playback_1
         1 system:playback_2
       }

       capture_ports {
         0 system:capture_1
         1 system:capture_2
       }
     }

     pcm.!default {
       type plug
       slave {
         pcm "rawjack"
       }
     }

   Véase <https://www.alsa-project.org/main/index.php/Asoundrc> para
obtener más detalles.

 -- Variable Scheme: pulseaudio-service-type
     Tipo de servicio del servidor de sonido PulseAudio. Existe para
     permitir los cambios a nivel de sistema de la configuración
     predeterminada a través de ‘pulseaudio-configuration’, véase a
     continuación.

          Aviso: Este servicio hace que se ignoren los archivos de
          configuración de cada usuaria. Si desea que PulseAudio respete
          los archivos de configuración en ‘~/.config/pulse’ tiene que
          eliminar del entorno (con ‘unset’) las variables
          ‘PULSE_CONFIG’ y ‘PULSE_CLIENTCONFIG’ en su archivo
          ‘~/.bash_profile’.

          Aviso: Este servicio no asegura en sí que el paquete
          ‘pulseaudio’ exista en su máquina. Únicamente añade los
          archivos de configuración, como se detalla a continuación. En
          el caso (ciertamente poco probable), de que se encuentre si un
          paquete pulseaudio ‘pulseaudio’, considere activarlo a través
          del tipo ‘alsa-service-type’ mostrado previamente.

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

     ‘client-conf’ (predeterminada: ‘'()’)
          Lista de opciones de configuración de ‘client.conf’. Acepta
          una lista de cadenas o pares símbolo-valor. Las cadenas se
          introducirán literalmente añadiendo un salto de línea. Los
          pares tendrán formato “clave = valor”, de nuevo añadiendo un
          salto de línea.

     ‘daemon-conf’ (predeterminada: ‘'((flat-volumes . no))’)
          Lista de opciones de configuración de ‘daemon.conf’, con el
          mismo formato que CLIENT-CONF.

     ‘script-file’ (predeterminado: ‘(file-append pulseaudio "/etc/pulse/default.pa")’)
          Archivo del guión usado como ‘default.pa’

     ‘system-script-file’ (predeterminado: ‘(file-append pulseaudio "/etc/pulse/system.pa")’)
          Archivo del guión usado como ‘system.pa’

 -- Variable Scheme: ladspa-service-type
     Este servicio proporciona valor a la variable LADSPA_PATH, de
     manera que los programas que lo tengan en cuenta, por ejemplo
     PulseAudio, puedan cargar módulos LADSPA.

     El siguiente ejemplo configura el servicio para permitir la
     activación de los módulos del paquete ‘swh-plugins’:

          (service ladspa-service-type
                   (ladspa-configuration (plugins (list swh-plugins))))

     Véase <http://plugin.org.uk/ladspa-swh/docs/ladspa-swh.html> para
     obtener más detalles.


File: guix.es.info,  Node: Servicios de bases de datos,  Next: Servicios de correo,  Prev: Servicios de sonido,  Up: Servicios

10.8.10 Servicios de bases de datos
-----------------------------------

El módulo ‘(gnu services databases)’ proporciona los siguientes
servicios.

PostgreSQL
..........

El ejemplo siguiente describe un servicio PostgreSQL con su
configuración predeterminada.

     (service postgresql-service-type
              (postgresql-configuration
               (postgresql postgresql-10)))

   Si los servicios fallan al arrancar puede deberse a que ya se
encuentra presente otro cluster incompatible en DATA-DIRECTORY. Puede
modificar el valor (o, si no necesita más dicho cluster, borrar
DATA-DIRECTORY), y reiniciar el servicio.

   La identificación de pares se usa de manera predeterminada y la
cuenta de usuaria ‘postgres’ no tiene intérprete predeterminado, lo que
evita la ejecución directa de órdenes ‘psql’ bajo dicha cuenta. Para
usar ‘psql’, puede ingresar temporalmente al sistema como ‘postgres’
usando un intérprete de órdenes, crear una cuenta de administración de
PostgreSQL con el mismo nombre de una de las usuarias del sistema y,
tras esto, crear la base de datos asociada.

     sudo -u postgres -s /bin/sh
     createuser --interactive
     createdb $MI_CUENTA_DE_USUARIA  # Sustituir por el valor apropiado.

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

     ‘postgresql’
          El paquete PostgreSQL usado para este servicio.

     ‘port’ (predeterminado: ‘5432’)
          Puerto en el que debe escuchar PostgreSQL.

     ‘locale’ (predeterminado: ‘"en_US.utf8"’)
          Localización predeterminada cuando se crea el cluster de la
          base de datos.

     ‘config-file’ (predeterminado: ‘(postgresql-config-file)’)
          The configuration file to use when running PostgreSQL. The
          default behaviour uses the postgresql-config-file record with
          the default values for the fields.

     ‘log-directory’ (default: ‘"/var/log/postgresql"’)
          The directory where ‘pg_ctl’ output will be written in a file
          named ‘"pg_ctl.log"’. This file can be useful to debug
          PostgreSQL configuration errors for instance.

     ‘data-directory’ (predeterminado: ‘"/var/lib/postgresql/data"’)
          Directorio en el que se almacenan los datos.

     ‘extension-packages’ (predeterminado: ‘'()’)
          Las extensiones adicionales se cargan de paquetes enumerados
          en EXTENSION-PACKAGES. Las extensiones están disponibles en
          tiempo de ejecución. Por ejemplo, para crear una base de datos
          geográfica con la extensión ‘postgis’, una usuaria podría
          configurar el servicio postgresql-service como en este
          ejemplo:

               (use-package-modules databases geo)

               (operating-system
                 ...
                 ;; postgresql es necesario para ejecutar `psql' pero no se necesita
                 ;; postgis para un funcionamiento correcto.
                 (packages (cons* postgresql %base-packages))
                 (services
                   (cons*
                     (service postgresql-service-type
                              (postgresql-configuration
                               (postgresql postgresql-10)
                               (extension-packages (list postgis))))
                     %base-services)))

          Una vez hecho, la extensión estará visible y podrá inicializar
          una base de datos geográfica de este modo:

               psql -U postgres
               > create database pruebapostgis;
               > \connect pruebapostgis;
               > create extension postgis;
               > create extension postgis_topology;

          No es necesaria la adición de este campo para extensiones
          incluidas en la distribución oficial(1) como hstore o dblink,
          puesto que ya pueden cargarse en postgresql. Este campo
          únicamente es necesario para extensiones proporcionadas por
          otros paquetes.

 -- Tipo de datos: postgresql-config-file
     Data type representing the PostgreSQL configuration file. As shown
     in the following example, this can be used to customize the
     configuration of PostgreSQL. Note that you can use any G-expression
     or filename in place of this record, if you already have a
     configuration file you’d like to use for example.

          (service postgresql-service-type
                   (postgresql-configuration
                    (config-file
                     (postgresql-config-file
                      (log-destination "stderr")
                      (hba-file
                       (plain-file "pg_hba.conf"
                                   "
          local	all	all			trust
          host	all	all	127.0.0.1/32 	md5
          host	all	all	::1/128 	md5"))
                      (extra-config
                       '(("session_preload_libraries"     "auto_explain")
                         ("random_page_cost"              2)
                         ("auto_explain.log_min_duration" "100 ms")
                         ("work_mem"                      "500 MB")
                         ("logging_collector"             #t)
                         ("log_directory"                 "/var/log/postgresql")))))))

     ‘log-destination’ (predeterminado: ‘"syslog"’)
          The logging method to use for PostgreSQL. Multiple values are
          accepted, separated by commas.

     ‘hba-file’ (predeterminado: ‘%default-postgres-hba’)
          Nombre de archivo o expresión-G para la configuración de
          identificación basada en nombres de máquina.

     ‘ident-file’ (predeterminado: ‘%default-postgres-ident’)
          Nombre de archivo o expresión-G para la configuración de
          asociación de nombres de usuaria.

     ‘socket-directory’ (default: ‘#false’)
          Specifies the directory of the Unix-domain socket(s) on which
          PostgreSQL is to listen for connections from client
          applications. If set to ‘""’ PostgreSQL does not listen on any
          Unix-domain sockets, in which case only TCP/IP sockets can be
          used to connect to the server.

          By default, the ‘#false’ value means the PostgreSQL default
          value will be used, which is currently ‘/tmp’.

     ‘extra-config’ (predeterminada: ‘'()’)
          Claves y valores adicionales que se incluirán en el archivo de
          configuración de PostgreSQL. Cada entrada en la lista debe ser
          una lista cuyo primer elemento sea la clave y los elementos
          restantes son los valores.

          The values can be numbers, booleans or strings and will be
          mapped to PostgreSQL parameters types ‘Boolean’, ‘String’,
          ‘Numeric’, ‘Numeric with Unit’ and ‘Enumerated’ described here
          (https://www.postgresql.org/docs/current/config-setting.html).

 -- Scheme Variable: postgresql-role-service-type
     This service allows to create PostgreSQL roles and databases after
     PostgreSQL service start. Here is an example of its use.

          (service postgresql-role-service-type
                      (postgresql-role-configuration
                       (roles
                        (list (postgresql-role
                               (name "test")
                               (create-database? #t))))))

     This service can be extended with extra roles, as in this example:

          (service-extension postgresql-role-service-type
                             (const (postgresql-role
                                     (name "alice")
                                     (create-database? #t))))

 -- Data Type: postgresql-role
     PostgreSQL manages database access permissions using the concept of
     roles. A role can be thought of as either a database user, or a
     group of database users, depending on how the role is set up. Roles
     can own database objects (for example, tables) and can assign
     privileges on those objects to other roles to control who has
     access to which objects.

     ‘name’
          The role name.

     ‘permissions’ (default: ‘'(createdb login)’)
          The role permissions list. Supported permissions are
          ‘bypassrls’, ‘createdb’, ‘createrole’, ‘login’, ‘replication’
          and ‘superuser’.

     ‘create-database?’ (default: ‘#f’)
          Whether to create a database with the same name as the role.

 -- Data Type: postgresql-role-configuration
     Data type representing the configuration of
     POSTGRESQL-ROLE-SERVICE-TYPE.

     ‘host’ (default: ‘"/var/run/postgresql"’)
          The PostgreSQL host to connect to.

     ‘log’ (default: ‘"/var/log/postgresql_roles.log"’)
          File name of the log file.

     ‘roles’ (default: ‘'()’)
          The initial PostgreSQL roles to create.

MariaDB/MySQL
.............

 -- Scheme Variable: mysql-service-type
     This is the service type for a MySQL or MariaDB database server.
     Its value is a ‘mysql-configuration’ object that specifies which
     package to use, as well as various settings for the ‘mysqld’
     daemon.

 -- Tipo de datos: mysql-configuration
     Data type representing the configuration of MYSQL-SERVICE-TYPE.

     ‘mysql’ (predeterminado: MARIADB)
          Objeto de paquete del servidor de bases de datos MySQL, puede
          ser tanto MARIADB como MYSQL.

          Para MySQL, se mostrará una contraseña de root temporal
          durante el tiempo de activación. Para MariaDB, la contraseña
          de root está vacía.

     ‘bind-address’ (predeterminada: ‘"127.0.0.1"’)
          The IP on which to listen for network connections. Use
          ‘"0.0.0.0"’ to bind to all available network interfaces.

     ‘port’ (predeterminado: ‘3306’)
          Puerto TCP en el que escucha el servidor de bases de datos a
          la espera de conexiones entrantes.

     ‘socket’ (default: ‘"/run/mysqld/mysqld.sock"’)
          Socket file to use for local (non-network) connections.

     ‘extra-content’ (predeterminado: ‘""’)
          Additional settings for the ‘my.cnf’ configuration file.

     ‘auto-upgrade?’ (default: ‘#t’)
          Whether to automatically run ‘mysql_upgrade’ after starting
          the service. This is necessary to upgrade the “system schema”
          after “major” updates (such as switching from MariaDB 10.4 to
          10.5), but can be disabled if you would rather do that
          manually.

Memcached
.........

 -- Variable Scheme: memcached-service-type
     Este es el tipo de servicio para el servicio Memcached
     (https://memcached.org/), que proporciona caché distribuida en
     memoria. El valor para este tipo de servicio es un objeto
     ‘memcached-configuration’.

     (service memcached-service-type)

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

     ‘memcached’ (predeterminado: ‘memcached’)
          El paquete de Memcached usado.

     ‘interfaces’ (predeterminadas: ‘'("0.0.0.0")’)
          Interfaces de red por las que se esperan conexiones.

     ‘tcp-port’ (predeterminado: ‘11211’)
          Port on which to accept connections.

     ‘udp-port’ (predeterminado: ‘11211’)
          Puerto en el que se deben aceptar conexiones UDP, el valor 0
          desactiva la escucha en un socket UDP.

     ‘additional-options’ (predeterminadas: ‘'()’)
          Opciones de línea de órdenes adicionales que se le
          proporcionarán a ‘memcached’.

Redis
.....

 -- Variable Scheme: redis-service-type
     Es el tipo de servicio para el almacén de clave/valor Redis
     (https://redis.io/), cuyo valor es un objeto ‘redis-configuration’.

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

     ‘redis’ (predeterminado: ‘redis’)
          El paquete Redis usado.

     ‘bind’ (predeterminada: ‘"127.0.0.1"’)
          La interfaz de red en la que se escucha.

     ‘port’ (predeterminado: ‘6379’)
          Puerto en el que se aceptan conexiones, el valor 0 desactiva
          la escucha en un socket TCP.

     ‘working-directory’ (predeterminado: ‘"/var/lib/redis"’)
          Directorio en el que se almacena los archivos de base de datos
          y relacionados.

   ---------- Footnotes ----------

   (1) NdT: “contrib” de “contributed” en inglés, “contribuciones”
podría entenderse en castellano.


File: guix.es.info,  Node: Servicios de correo,  Next: Servicios de mensajería,  Prev: Servicios de bases de datos,  Up: Servicios

10.8.11 Servicios de correo
---------------------------

El módulo ‘(gnu services mail)’ proporciona definiciones de servicios
Guix para servicios de correo electrónico: servidores IMAP, POP3 y LMTP,
así como agentes de transporte de correo (MTA). ¡Muchos acrónimos! Estos
servicios se detallan en las subsecciones a continuación.

Servicio Dovecot
................

 -- Procedimiento Scheme: dovecot-service [#:config
          (dovecot-configuration)]
     Devuelve un servicio que ejecuta el servidor de correo
     IMAP/POP3/LMTP Dovecot.

   Habitualmente Dovecot no necesita mucha configuración; el objeto de
configuración predeterminado creado por ‘(dovecot-configuration)’ es
suficiente si su correo se entrega en ‘~/Maildir’. Un certificado
auto-firmado se generará para las conexiones protegidas por TLS, aunque
Dovecot también escuchará en puertos sin cifrar de manera
predeterminada. Existe un amplio número de opciones no obstante, las
cuales las administradoras del correo puede que deban cambiar, y como en
el caso de otros servicios, Guix permite a la administradora del sistema
la especificación de dichos parámetros a través de una interfaz Scheme
uniforme.

   Por ejemplo, para especificar que el correo se encuentra en
‘maildir:~/.correo’, se debe instanciar el servicio de Dovecot de esta
manera:

     (dovecot-service #:config
                      (dovecot-configuration
                       (mail-location "maildir:~/.correo")))

   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
‘dovecot.conf’ antiguo que quiere trasladar a otro sistema; véase el
final para más detalles.

   Los campos disponibles de ‘dovecot-configuration’ son:

 -- parámetro de ‘dovecot-configuration’: package dovecot
     El paquete dovecot.

 -- parámetro de ‘dovecot-configuration’: lista-cadenas-separada-comas
          listen
     Una lista de direcciones IP o nombres de máquina donde se
     escucharán conexiones. ‘*’ escucha en todas las interfaces IPv4,
     ‘::’ escucha en todas las interfaces IPv6. Si desea especificar
     puertos distintos a los predefinidos o algo más complejo,
     personalice los campos de dirección y puerto del ‘inet-listener’ de
     los servicios específicos en los que tenga interés.

 -- parámetro de ‘dovecot-configuration’: lista-protocol-configuration
          protocols
     Lista de protocolos que se desea ofrecer. Los protocolos
     disponibles incluyen ‘imap’, ‘pop3’ y ‘lmtp’.

     Los campos disponibles de ‘protocol-configuration’ son:

      -- parámetro de ‘protocol-configuration’: string name
          El nombre del protocolo.

      -- parámetro de ‘protocol-configuration’: string auth-socket-path
          Ruta del socket de UNIX del servidor de identificación maestro
          para la búsqueda de usuarias. Se usa por parte de imap (para
          usuarias compartidas) y lda. Su valor predeterminado es
          ‘"/var/run/dovecot/auth-userdb"’.

      -- parámetro de ‘protocol-configuration’:
               list-cadenas-separada-espacios mail-plugins
          Lista separada por espacios de módulos a cargar.

      -- parámetro de ‘protocol-configuration’: entero-no-negativo
               mail-max-userip-connections
          Número máximo de conexiones IMAP permitido para una usuaria
          desde cada dirección IP. ATENCIÓN: El nombre de usuaria es
          sensible a las mayúsculas. Su valor predeterminado es ‘10’.

 -- parámetro de ‘dovecot-configuration’: lista-service-configuration
          services
     Lista de servicios activados. Los servicios disponibles incluyen
     ‘imap’, ‘imap-login’, ‘pop3’, ‘pop3-login’, ‘auth’ y ‘lmtp’.

     Los campos disponibles de ‘service-configuration’ son:

      -- parámetro de ‘service-configuration’: string kind
          El tipo del servicio. Entre los valores aceptados se incluye
          ‘director’, ‘imap-login’, ‘pop3-login’, ‘lmtp’, ‘imap’,
          ‘pop3’, ‘auth’, ‘auth-worker’, ‘dict’, ‘tcpwrap’,
          ‘quota-warning’ o cualquier otro.

      -- parámetro de ‘service-configuration’:
               lista-listener-configuration listeners
          Procesos de escucha para el servicio. Un proceso de escucha es
          un objeto ‘unix-listener-configuration’, un objeto
          ‘fifo-listener-configuration’ o un objeto
          ‘inet-listener-configuration’. Su valor predeterminado es
          ‘()’.

          Los campos disponibles de ‘unix-listener-configuration’ son:

           -- parámetro de ‘unix-listener-configuration’: string path
               Ruta al archivo, relativa al campo ‘base-dir’. También se
               usa como nombre de la sección.

           -- parámetro de ‘unix-listener-configuration’: string mode
               Modo de acceso del socket. Su valor predeterminado es
               ‘"0600"’.

           -- parámetro de ‘unix-listener-configuration’: string user
               Usuaria que posee el socket. Su valor predeterminado es
               ‘""’.

           -- parámetro de ‘unix-listener-configuration’: string group
               Grupo que posee el socket. Su valor predeterminado es
               ‘""’.

          Los campos disponibles de ‘fifo-listener-configuration’ son:

           -- parámetro de ‘fifo-listener-configuration’: string path
               Ruta al archivo, relativa al campo ‘base-dir’. También se
               usa como nombre de la sección.

           -- parámetro de ‘fifo-listener-configuration’: string mode
               Modo de acceso del socket. Su valor predeterminado es
               ‘"0600"’.

           -- parámetro de ‘fifo-listener-configuration’: string user
               Usuaria que posee el socket. Su valor predeterminado es
               ‘""’.

           -- parámetro de ‘fifo-listener-configuration’: string group
               Grupo que posee el socket. Su valor predeterminado es
               ‘""’.

          Los campos disponibles de ‘inet-listener-configuration’ son:

           -- parámetro de ‘inet-listener-configuration’: string
                    protocol
               El protocolo con el que se esperan las conexiones.

           -- parámetro de ‘inet-listener-configuration’: string address
               La dirección en la que se escuchará, o vacío para
               escuchar en todas las direcciones. Su valor
               predeterminado es ‘""’.

           -- parámetro de ‘inet-listener-configuration’:
                    entero-no-negativo port
               El puerto en el que esperarán conexiones.

           -- parámetro de ‘inet-listener-configuration’: boolean ssl?
               Si se usará SSL para este servicio; ‘yes’ (sí), ‘no’ o
               ‘required’ (necesario). Su valor predeterminado es ‘#t’.

      -- parámetro de ‘service-configuration’: entero-no-negativo
               client-limit
          Número máximo de conexiones simultáneas por cliente por
          proceso. Una vez se reciba este número de conexiones, la
          siguiente conexión entrante solicitará a Dovecot el inicio de
          un nuevo proceso. Si se proporciona el valor 0, se usa
          ‘default-client-limit’.

          El valor predeterminado es ‘0’.

      -- parámetro de ‘service-configuration’: entero-no-negativo
               service-count
          Número de conexiones a manejar antes de iniciar un nuevo
          proceso. Habitualmente los únicos valores útiles son 0
          (ilimitadas) o 1. 1 es más seguro, pero 0 es más rápido.
          <doc/wiki/LoginProcess.txt>. Su valor predeterminado es ‘1’.

      -- parámetro de ‘service-configuration’: entero-no-negativo
               process-limit
          Número máximo de procesos que pueden existir para este
          servicio. Si se proporciona el valor 0, se usa
          ‘default-process-limit’.

          El valor predeterminado es ‘0’.

      -- parámetro de ‘service-configuration’: entero-no-negativo
               process-min-avail
          Número de procesos que siempre permanecerán a la espera de más
          conexiones. Su valor predeterminado es ‘0’.

      -- parámetro de ‘service-configuration’: entero-no-negativo
               vsz-limit
          Si proporciona ‘service-count 0’, probablemente necesitará
          incrementar este valor. Su valor predeterminado es
          ‘256000000’.

 -- parámetro de ‘dovecot-configuration’: dict-configuration dict
     Configuración de Dict, como la creada por el constructor
     ‘dict-configuration’.

     Los campos disponibles de ‘dict-configuration’ son:

      -- parámetro de ‘dict-configuration’: campos-libres entries
          Una lista de pares clave-valor que este diccionario debe
          incorporar. Su valor predeterminado es ‘()’.

 -- parámetro de ‘dovecot-configuration’: lista-passdb-configuration
          passdbs
     Una lista de configuraciones de passdb, cada una creada por el
     constructor ‘passdb-configuration’.

     Los campos disponibles de ‘passdb-configuration’ son:

      -- parámetro de ‘passdb-configuration’: string driver
          El controlador que passdb debe usar. Entre los valores
          aceptados se incluye ‘pam’, ‘passwd’, ‘shadow’, ‘bsdauth’ y
          ‘static’. Su valor predeterminado es ‘"pam"’.

      -- parámetro de ‘passdb-configuration’:
               lista-cadenas-separada-espacios args
          Lista de parámetros separados por espacios para proporcionar
          al controlador passdb. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: lista-userdb-configuration
          userdbs
     Lista de configuraciones userdb, cada una creada por el constructor
     ‘userdb-configuration’.

     Los campos disponibles de ‘userdb-configuration’ son:

      -- parámetro de ‘userdb-configuration’: string driver
          El controlador que userdb debe usar. Entre los valores
          aceptados se incluye ‘passwd’ y ‘static’. Su valor
          predeterminado es ‘"passwd"’.

      -- parámetro de ‘userdb-configuration’:
               lista-cadenas-separada-espacios args
          Lista separada por espacios de parámetros usados para el
          controlador userdb. Su valor predeterminado es ‘""’.

      -- parámetro de ‘userdb-configuration’: parámetros-libres
               override-fields
          Sustituye los valores de campos de passwd. Su valor
          predeterminado es ‘()’.

 -- parámetro de ‘dovecot-configuration’: plugin-configuration
          plugin-configuration
     Configuración del módulo, creada por el constructor
     ‘plugin-configuration’.

 -- parámetro de ‘dovecot-configuration’: lista-namespace-configuration
          namespaces
     Lista de espacios de nombres. Cada elemento de la lista debe
     crearse con el constructor ‘namespace-configuration’.

     Los campos disponibles de ‘namespace-configuration’ son:

      -- parámetro de ‘namespace-configuration’: string name
          Nombre para este espacio de nombres.

      -- parámetro de ‘namespace-configuration’: string type
          Tipo del espacio de nombres: ‘private’, ‘shared’ o ‘public’.
          Su valor predeterminado es ‘"private"’.

      -- parámetro de ‘namespace-configuration’: string separator
          Hierarchy separator to use. You should use the same separator
          for all namespaces or some clients get confused. ‘/’ is
          usually a good one. The default however depends on the
          underlying mail storage format. Defaults to ‘""’.

      -- parámetro de ‘namespace-configuration’: string prefix
          Prefix required to access this namespace. This needs to be
          different for all namespaces. For example ‘Public/’. Defaults
          to ‘""’.

      -- parámetro de ‘namespace-configuration’: string location
          Localización física de la bandeja de correo. En el mismo
          formato que la localización del correo, que también es su
          valor predeterminado. Su valor predeterminado es ‘""’.

      -- parámetro de ‘namespace-configuration’: boolean inbox?
          Únicamente puede existir una bandeja de entrada (INBOX), y
          esta configuración define qué espacio de nombres la posee. Su
          valor predeterminado es ‘#f’.

      -- parámetro de ‘namespace-configuration’: boolean hidden?
          If namespace is hidden, it’s not advertised to clients via
          NAMESPACE extension. You’ll most likely also want to set
          ‘list? #f’. This is mostly useful when converting from another
          server with different namespaces which you want to deprecate
          but still keep working. For example you can create hidden
          namespaces with prefixes ‘~/mail/’, ‘~%u/mail/’ and ‘mail/’.
          Defaults to ‘#f’.

      -- parámetro de ‘namespace-configuration’: boolean list?
          Show the mailboxes under this namespace with the LIST command.
          This makes the namespace visible for clients that do not
          support the NAMESPACE extension. The special ‘children’ value
          lists child mailboxes, but hides the namespace prefix.
          Defaults to ‘#t’.

      -- parámetro de ‘namespace-configuration’: boolean subscriptions?
          El espacio de nombres maneja sus propias subscripciones. Si es
          ‘#f’, el espacio de nombres superior las maneja. El prefijo
          vacío siempre debe tener este valor como ‘#t’. Su valor
          predeterminado es ‘#t’.

      -- parámetro de ‘namespace-configuration’:
               lista-mailbox-configuration mailboxes
          Lista de bandejas de correo predefinidas en este espacio de
          nombres. Su valor predeterminado es ‘()’.

          Los campos disponibles de ‘mailbox-configuration’ son:

           -- parámetro de ‘mailbox-configuration’: string name
               Nombre de esta bandeja de correo.

           -- parámetro de ‘mailbox-configuration’: string auto
               Con ‘create’ se crea de forma automática esta bandeja de
               correo. Con ‘subscribe’ se crea y se suscribe a la
               bandeja de correo. Su valor predeterminado es ‘"no"’.

           -- parámetro de ‘mailbox-configuration’:
                    lista-cadenas-separada-espacios special-use
               Lista de atributos ‘SPECIAL-USE’ de IMAP como se
               especifican en el RFC 6154. Entre los valores aceptados
               se incluye ‘\All’, ‘\Archive’, ‘\Drafts’, ‘\Flagged’,
               ‘\Junk’, ‘\Sent’ y ‘\Trash’. Su valor predeterminado es
               ‘()’.

 -- parámetro de ‘dovecot-configuration’: nombre-archivo base-dir
     Directorio base donde se almacenan los datos de tiempo de
     ejecución. Su valor predeterminado es ‘"/var/run/dovecot/"’.

 -- parámetro de ‘dovecot-configuration’: string login-greeting
     Mensaje de saludo para clientes. Su valor predeterminado es
     ‘"Dovecot ready."’.

 -- parámetro de ‘dovecot-configuration’:
          lista-cadenas-separada-espacios login-trusted-networks
     Lista de rangos de red en los que se confía. Las conexiones desde
     estas IP tienen permitido forzar sus direcciones IP y puertos (para
     el registro y las comprobaciones de identidad).
     ‘disable-plaintext-auth’ también se ignora en estas redes.
     Habitualmente aquí se especificarían los servidores proxy IMAP. Su
     valor predeterminado es ‘()’.

 -- parámetro de ‘dovecot-configuration’:
          lista-cadenas-separada-espacios login-access-sockets
     Lista de sockets para la comprobación de acceso al sistema (por
     ejemplo tcpwrap). Su valor predeterminado es ‘()’.

 -- parámetro de ‘dovecot-configuration’: boolean verbose-proctitle?
     Muestra títulos de procesamiento más detallados (en la postdata).
     Actualmente muestra el nombre de la usuaria y su dirección IP. Es
     útil para ver quién está usando procesos IMAP realmente (por
     ejemplo bandejas de correo compartidas o si el mismo identificador
     numérico de usuaria se usa para varias cuentas). Su valor
     predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean shutdown-clients?
     Determina si se deben finalizar todos los procesos cuando el
     proceso maestro de Dovecot termine su ejecución. El valor ‘#f’
     significa que Dovecot puede actualizarse sin forzar el cierre de
     las conexiones existentes (aunque esto puede ser un problema si la
     actualización se debe, por ejemplo, a la corrección de una
     vulnerabilidad). Su valor predeterminado es ‘#t’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          doveadm-worker-count
     Si no es cero, ejecuta las ordenes del correo a través de este
     número de conexiones al servidor doveadm, en vez de ejecutarlas
     directamente en el mismo proceso. Su valor predeterminado es ‘0’.

 -- parámetro de ‘dovecot-configuration’: string doveadm-socket-path
     Socket UNIX o máquina:puerto usados para la conexión al servidor
     doveadm. Su valor predeterminado es ‘"doveadm-server"’.

 -- parámetro de ‘dovecot-configuration’:
          lista-cadenas-separada-espacios import-environment
     Lista de variables de entorno que se preservan al inicio de Dovecot
     y se proporcionan a los procesos iniciados. También puede
     proporcionar pares clave=valor para proporcionar siempre dicha
     configuración específica.

 -- parámetro de ‘dovecot-configuration’: boolean
          disable-plaintext-auth?
     Desactiva la orden LOGIN y todas las otras identificaciones en
     texto plano a menos que se use SSL/TLS (capacidad LOGINDISABLED).
     Tenga en cuenta que si la IP remota coincide con la IP local (es
     decir, se ha conectado desde la misma máquina), la conexión se
     considera segura y se permite la identificación en texto plano.
     Véase también la configuración ssl=required. Su valor
     predeterminado es ‘#t’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          auth-cache-size
     Tamaño de la caché de identificaciones (por ejemplo, ‘#e10e6’. 0
     significa que está desactivada. Tenga en cuenta que bsdauth, PAM y
     vpopmail necesitan un valor en ‘cache-key’ para que se use la
     caché. Su valor predeterminado es ‘0’.

 -- parámetro de ‘dovecot-configuration’: string auth-cache-ttl
     Tiempo de vida de los datos almacenados en caché. Los registros de
     caché no se usan tras su expiración, *excepto* si la base de datos
     principal devuelve un fallo interno. También se intentan manejar
     los cambios de contraseña de manera automática: si la
     identificación previa de la usuaria fue satisfactoria, pero no esta
     última, la caché no se usa. En estos momentos únicamente funciona
     con identificación en texto plano. Su valor predeterminado es ‘"1
     hour"’.

 -- parámetro de ‘dovecot-configuration’: string auth-cache-negative-ttl
     Tiempo de vida para fallos de búsqueda en la caché (usuaria no
     encontrada, la contraseña no coincide). 0 desactiva completamente
     su almacenamiento en caché. Su valor predeterminado es ‘"1 hour"’.

 -- parámetro de ‘dovecot-configuration’:
          lista-cadenas-separada-espacios auth-realms
     Lista de dominios para los mecanismos de identificación de SASL que
     necesite. Puede dejarla vacía si no desea permitir múltiples
     dominios. Muchos clientes simplemente usarán el primero de la
     lista, por lo que debe mantener el dominio predeterminado en
     primera posición. Su valor predeterminado es ‘()’.

 -- parámetro de ‘dovecot-configuration’: string auth-default-realm
     Dominio predeterminado usado en caso de no especificar ninguno.
     Esto se usa tanto en dominios SASL y como al añadir @dominio al
     nombre de usuaria en los ingresos al sistema a través de texto en
     claro. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string auth-username-chars
     Lista de caracteres permitidos en los nombres de usuaria. Si el
     nombre de usuaria proporcionado contiene un carácter no enumerado
     aquí, el login falla automáticamente. Es únicamente una
     comprobación adicional para asegurarse de que las usuarias no
     pueden explotar ninguna potencial vulnerabilidad con el escape de
     comillas en bases de datos SQL/LDAP. Si desea permitir todos los
     caracteres, establezca este valor a la cadena vacía. Su valor
     predeterminado es
     ‘"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@"’.

 -- parámetro de ‘dovecot-configuration’: string
          auth-username-translation
     Traducciones de caracteres de nombres de usuaria antes de que se
     busque en las bases de datos. El valor contiene series de
     caracteres "original -> transformado". Por ejemplo ‘#@/@’ significa
     que ‘#’ y ‘/’ se traducen en ‘@’. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string auth-username-format
     Formato proporcionado al nombre de usuaria antes de buscarlo en las
     bases de datos. Puede usar variables estándar aquí, por ejemplo %Lu
     transformará el nombre a minúsculas, %n eliminará el fragmento del
     dominio si se proporcionó, o ‘%n-AT-%d’ cambiaría ‘@’ en ‘-AT-’.
     Esta traducción se realiza tras los cambios de
     ‘auth-username-translation’. Su valor predeterminado es ‘"%Lu"’.

 -- parámetro de ‘dovecot-configuration’: string
          auth-master-user-separator
     Si desea permitir que usuarias maestras ingresen mediante la
     especificación del nombre de usuaria maestra dentro de la cadena de
     nombre de usuaria normal (es decir, sin usar el mecanismo para ello
     implementado por SASL), puede especificar aquí el carácter
     separador. El formato es entonces <usuaria><separador><usuaria
     maestra>. UW-IMAP usa ‘*’ como separador, por lo que esa puede ser
     una buena elección. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string auth-anonymous-username
     Usuaria usada para las usuarias que ingresen al sistema con el
     mecanismo de SASL ANONYMOUS. Su valor predeterminado es
     ‘"anonymous"’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          auth-worker-max-count
     Número máximo de procesos de trabajo dovecot-auth. Se usan para la
     ejecución de consultas bloqueantes a passdb y userdb (por ejemplo
     MySQL y PAM). Se crean y destruyen bajo demanda de manera
     automática. Su valor predeterminado es ‘30’.

 -- parámetro de ‘dovecot-configuration’: string auth-gssapi-hostname
     Nombre de máquina usado en los nombres de GSSAPI principales. Por
     omisión se usa el nombre devuelto por gethostname(). Use ‘$ALL’
     (con comillas) para permitir todas las entradas keytab. Su valor
     predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string auth-krb5-keytab
     Keytab de Kerberos usado para el mecanismo GSSAPI. Si no se
     especifica ninguno, se usa el predeterminado del sistema
     (habitualmente ‘/etc/krb5.keytab’). Puede ser necesario cambiar el
     servicio auth para que se ejecute como root y tenga permisos de
     lectura sobre este archivo. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: boolean auth-use-winbind?
     Se identifica con NTLM y GSS-SPNEGO mediante el uso del daemon
     winbind de Samba y la herramienta auxiliar ‘ntlm-auth’.
     <doc/wiki/Authentication/Mechanisms/Winbind.txt>. Su valor
     predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: nombre-archivo
          auth-winbind-helper-path
     Ruta al binario de la herramienta auxiliar ‘ntlm-auth’ de Samba. Su
     valor predeterminado es ‘"/usr/bin/ntlm_auth"’.

 -- parámetro de ‘dovecot-configuration’: string auth-failure-delay
     Tiempo de espera antes de responder a identificaciones fallidas. Su
     valor predeterminado es ‘"2 secs"’.

 -- parámetro de ‘dovecot-configuration’: boolean
          auth-ssl-require-client-cert?
     Es necesario un certificado de cliente SSL válido o falla la
     identificación. Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean
          auth-ssl-username-from-cert?
     Toma el nombre de usuaria del certificado de cliente SSL, mediante
     el uso de ‘X509_NAME_get_text_by_NID()’, que devuelve el nombre
     común (CommonName) del nombre de dominio (DN) del sujeto del
     certificado. Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’:
          lista-cadenas-separada-espacios auth-mechanisms
     Lista de mecanismos de identificación deseados. Los mecanismos
     permitidos son: ‘plain’, ‘login’, ‘digest-md5’, ‘cram-md5’, ‘ntlm’,
     ‘rpa’, ‘apop’, ‘anonymous’, ‘gssapi’, ‘otp’, ‘key’, and
     ‘gss-spnego’. ATENCIÓN: Véase también la opción de configuración
     ‘disable-plaintext-auth’.

 -- parámetro de ‘dovecot-configuration’:
          lista-cadenas-separada-espacios director-servers
     Lista de IP o nombres de máquina de los servidores directores,
     incluyendo este mismo. Los puertos se pueden especificar como
     ip:puerto. El puerto predeterminado es el mismo que el usado por el
     servicio director ‘inet-listener’. Su valor predeterminado es ‘()’.

 -- parámetro de ‘dovecot-configuration’:
          lista-cadenas-separada-espacios director-mail-servers
     Lista de IP o nombres de máquina de los servidores motores de
     correo. Se permiten también rangos, como 10.0.0.10-10.0.0.30. Su
     valor predeterminado es ‘()’.

 -- parámetro de ‘dovecot-configuration’: string director-user-expire
     Por cuanto tiempo se redirige a las usuarias a un servidor
     específico tras pasar ese tiempo sin conexiones. Su valor
     predeterminado es ‘"15 min"’.

 -- parámetro de ‘dovecot-configuration’: string director-username-hash
     Cómo se traduce el nombre de usuaria antes de aplicar el hash.
     Entre los valores útiles se incluye %Ln si la usuaria puede
     ingresar en el sistema con o sin @dominio, %Ld si las bandejas de
     correo se comparten dentro del dominio. Su valor predeterminado es
     ‘"%Lu"’.

 -- parámetro de ‘dovecot-configuration’: string log-path
     Archivo de registro usado para los mensajes de error. ‘syslog’ los
     envía a syslog, ‘"/dev/stderr"’ a la salida de error estándar. Su
     valor predeterminado es ‘"syslog"’.

 -- parámetro de ‘dovecot-configuration’: string info-log-path
     Archivo de registro usado para los mensajes informativos. Por
     omisión se usa ‘log-path’. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string debug-log-path
     Archivo de registro usado para los mensajes de depuración. Por
     omisión se usa ‘info-log-path’. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string syslog-facility
     Subsistema de syslog (facility) usado si se envía el registro a
     syslog. De manera habitual, si desea que no se use ‘mail’, se usará
     local0..local7. Otros subsistemas estándar también están
     implementados. Su valor predeterminado es ‘"mail"’.

 -- parámetro de ‘dovecot-configuration’: boolean auth-verbose?
     Registra los intentos de identificación infructuosos y las razones
     por los que fallaron. Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: string auth-verbose-passwords
     En caso de no coincidir la contraseña, registra la contraseña que
     se intentó. Los valores aceptados son “no”, “plain” y “sha1”.
     “sha1” puede ser útil para diferenciar intentos de descubrir la
     contraseña por fuerza bruta frente a una usuaria simplemente
     intentando la misma contraseña una y otra vez. También puede
     recortar el valor a n caracteres mediante la adición de ":n" (por
     ejemplo “sha1:6”). Su valor predeterminado es ‘"no"’.

 -- parámetro de ‘dovecot-configuration’: boolean auth-debug?
     Registros aún más detallados para facilitar la depuración. Muestra,
     por ejemplo, las consultas SQL. Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean auth-debug-passwords?
     En caso de no coincidir la contraseña, registra las contraseñas y
     esquema usadas de manera que el problema se pueda depurar. La
     activación de este valor también provoca la activación de
     ‘auth-debug’. Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean mail-debug?
     Permite la depuración de los procesos de correo. Puede ayudarle a
     comprender los motivos en caso de que Dovecot no encuentre sus
     correos. Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean verbose-ssl?
     Muestra los errores a nivel de protocolo SSL. Su valor
     predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: string log-timestamp
     Prefijo de cada línea registrada en el archivo. Los códigos %
     tienen el formato de strftime(3). Su valor predeterminado es ‘"\"%b
     %d %H:%M:%S \""’.

 -- parámetro de ‘dovecot-configuration’:
          lista-cadenas-separada-espacios login-log-format-elements
     Lista de elementos que se desea registrar. Los elementos que tengan
     valor de variable no-vacía se unen para la formación de una cadena
     separada por comas.

 -- parámetro de ‘dovecot-configuration’: string login-log-format
     Formato del registro de ingresos al sistema. %s contiene la cadena
     ‘login-log-format-elements’, %$ contiene los datos que se desean
     registrar. Su valor predeterminado es ‘"%$: %s"’.

 -- parámetro de ‘dovecot-configuration’: string mail-log-prefix
     Prefijo de los registros de procesos de correo. Véase
     doc/wiki/Variables.txt para obtener una lista de variables que
     puede usar. Su valor predeterminado es
     ‘"\"%s(%u)<%{pid}><%{session}>: \""’.

 -- parámetro de ‘dovecot-configuration’: string deliver-log-format
     Formato usado para el registro de las entregas de correo. Puede
     usar las variables:
     ‘%$’
          Mensaje de estado de entrega (por ejemplo: ‘saved to INBOX’)
     ‘%m’
          Message-ID
     ‘%s’
          Asunto
     ‘%f’
          De (dirección)
     ‘%p’
          Tamaño físico
     ‘%w’
          Tamaño virtual.
     El valor predeterminado es ‘"msgid=%m: %$"’.

 -- parámetro de ‘dovecot-configuration’: string mail-location
     Localización de las bandejas de correo de las usuarias. El valor
     predeterminado está vacío, lo que significa que Dovecot intenta
     encontrar las bandejas de correo de manera automática. Esto no
     funciona si la usuaria no tiene todavía ningún correo, por lo que
     debe proporcionarle a Dovecot la ruta completa.

     Si usa mbox, proporcionar una ruta al archivo de la bandeja entrada
     “INBOX” (por ejemplo ‘/var/mail/%u’) no es suficiente. También debe
     proporcionarle a Dovecot la ruta de otras bandejas de correo. Este
     es el llamado _directorio de correo raíz_, y debe ser la primera
     ruta proporcionada en la opción ‘mail-location’.

     Existen algunas variables especiales que puede usar, por ejemplo:

     ‘%u’
          nombre de usuaria
     ‘%n’
          parte de la usuaria en usuaria@dominio, idéntica a %u si no
          existe dominio
     ‘%d’
          parte del dominio en usuaria@dominio, vacía si no existe
          dominio
     ‘%h’
          directorio de la usuaria

     Véase doc/wiki/Variables.txt para obtener una lista completa.
     Algunos ejemplos:
     ‘maildir:~/Correo’
     ‘mbox:~/correo:INBOX=/var/mail/%u’
     ‘mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%’
     El valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string mail-uid
     Usuaria del sistema y grupo que realizan el acceso al correo. Si se
     usan varias, userdb puede forzar su valor al devolver campos uid o
     gid. Se pueden usar tanto identificadores numéricos como nominales.
     <doc/wiki/UserIds.txt>. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string mail-gid

     El valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string mail-privileged-group
     Grupo para permitir de forma temporal operaciones privilegiadas.
     Actualmente esto se usa únicamente con la bandeja de entrada
     (INBOX), cuando su creación inicial o el bloqueo con archivo
     ‘.lock’ falle. Habitualmente se le proporciona el valor ‘"mail"’
     para tener acceso a ‘/var/mail’. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string mail-access-groups
     Proporciona acceso a estos grupos suplementarios a los procesos de
     correo. Habitualmente se usan para configurar el acceso a bandejas
     de correo compartidas. Tenga en cuenta que puede ser peligroso
     establecerlos si las usuarias pueden crear enlaces simbólicos (por
     ejemplo si se configura el grupo ‘mail’ aquí, ‘ln -s /var/mail
     ~/mail/var’ puede permitir a una usuaria borrar las bandejas de
     correo de otras usuarias, o ‘ln -s /bandeja/compartida/secreta
     ~/mail/mibandeja’ permitiría su lectura). Su valor predeterminado
     es ‘""’.

 -- parámetro de ‘dovecot-configuration’: boolean
          mail-full-filesystem-access?
     Allow full file system access to clients. There’s no access checks
     other than what the operating system does for the active UID/GID.
     It works with both maildir and mboxes, allowing you to prefix
     mailboxes names with e.g. ‘/path/’ or ‘~user/’. Defaults to ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean mmap-disable?
     No usa ‘mmap()’ en absoluto. Es necesario si almacena índices en
     sistemas de archivos compartidos (NFS o sistemas de archivos en
     cluster). Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean dotlock-use-excl?
     Confía en el correcto funcionamiento de ‘O_EXCL’ para la creación
     de archivos de bloqueo dotlock. NFS implementa ‘O_EXCL’ desde la
     versión 3, por lo que debería ser seguro usarlo hoy en día de
     manera predeterminada. Su valor predeterminado es ‘#t’.

 -- parámetro de ‘dovecot-configuration’: string mail-fsync
     Cuando se usarán las llamadas fsync() o fdatasync():
     ‘optimized’
          Cuando sea necesario para evitar la perdida de datos
          importantes
     ‘always’
          Útil con, por ejemplo, NFS, donde las escrituras con ‘write()’
          se aplazan
     ‘never’
          Nunca se usa (mejor rendimiento, pero los fallos pueden
          producir pérdida de datos)
     Su valor predeterminado es ‘"optimized"’.

 -- parámetro de ‘dovecot-configuration’: boolean mail-nfs-storage?
     Mail storage exists in NFS. Set this to yes to make Dovecot flush
     NFS caches whenever needed. If you’re using only a single mail
     server this isn’t needed. Defaults to ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean mail-nfs-index?
     Mail index files also exist in NFS. Setting this to yes requires
     ‘mmap-disable? #t’ and ‘fsync-disable? #f’. Defaults to ‘#f’.

 -- parámetro de ‘dovecot-configuration’: string lock-method
     Método de bloqueo para los archivos de índice. Las alternativas son
     fcntl, flock y dotlock. Dotlock utiliza técnicas que pueden
     provocar un consumo de E/S mayor que otros métodos de bloqueo.
     Usuarias de NFS: flock no funciona, recuerde que se debe cambiar
     ‘mmap-disable’. Su valor predeterminado es ‘"fcntl"’.

 -- parámetro de ‘dovecot-configuration’: nombre-archivo mail-temp-dir
     Directorio en el que LDA/LMTP almacena de manera temporal correos
     entrantes de de más de 128 kB. Su valor predeterminado es ‘"/tmp"’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          first-valid-uid
     Rango de UID aceptado para las usuarias. Principalmente es para
     asegurarse de que las usuarias no pueden ingresar en el sistema
     como un daemon u otras usuarias del sistema. Tenga en cuenta que el
     binario de dovecot tiene código que impide el ingreso al sistema
     como root y no puede llevarse a cabo incluso aunque
     ‘first-valid-uid’ tenga el valor 0. Su valor predeterminado es
     ‘500’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          last-valid-uid

     El valor predeterminado es ‘0’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          first-valid-gid
     Rango de GID aceptado para las usuarias. Las usuarias que no posean
     GID válido como ID primario de grupo no tienen permitido el ingreso
     al sistema. Si la usuaria es miembro de grupos suplementarios con
     GID no válido, no se activan dichos grupos. Su valor predeterminado
     es ‘1’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          last-valid-gid

     El valor predeterminado es ‘0’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          mail-max-keyword-length
     Longitud máxima permitida para nombres de palabras clave del
     correo. El límite actúa únicamente en la creación de nuevas
     palabras clave. Su valor predeterminado es ‘50’.

 -- parámetro de ‘dovecot-configuration’: lista-archivos-sep-dos-puntos
          valid-chroot-dirs
     Lista de directorios bajo los que se permite realizar la llamada al
     sistema chroot a procesos de correo (es decir, ‘/var/mail’
     permitiría realizar la llamada también en
     ‘/var/mail/sub/directorio’). Esta configuración no afecta a la
     configuración de ‘login-chroot’, ‘mail-chroot’ o la de chroot para
     identificación. En caso de estar vacía, se ignora ‘"/./"’ en los
     directorios de usuarias. AVISO: Nunca añada directorios que las
     usuarias locales puedan modificar, puesto que podría permitir
     vulnerar el control de acceso como “root”. Habitualmente esta
     opción se activa únicamente si no permite a las usuarias acceder a
     un intérprete de órdenes. <doc/wiki/Chrooting.txt>. Su valor
     predeterminado es ‘()’.

 -- parámetro de ‘dovecot-configuration’: string mail-chroot
     Directorio predeterminado de la llamada al sistema chroot para los
     procesos de correo. El valor puede forzarse para usuarias
     específicas en la base de datos proporcionando ‘/./’ en el
     directorio de la usuaria (por ejemplo, ‘/home/./usuaria’ llama a
     chroot con ‘/home’). Tenga en cuenta que habitualmente no es
     necesario llamar a chroot, Dovecot no permite a las usuarias el
     acceso a archivos más allá de su directorio de correo en cualquier
     caso. Si sus directorios de usuaria contienen el directorio de
     chroot como prefijo, agregue ‘/.’ al final de ‘mail-chroot’.
     <doc/wiki/Chrooting.txt>. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: nombre-archivo
          auth-socket-path
     Ruta al socket de UNIX al servidor maestro de identificación para
     la búsqueda de usuarias. Se usa por parte de imap (para usuarias
     compartidas) y lda. Su valor predeterminado es
     ‘"/var/run/dovecot/auth-userdb"’.

 -- parámetro de ‘dovecot-configuration’: nombre-archivo mail-plugin-dir
     Directorio en el que se buscarán módulos de correo. Su valor
     predeterminado es ‘"/usr/lib/dovecot"’.

 -- parámetro de ‘dovecot-configuration’: lista-cadena-separada-espacios
          mail-plugins
     Lista de módulos cargados en todos los servicios. Los módulos
     específicos para IMAP, LDA, etc. se añaden en esta lista en sus
     propios archivos .conf. Su valor predeterminado es ‘()’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          mail-cache-min-mail-count
     El número mínimo de correos en una bandeja antes de que las
     actualizaciones se realicen en un archivo de caché. Permite
     optimizar el comportamiento de Dovecot para reducir la tasa de
     escritura en el disco, lo que produce un aumento de la tasa de
     lectura. Su valor predeterminado es ‘0’.

 -- parámetro de ‘dovecot-configuration’: string
          mailbox-idle-check-interval
     Cuando se ejecute la orden IDLE, la bandeja de correo se comprueba
     de vez en cuando para comprobar si existen nuevos correos o se han
     producido otros cambios. Esta configuración define el tiempo mínimo
     entre dichas comprobaciones. Dovecot también puede usar dnotify,
     inotify y kqueue para recibir información inmediata sobre los
     cambios que ocurran. Su valor predeterminado es ‘"30 secs"’.

 -- parámetro de ‘dovecot-configuration’: boolean mail-save-crlf?
     Save mails with CR+LF instead of plain LF. This makes sending those
     mails take less CPU, especially with sendfile() syscall with Linux
     and FreeBSD. But it also creates a bit more disk I/O which may just
     make it slower. Also note that if other software reads the
     mboxes/maildirs, they may handle the extra CRs wrong and cause
     problems. Defaults to ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean maildir-stat-dirs?
     De manera predeterminada la orden LIST devuelve todas las entradas
     en maildir cuyo nombre empiece en punto. La activación de esta
     opción hace que Dovecot únicamente devuelva las entradas que sean
     directorios. Esto se lleva a cabo llamando a stat() con cada
     entrada, lo que causa mayor E/S del disco. (En sistemas que
     proporcionen valor a ‘dirent->d_type’ esta comprobación no tiene
     coste alguno y se realiza siempre independientemente del valor
     configurado aquí). Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean
          maildir-copy-with-hardlinks?
     Cuando se copia un mensaje, se usan enlaces duros cuando sea
     posible. Esto mejora mucho el rendimiento, y es difícil que
     produzca algún efecto secundario. Su valor predeterminado es ‘#t’.

 -- parámetro de ‘dovecot-configuration’: boolean
          maildir-very-dirty-syncs?
     Asume que Dovecot es el único MUA que accede a maildir: Recorre el
     directorio cur/ únicamente cuando cambie su mtime de manera
     inesperada o cuando no se pueda encontrar el correo de otra manera.
     Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: lista-cadena-separada-espacios
          mbox-read-locks
     Qué métodos de bloqueo deben usarse para el bloque de mbox. Hay
     cuatro disponibles:

     ‘dotlock’
          Crea un archivo <bandeja>.lock. Esta es la solución más
          antigua y más segura con NFS. Si desea usar un directorio como
          /var/mail/, las usuarias necesitarán acceso de escritura a
          dicho directorio.
     ‘dotlock-try’
          Lo mismo que dotlock, pero si se produce un fallo debido a los
          permisos o a que no existe suficiente espacio en disco,
          simplemente se omite el bloqueo.
     ‘fcntl’
          Use este a ser posible. Funciona también con NFS si se usa
          lockd.
     ‘flock’
          Puede no existir en todos los sistemas. No funciona con NFS.
     ‘lockf’
          Puede no existir en todos los sistemas. No funciona con NFS.

     Puede usar múltiples métodos de bloqueo; en ese caso el orden en el
     que se declaran es importante para evitar situaciones de bloqueo
     mutuo en caso de que otros MTA/MUA usen también múltiples métodos
     de bloqueo. Algunos sistemas operativos no permiten el uso de
     varios de ellos de manera simultánea.

 -- parámetro de ‘dovecot-configuration’: lista-cadena-separada-espacios
          mbox-write-locks

 -- parámetro de ‘dovecot-configuration’: string mbox-lock-timeout
     Tiempo máximo esperado hasta el bloqueo (de todos los archivos)
     antes de interrumpir la operación. Su valor predeterminado es ‘"5
     mins"’.

 -- parámetro de ‘dovecot-configuration’: string
          mbox-dotlock-change-timeout
     Si existe el archivo dotlock pero la bandeja no se ha modificado de
     ninguna manera, ignora el archivo de bloqueo tras este tiempo. Su
     valor predeterminado es ‘"2 mins"’.

 -- parámetro de ‘dovecot-configuration’: boolean mbox-dirty-syncs?
     Cuando el archivo mbox cambie de manera inesperada, se tiene que
     leer completamente para encontrar los cambios. Si es grande puede
     tardar bastante tiempo. Deido a que el cambio habitualmente es un
     nuevo correo añadido al final, sería más rápido únicamente leer los
     correos nuevos. Si se activa esta opción, Dovecot hace esto pero de
     todos modos vuelve a leer el archivo mbox al completo cuando algo
     en la bandeja no se encuentra como se esperaba. La única desventaja
     real de esta configuración es que si otro MUA cambia las opciones
     de los mensajes, Dovecot no tiene constancia de ello de manera
     inmediata. Tenga en cuenta que una sincronización completa se lleva
     a cabo con las órdenes SELECT, EXAMINE, EXPUNGE y CHECK. Su valor
     predeterminado es ‘#t’.

 -- parámetro de ‘dovecot-configuration’: boolean mbox-very-dirty-syncs?
     Como ‘mbox-dirty-syncs’, pero no realiza sincronizaciones completas
     tampoco con las órdenes SELECT, EXAMINE, EXPUNGE o CHECK. Si se
     configura este valor, ‘mbox-dirty-syncs’ se ignora. Su valor
     predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean mbox-lazy-writes?
     Retrasa la escritura de las cabeceras de mbox hasta que se realice
     una escritura completa sincronizada (con las órdenes EXPUNGE y
     CHECK, y al cerrar la bandeja de correo). Es útil especialmente con
     POP3, donde el cliente habitualmente borra todos los correos. La
     desventaja es que nuestros cambios no son visibles para otros MUA
     de manera inmediata. Su valor predeterminado es ‘#t’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          mbox-min-index-size
     Si el tamaño del archivo mbox es menor que este valor (por ejemplo,
     100k), no escribe archivos de índice. Si el archivo de índice ya
     existe, todavía se usa para la lectura, pero no se actualiza. Su
     valor predeterminado es ‘0’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          mdbox-rotate-size
     Tamaño máximo del archivo dbox hasta su rotación. Su valor
     predeterminado es ‘10000000’.

 -- parámetro de ‘dovecot-configuration’: string mdbox-rotate-interval
     Antigüedad máxima del archivo dbox hasta que se produce su
     rotación. Habitualmente en días. El día comienza a medianoche, por
     lo que 1d = hoy, 2d = ayer, etcétera. 0 = comprobación desactivada.
     Su valor predeterminado es ‘"1d"’.

 -- parámetro de ‘dovecot-configuration’: boolean
          mdbox-preallocate-space?
     Cuando se crean nuevos archivos mdbox, reserva inmediatamente un
     tamaño de ‘mbox-rotate-size’. Actualmente esta configuración
     funciona únicamente en Linux con determinados sistemas de archivos
     (ext4, xfs). Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: string mail-attachment-dir
     sdbox y mdbox permiten el almacenamiento de adjuntos en archivos
     externos, lo que permite también su almacenamiento único. Otros
     motores no lo permiten por el momento.

     AVISO: Esta característica todavía no se ha probado mucho. Su uso
     queda bajo su propia responsabilidad.

     Directorio raíz donde almacenar los adjuntos de los correos. Se
     desactiva en caso de estar vacío. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          mail-attachment-min-size
     Los adjuntos de menor tamaño que este valor no se almacenan
     externamente. También es posible la escritura de un módulo que
     deshabilite el almacenamiento externo de adjuntos específicos. Su
     valor predeterminado es ‘128000’.

 -- parámetro de ‘dovecot-configuration’: string mail-attachment-fs
     Motor del sistema de archivos usado para el almacenamiento de
     adjuntos:
     ‘posix’
          Dovecot no lleva a cabo el SiS (aunque esto puede ayudar a la
          deduplicación del propio sistema de archivos)
     ‘sis posix’
          SiS con comparación inmediata byte-por-byte durante el
          almacenamiento.
     ‘sis-queue posix’
          SiS mediante comparación retrasada y deduplicación.
     El valor predeterminado es ‘"sis posix"’.

 -- parámetro de ‘dovecot-configuration’: string mail-attachment-hash
     Formato del hash usado en los archivos adjuntos. Puede añadir
     cualquier texto y variables: ‘%{md4}’, ‘%{md5}’, ‘%{sha1}’,
     ‘%{sha256}’, ‘%{sha512}’, ‘%{size}’. Las variables pueden
     reducirse, por ejemplo ‘%{sha256:80}’ devuelve únicamente los
     primeros 80 bits. Su valor predeterminado es ‘"%{sha1}"’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          default-process-limit

     El valor predeterminado es ‘100’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          default-client-limit

     El valor predeterminado es ‘1000’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          default-vsz-limit
     Límite predeterminado del tamaño de memoria virtual (VSZ) para
     procesos del servicio. Esta principalmente orientado a la captura y
     parada de procesos que pierden memoria antes de que utilicen toda
     la disponible. Su valor predeterminado es ‘256000000’.

 -- parámetro de ‘dovecot-configuration’: string default-login-user
     Usuaria de ingreso al sistema para los procesos de ingreso al
     sistema. Es la usuaria en la que menos se confía en el sistema
     Dovecot. No debería tener acceso a nada en absoluto. Su valor
     predeterminado es ‘"dovenull"’.

 -- parámetro de ‘dovecot-configuration’: string default-internal-user
     Usuaria interna usada por procesos sin privilegios. Debería ser
     distinta a la usuaria de ingreso, de modo que los procesos de
     ingreso al sistema no interfieran con otros procesos. Su valor
     predeterminado es ‘"dovecot"’.

 -- parámetro de ‘dovecot-configuration’: string ssl?
     Si se permite SSL/TLS: ‘yes’ (sí), ‘no’, ‘required’ (necesario).
     <doc/wiki/SSL.txt>. Su valor predeterminado es ‘"required"’.

 -- parámetro de ‘dovecot-configuration’: string ssl-cert
     Certificado X.509 de SSL/TLS codificado con PEM (clave pública). Su
     valor predeterminado es ‘"</etc/dovecot/default.pem"’.

 -- parámetro de ‘dovecot-configuration’: string ssl-key
     Clave privada de SSL/TLS codificada con PEM. La clave se abre antes
     de renunciar a los privilegios de root, por lo que debe mantenerse
     legible únicamente para root. Su valor predeterminado es
     ‘"</etc/dovecot/private/default.pem"’.

 -- parámetro de ‘dovecot-configuration’: string ssl-key-password
     Si el archivo de la clave está protegido por contraseña, introduzca
     dicha contraseña aquí. De manera alternativa, puede proporcionarla
     al iniciar dovecot con el parámetro -p. Como este archivo es
     habitualmente legible por todo el mundo, puede que desee desplazar
     esta opción a un archivo diferente. Su valor predeterminado es
     ‘""’.

 -- parámetro de ‘dovecot-configuration’: string ssl-ca
     Certificado usado como autoridad de certificación de confianza
     codificado en PEM. Configure este valor únicamente si tiene
     intención de usar ‘ssl-verify-client-cert? #t’. El archivo debe
     contener el archivo de la o las AC seguido de las CRL
     correspondientes (por ejemplo, ‘ssl-ca </etc/ssl/certs/ca.pem’). Su
     valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: boolean ssl-require-crl?
     Es necesario que la comprobación de CRL sea satisfactoria para
     certificados de clientes.. Su valor predeterminado es ‘#t’.

 -- parámetro de ‘dovecot-configuration’: boolean
          ssl-verify-client-cert?
     Solicita al cliente el envío de un certificado. Si también desea
     que sea un requisito, proporcione ‘auth-ssl-require-client-cert?
     #t’ en la sección de identificación. Su valor predeterminado es
     ‘#f’.

 -- parámetro de ‘dovecot-configuration’: string ssl-cert-username-field
     Cual es el campo del certificado que determina el nombre de
     usuaria. “commonName” y “x500UniqueIdentifier” son las opciones
     habituales. También tendrá proporcionar
     ‘auth-ssl-username-from-cert? #t’. Su valor predeterminado es
     ‘"commonName"’.

 -- parámetro de ‘dovecot-configuration’: string ssl-min-protocol
     Versión mínima aceptada del protocolo SSL. Su valor predeterminado
     es ‘"TLSv1"’.

 -- parámetro de ‘dovecot-configuration’: string ssl-cipher-list
     Protocolos de cifrado de SSL usados. Su valor predeterminado es
     ‘"ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH"’.

 -- parámetro de ‘dovecot-configuration’: string ssl-crypto-device
     Dispositivo de cifrado de SSL usado, ejecute "openssl engine" para
     obtener los valores aceptados. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string postmaster-address
     Dirección usada cuando se notifiquen correos rechazados. %d expande
     al dominio receptor. Su valor predeterminado es ‘"postmaster@%d"’.

 -- parámetro de ‘dovecot-configuration’: string hostname
     Nombre de máquina usado en diversas partes de los correos enviados
     (por ejemplo, en Message-Id) y en las respuestas LMTP. Su valor
     predeterminado es <el nombre real de la máquina>@dominio. Su valor
     predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: boolean quota-full-tempfail?
     Si la usuaria supera la cuota, devuelve un fallo temporal en vez de
     rechazar el correo. Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: nombre-archivo sendmail-path
     Binario usado para el envío de correos. Su valor predeterminado es
     ‘"/usr/sbin/sendmail"’.

 -- parámetro de ‘dovecot-configuration’: string submission-host
     Si no está vacío, envía el correo a través de esta máquina[:puerto]
     SMTP en vez de usar sendmail Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string rejection-subject
     Asunto: cabecera usada en el rechazo de correos. Puede usar las
     mismas variables que las indicadas en ‘rejection-reason’ a
     continuación. Su valor predeterminado es ‘"Rejected: %s"’.

 -- parámetro de ‘dovecot-configuration’: string rejection-reason
     Mensaje de error legible por personas para el rechazo de correos.
     Puede usar variables:

     ‘%n’
          CRLF
     ‘%r’
          razón
     ‘%s’
          asunto original
     ‘%t’
          receptora
     El valor predeterminado es ‘"Your message to <%t> was automatically
     rejected:%n%r"’.

 -- parámetro de ‘dovecot-configuration’: string recipient-delimiter
     Carácter delimitador entre la parte local y el detalle en las
     direcciones de correo. Su valor predeterminado es ‘"+"’.

 -- parámetro de ‘dovecot-configuration’: string
          lda-original-recipient-header
     Cabecera de donde se obtiene la dirección receptora original (la
     dirección de SMTP RCPT TO:) en caso de no estar disponible en otro
     lugar. El parámetro -a de dovecot-lda reemplaza este valor. Una
     cabecera usada para esto de manera común es X-Original-To. Su valor
     predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: boolean
          lda-mailbox-autocreate?
     ¿Se debe crear una bandeja de correo no existente de manera
     automática al almacenar un correo? Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: boolean
          lda-mailbox-autosubscribe?
     ¿También Se deben crear suscripciones de manera automática a las
     bandejas de correo creadas? Su valor predeterminado es ‘#f’.

 -- parámetro de ‘dovecot-configuration’: entero-no-negativo
          imap-max-line-length
     Longitud máxima de la línea de órdenes de IMAP. Algunos clientes
     generan líneas de órdenes muy largas con bandejas de correo
     enormes, por lo que debe incrementarlo si recibe los errores “Too
     long argument” (parámetro demasiado largo) o "IMAP command line too
     large" (línea de órdenes de IMAP demasiado grande). Su valor
     predeterminado es ‘64000’.

 -- parámetro de ‘dovecot-configuration’: string imap-logout-format
     Formato de la cadena de IMAP de salida del sistema:
     ‘%i’
          número total de bytes leídos del cliente
     ‘%o’
          número total de bytes enviados al cliente.
     Véase ‘doc/wiki/Variables.txt’ para obtener una lista completa de
     todas las variables que puede usar. Su valor predeterminado es
     ‘"in=%i out=%o deleted=%{deleted} expunged=%{expunged}
     trashed=%{trashed} hdr_count=%{fetch_hdr_count}
     hdr_bytes=%{fetch_hdr_bytes} body_count=%{fetch_body_count}
     body_bytes=%{fetch_body_bytes}"’.

 -- parámetro de ‘dovecot-configuration’: string imap-capability
     Fuerza el valor de la respuesta de IMAP CAPABILITY. Si el valor
     comienza con ’+’, añade las capacidades especificadas sobre las
     predeterminadas (por ejemplo, +XFOO XBAR). Su valor predeterminado
     es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string
          imap-idle-notify-interval
     Durante cuanto tiempo se espera entre notificaciones "OK Still
     here" cuando el cliente se encuentre en estado IDLE. Su valor
     predeterminado es ‘"2 mins"’.

 -- parámetro de ‘dovecot-configuration’: string imap-id-send
     Nombres y valores de campos de identificación (ID) que se enviarán
     a los clientes. El uso de * como un valor hace que Dovecot utilice
     el valor predeterminado. Los siguientes campos tienen actualmente
     valores predeterminados: name, version, os, os-version,
     support-url, support-email. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: string imap-id-log
     Campos de identificación (ID) enviados para su registro por
     cliente. ‘*’ significa todos. Su valor predeterminado es ‘""’.

 -- parámetro de ‘dovecot-configuration’: lista-cadena-separada-espacios
          imap-client-workarounds
     Soluciones temporales para varios errores de clientes:

     ‘delay-newmail’
          Envía notificaciones de nuevo correo EXISTS/RECENT únicamente
          en respuesta a ordenes NOOP o CHECK. Algunos clientes las
          ignoran en otro caso, por ejemplo OSX Mail (<v2.1). Outlook
          Express tiene problemas mayores no obstante, sin esto puede
          mostrar a la usuaria errores "Message no longer in server".
          Tenga en cuenta que OE6 también falla con esta solución
          temporal si la sincronización se establece como "Headers
          Only".

     ‘tb-extra-mailbox-sep’
          Thunderbird se confunde de algún modo con LAYOUT=fs (mbox y
          dbox) y añade sufijos ‘/’ adicionales a los nombres de las
          bandejas de correo. Esta opción hace que Dovecot ignore el
          carácter ‘/’ adicional en vez de tratarlo como un nombre de
          bandeja de correo no válido.

     ‘tb-lsub-flags’
          Muestra las opciones \Noselect para respuestas LSUB con
          LAYOUT=fs (por ejemplo mbox). Esto permite a Thunderbird ser
          consciente de que no se pueden seleccionar y mostrarlas en
          gris, en vez de únicamente mostrar después el mensaje de error
          "no seleccionable".
     El valor predeterminado es ‘()’.

 -- parámetro de ‘dovecot-configuration’: string imap-urlauth-host
     Máquina permitida en las URL URLAUTH enviadas por el cliente. "*"
     permite todas. Su valor predeterminado es ‘""’.

   ¡Miau! Muchas opciones de configuración. Lo bueno es que Guix tiene
una interfaz completa al lenguage de configuración de Dovecot. Esto no
permite únicamente declarar configuraciones de forma bonita, sino que
también ofrece capacidades reflexivas: las usuarias pueden escribir
código en Scheme para inspeccionar y transformar configuraciones.

   No obstante, puede ser que únicamente desee usar un archivo
‘dovecot.conf’ existente. En ese caso, puede proporcionar un objeto
‘opaque-dovecot-configuration’ como parámetro ‘#:config’ a
‘dovecot-service’. Como su nombre en inglés indica, una configuración
opaca no tiene gran capacidad reflexiva.

   Los campos disponibles de ‘opaque-dovecot-configuration’ son:

 -- parámetro de ‘opaque-dovecot-configuration’: package dovecot
     El paquete dovecot.

 -- parámetro de ‘opaque-dovecot-configuration’: string string
     El contenido de ‘dovecot.conf’, como una cadena.

   Por ejemplo, si su ‘dovecot.conf’ fuese simplemente la cadena vacía,
podría instanciar un servicio dovecot de esta manera:

     (dovecot-service #:config
                      (opaque-dovecot-configuration
                       (string "")))

Servicio OpenSMTPD
..................

 -- Variable Scheme: opensmtpd-service-type
     Es el tipo del servicio OpenSMTPD (https://www.opensmtpd.org), cuyo
     valor debe ser un objeto ‘opensmtpd-configuration’ como en este
     ejemplo:

          (service opensmtpd-service-type
                   (opensmtpd-configuration
                     (config-file (local-file "./mi-smtpd.conf"))))

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

     ‘package’ (predeterminado: OPENSMTPD)
          El objeto paquete del servidor SMTP OpenSMTPD.

     ‘config-file’ (predeterminado: ‘%default-opensmtpd-file’)
          Objeto “tipo-archivo” del archivo de configuración de
          OpenSMTPD usado. De manera predeterminada escucha en la
          interfaz de red local, y pone a disposición de usuarias y
          daemon de la máquina local el servicio de correo, así como el
          envío de correo a servidores remotos. Ejecute ‘man smtpd.conf’
          para obtener más información.

Servicio Exim
.............

 -- Variable Scheme: exim-service-type
     Este es el tipo del agente de transferencia de correo (MTA) Exim
     (https://exim.org), cuyo valor debe ser un objeto
     ‘exim-configuration’ como en este ejemplo:

          (service exim-service-type
                   (exim-configuration
                     (config-file (local-file "./mi-exim.conf"))))

   Para usar un servicio ‘exim-service-type’ debe tener también un
servicio ‘mail-aliases-service-type’ presente en su declaración
‘operating-system’ (incluso aunque no exista ningún alias).

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

     ‘package’ (predeterminado: EXIM)
          El objeto paquete del servidor Exim.

     ‘config-file’ (predeterminado: ‘#f’)
          File-like object of the Exim configuration file to use. If its
          value is ‘#f’ then use the default configuration file from the
          package provided in ‘package’. The resulting configuration
          file is loaded after setting the ‘exim_user’ and ‘exim_group’
          configuration variables.

Servicio Getmail
................

 -- Variable Scheme: getmail-service-type
     El tipo del receptor de correo Getmail
     (http://pyropus.ca/software/getmail/), cuyo valor debe ser un
     objeto ‘getmail-configuration’.

   Los campos disponibles de ‘getmail-configuration’ son:

 -- parámetro de ‘getmail-configuration’: símbolo name
     Un símbolo que identifique el servicio getmail.

     El valor predeterminado es ‘"unset"’.

 -- parámetro de ‘getmail-configuration’: package package
     El paquete getmail usado.

 -- parámetro de ‘getmail-configuration’: string user
     Usuaria que ejecuta getmail.

     El valor predeterminado es ‘"getmail"’.

 -- parámetro de ‘getmail-configuration’: string group
     Grupo que ejecuta getmail.

     El valor predeterminado es ‘"getmail"’.

 -- parámetro de ‘getmail-configuration’: string directory
     El directorio usado para getmail.

     El valor predeterminado es ‘"/var/lib/getmail/default"’.

 -- parámetro de ‘getmail-configuration’: getmail-configuration-file
          rcfile
     El archivo de configuración de getmail usado.

     Los campos disponibles de ‘getmail-configuration-file’ son:

      -- parámetro de ‘getmail-configuration-file’:
               getmail-retriever-configuration retriever
          De qué cuenta de correo obtener el correo, y cómo acceder a
          dicha cuenta.

          Los campos disponibles de ‘getmail-retriever-configuration’
          son:

           -- parámetro de ‘getmail-retriever-configuration’: string
                    type
               El controlador que userdb debe usar. Entre los valores
               aceptados se incluye ‘passwd’ y ‘static’.

               El valor predeterminado es ‘"SimpleIMAPSSLRetriever"’.

           -- parámetro de ‘getmail-retriever-configuration’: string
                    server
               Usuaria que ejecutará el servidor de correo.

               El valor predeterminado es ‘unset’.

           -- parámetro de ‘getmail-retriever-configuration’: string
                    username
               Usuaria que ejecutará el servidor de correo.

               El valor predeterminado es ‘unset’.

           -- parámetro de ‘getmail-retriever-configuration’:
                    entero-no-negativo port
               Número de puerto al que conectarse.

               El valor predeterminado es ‘#f’

           -- parámetro de ‘getmail-retriever-configuration’: string
                    password
               Sustituye los valores de campos de passwd.

               El valor predeterminado es ‘""’.

           -- parámetro de ‘getmail-retriever-configuration’: list
                    password-command
               Sustituye los valores de campos de passwd.

               El valor predeterminado es ‘()’.

           -- parámetro de ‘getmail-retriever-configuration’: string
                    keyfile
               Archivo de claves con formato PEM usado para la
               negociación TLS.

               El valor predeterminado es ‘""’.

           -- parámetro de ‘getmail-retriever-configuration’: string
                    certfile
               Archivo de certificado con formato PEM usado para la
               negociación TLS.

               El valor predeterminado es ‘""’.

           -- parámetro de ‘getmail-retriever-configuration’: string
                    ca-certs
               Certificados de autoridad de certificación (CA) usados.

               El valor predeterminado es ‘""’.

           -- parámetro de ‘getmail-retriever-configuration’:
                    parameter-alist extra-parameters
               Parámetros adicionales del receptor de correo.

               El valor predeterminado es ‘()’.

      -- parámetro de ‘getmail-configuration-file’:
               getmail-destination-configuration destination
          Qué hacer con los mensajes obtenidos.

          Los campos disponibles de ‘getmail-destination-configuration’
          son:

           -- parámetro de ‘getmail-destination-configuration’: string
                    type
               Tipo de destino del correo. Entre los valores válidos se
               incluye ‘Maildir’, ‘Mboxrd’ y ‘MDA_external’.

               El valor predeterminado es ‘unset’.

           -- parámetro de ‘getmail-destination-configuration’:
                    string-or-filelike path
               Opción de ruta para el destino del correo. El
               comportamiento depende del tipo seleccionado.

               El valor predeterminado es ‘""’.

           -- parámetro de ‘getmail-destination-configuration’:
                    parameter-alist extra-parameters
               Parámetros adicionales del destino.

               El valor predeterminado es ‘()’.

      -- parámetro de ‘getmail-configuration-file’:
               getmail-options-configuration options
          Configuración de getmail.

          Los campos disponibles de ‘getmail-options-configuration’ son:

           -- parámetro de ‘getmail-options-configuration’:
                    entero-no-negativo verbose
               Si tiene valor ‘0’, getmail únicamente imprimirá mensajes
               de aviso y errores. El valor ‘1’ significa que se
               imprimirán mensajes acerca de la recepción y el borrado
               de mensajes. Si tiene valor ‘2’, getmail imprimirá
               mensajes con cada una de sus acciones.

               El valor predeterminado es ‘1’.

           -- parámetro de ‘getmail-options-configuration’: boolean
                    read-all
               Si es verdadero, getmail obtendrá todos los mensajes
               disponibles. En otro caso, únicamente recupera mensajes
               que no se hayan visto previamente.

               El valor predeterminado es ‘#t’

           -- parámetro de ‘getmail-options-configuration’: boolean
                    delete
               Si se proporciona un valor verdadero, los mensajes se
               borrarán del servidor tras su recuperación y entrega
               posterior satisfactoria. En otro caso, los mensajes
               permanecerán en el servidor.

               El valor predeterminado es ‘#f’

           -- parámetro de ‘getmail-options-configuration’:
                    entero-no-negativo delete-after
               Getmail borrará los mensajes tras este número de días
               después de haberlos visto, si han sido entregados. Esto
               significa que los mensajes se mantendrán en el servidor
               este número de días tras entregarlos. El valor ‘0’
               desactiva esta característica.

               El valor predeterminado es ‘0’.

           -- parámetro de ‘getmail-options-configuration’:
                    entero-no-negativo delete-bigger-than
               Borra los mensajes de tamaño mayor que estos bytes tras
               recibirlos, incluso si las opciones “delete” y
               “delete-after” están desactivadas. El valor ‘0’ desactiva
               esta característica.

               El valor predeterminado es ‘0’.

           -- parámetro de ‘getmail-options-configuration’:
                    entero-no-negativo max-bytes-per-session
               Obtiene mensajes hasta este número de bytes en total
               antes de cerrar la sesión con el servidor. El valor ‘0’
               desactiva esta característica.

               El valor predeterminado es ‘0’.

           -- parámetro de ‘getmail-options-configuration’:
                    entero-no-negativo max-message-size
               No obtiene mensajes con mayor tamaño que este número de
               bytes. El valor ‘0’ desactiva esta característica.

               El valor predeterminado es ‘0’.

           -- parámetro de ‘getmail-options-configuration’: boolean
                    delivered-to
               Si es verdadero, getmail añadirá una cabecera
               “Delivered-To” a los mensajes.

               El valor predeterminado es ‘#t’

           -- parámetro de ‘getmail-options-configuration’: boolean
                    received
               Si es verdadero, getmail añadirá una cabecera “Received”
               a los mensajes.

               El valor predeterminado es ‘#t’

           -- parámetro de ‘getmail-options-configuration’: string
                    message-log
               Getmail generará un registro de sus acciones en el
               archivo nombrado. El valor ‘""’ desactiva esta
               característica.

               El valor predeterminado es ‘""’.

           -- parámetro de ‘getmail-options-configuration’: boolean
                    message-log-syslog
               Si es verdadero, getmail registrará sus acciones a través
               del registro del sistema.

               El valor predeterminado es ‘#f’

           -- parámetro de ‘getmail-options-configuration’: boolean
                    message-log-verbose
               Si es verdadero, getmail registrará información sobre los
               mensajes que no se hayan podido recuperar y la razón para
               no hacerlo, así como líneas de inicio y fin informativas.

               El valor predeterminado es ‘#f’

           -- parámetro de ‘getmail-options-configuration’:
                    parameter-alist extra-parameters
               Opciones adicionales a incluir.

               El valor predeterminado es ‘()’.

 -- parámetro de ‘getmail-configuration’: lista idle
     Una lista de bandejas de correo en las que getmail debe esperar en
     el servidor nuevas notificaciones de correo. Esto depende de que el
     servidor implemente la extensión IDLE.

     El valor predeterminado es ‘()’.

 -- parámetro de ‘getmail-configuration’: lista environment-variables
     Variables de entorno proporcionadas a getmail.

     El valor predeterminado es ‘()’.

Servicios de alias de correo
............................

 -- Variable Scheme: mail-aliases-service-type
     Este es el tipo del servicio que proporciona ‘/etc/aliases’, donde
     se especifica cómo entregar el correo a las usuarias de este
     sistema.

          (service mail-aliases-service-type
                   '(("postmaster" "rober")
                     ("rober" "rober@example.com" "rober@example2.com")))

   The configuration for a ‘mail-aliases-service-type’ service is an
association list denoting how to deliver mail that comes to this system.
Each entry is of the form ‘(alias addresses ...)’, with ‘alias’
specifying the local alias and ‘addresses’ specifying where to deliver
this user’s mail.

   The aliases aren’t required to exist as users on the local system. In
the above example, there doesn’t need to be a ‘postmaster’ entry in the
‘operating-system’’s ‘user-accounts’ in order to deliver the
‘postmaster’ mail to ‘bob’ (which subsequently would deliver mail to
‘bob@example.com’ and ‘bob@example2.com’).

daemon de IMAP3 de GNU Mailutils
................................

 -- Variable Scheme: imap4d-service-type
     Es el tipo del daemon IMAP4 de GNU Mailutils (*note
     (mailutils)imap4d::), cuyo valor debe ser un objeto
     ‘imap4d-configuration’ como en este ejemplo:

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

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

     ‘package’ (predeterminado: ‘mailutils’)
          El paquete que proporciona ‘imap4d’.

     ‘config-file’ (predeterminado: ‘%default-imap4d-config-file’)
          Objeto “tipo-archivo” con el archivo de configuración usado,
          de manera predeterminada escucha en el puerto TCP 143 de
          ‘localhost’. *Note (mailutils)Conf-imap4d::, para más
          detalles.

Radicale Service
................

 -- Scheme Variable: radicale-service-type
     This is the type of the Radicale (https://radicale.org)
     CalDAV/CardDAV server whose value should be a
     ‘radicale-configuration’.

 -- Data Type: radicale-configuration
     Data type representing the configuration of ‘radicale’.

     ‘package’ (default: ‘radicale’)
          The package that provides ‘radicale’.

     ‘config-file’ (default: ‘%default-radicale-config-file’)
          File-like object of the configuration file to use, by default
          it will listen on TCP port 5232 of ‘localhost’ and use the
          ‘htpasswd’ file at ‘/var/lib/radicale/users’ with no (‘plain’)
          encryption.

