Next: , Up: Servicios   [Contents][Index]


11.10.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: %base-services

Esta variable contiene una lista de servicios básicos (see 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:

Variable: special-files-service-type

El servicio que establece “archivos especiales” como /bin/sh; una instancia suya es parte de %base-services.

The value associated with special-files-service-type services must be a list of two-element lists where the first element is the “special file” and the second element is its target. By default it is:

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

If you want to add, say, /bin/bash to your system, you can change it to:

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

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

Procedimiento: 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"))

This procedure is meant for /bin/sh, /usr/bin/env and similar targets. In particular, use for targets under /etc might not work as expected if the target is managed by Guix in other ways.

Variable: host-name-service-type

Type of the service that sets the system host name, whose value is a string. This service is included in operating-system by default (see essential-services).

Variable: 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
Variable: hosts-service-type

Type of the service that populates the entries for (/etc/hosts). This service type can be extended by passing it a list of host records.

The example below shows how to add two entries to /etc/hosts:

(simple-service 'add-extra-hosts
                hosts-service-type
                (list (host "192.0.2.1" "example.com"
                            '("example.net" "example.org"))
                      (host "2001:db8::1" "example.com"
                            '("example.net" "example.org"))))

Nota: By default /etc/hosts comes with the following entries:

127.0.0.1 localhost host-name
::1       localhost host-name

For most setups this is what you want though if you find yourself in the situation where you want to change the default entries, you can do so in operating-system via modify-services (see modify-services).

The following example shows how to unset host-name from being an alias of localhost.

(operating-system
  ;; …

  (essential-services
   (modify-services
     (operating-system-default-essential-services this-operating-system)
     (hosts-service-type config => (list
                                     (host "127.0.0.1" "localhost")
                                     (host "::1"       "localhost"))))))
Procedure: host address canonical-name [aliases]

Return a new record for the host at address with the given canonical-name and possibly aliases.

address must be a string denoting a valid IPv4 or IPv6 address, and canonical-name and the strings listed in aliases must be valid host names.

Variable: login-service-type

Type of the service that provides a console login service, whose value is a <login-configuration> object.

Tipo de datos: login-configuration

Data type representing the configuration of login, which specifies the MOTD (message of the day), among other things.

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.

Variable: mingetty-service-type

Type of the service that runs Mingetty, an implementation of the virtual console log-in. The value for this service is a <mingetty-configuration> object.

Tipo de datos: mingetty-configuration

Data type representing the configuration of Mingetty, which specifies the tty to run, among other things.

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.

Variable: agetty-service-type

Type of the service that runs agetty, which implements virtual and serial console log-in. The value for this service is a <agetty-configuration> object.

Tipo de datos: agetty-configuration

Data type representing the configuration of agetty, which specifies the tty to run, among other things37.

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.

shepherd-requirement (default: '())

The option can be used to provides extra shepherd requirements (for example 'syslogd) to the respective 'term-* shepherd service.

Variable: kmscon-service-type

Type of the service that runs kmscon, which implements virtual console log-in. The value for this service is a <kmscon-configuration> object.

Tipo de datos: kmscon-configuration

Data type representing the configuration of Kmscon, which specifies the tty to run, among other things.

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.

keyboard-layout (predeterminada: #f)

If this is #f, Kmscon uses the default keyboard layout—usually US English (“qwerty”) for a 105-key PC keyboard.

Otherwise this must be a keyboard-layout object specifying the keyboard layout. See Distribución de teclado, for more information on how to specify the keyboard layout.

kmscon (predeterminado: kmscon)

El paquete Kmscon usado.

Variable: nscd-service-type

Type of the service that runs the libc nscd (name service cache daemon), whose value is an <nscd-configuration> object.

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

Tipo de datos: nscd-configuration

Data type representing the nscd (name service cache daemon) configuration.

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: #f)

Name of the nscd log file. Debugging output goes to that file when debug-level is strictly positive, or to standard error if it is #f. Regular messages are written to syslog when debug-level is zero, regardless of the value of log-file.

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 (see NSS Basics in The GNU C Library Reference Manual).

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

Variable: syslog-service-type

Type of the service that runs the syslog daemon, whose value is a <syslog-configuration> object.

To have a modified syslog-configuration come into effect after reconfiguring your system, the ‘reload’ action should be preferred to restarting the service, as many services such as the login manager depend on it and would be restarted as well:

# herd reload syslog

which will cause the running syslogd process to reload its configuration.

Tipo de datos: syslog-configuration

Data type representing the configuration of the syslog daemon.

syslogd (predeterminado: #~(string-append #$inetutils "/libexec/syslogd"))

El daemon syslog usado.

config-file (predeterminado: %default-syslog.conf)

The syslog configuration file to use. See syslogd invocation in GNU Inetutils, for more information on the configuration file syntax.

Variable: guix-service-type

El tipo de servicio que ejecuta el daemon de construcción, guix-daemon (see 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. See Invocación de guix-daemon, para más información.

guix (predeterminado: guix)

The Guix package to use. See Customizing the System-Wide Guix to learn how to provide a package with a pre-configured set of channels.

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)

Whether to authorize the substitute keys listed in authorized-keys—by default that of bordeaux.guix.gnu.org and ci.guix.gnu.org (see 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)

The list of authorized key files for archive imports, as a list of string-valued gexps (see Invocación de guix archive). By default, it contains that of bordeaux.guix.gnu.org and ci.guix.gnu.org (see Sustituciones). See substitute-urls below for an example on how to change it.

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.

Suppose you would like to fetch substitutes from guix.example.org in addition to bordeaux.guix.gnu.org. You will need to do two things: (1) add guix.example.org to substitute-urls, and (2) authorize its signing key, having done appropriate checks (see Autorización de servidores de sustituciones). The configuration below does exactly that:

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

generate-substitute-key? (default: #t)

Whether to generate a substitute key pair under /etc/guix/signing-key.pub and /etc/guix/signing-key.sec if there is not already one.

This key pair is used when exporting store items, for instance with guix publish (see Invocación de guix publish) or guix archive (see Invocación de guix archive). Generating a key pair takes a few seconds when enough entropy is available and is only done once; you might want to turn it off for instance in a virtual machine that does not need it and where the extra boot time is a problem.

channels (default: #f)

List of channels to be specified in /etc/guix/channels.scm, which is what guix pull uses by default (see Invocación de guix pull).

Nota: When reconfiguring a system, the existing /etc/guix/channels.scm file is backed up as /etc/guix/channels.scm.bak if it was determined to be a manually modified file. This is to facilitate migration from earlier versions, which allowed for in-place modifications to /etc/guix/channels.scm.

max-silent-time (default: 3600)
timeout (default: (* 3600 24))

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 (default: 'gzip)

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.

build-machines (default: #f)

This field must be either #f or a list of gexps evaluating to a build-machine record or to a list of build-machine records (see Uso de la facilidad de delegación de trabajo).

When it is #f, the /etc/guix/machines.scm file is left untouched. Otherwise, the list of of gexps is written to /etc/guix/machines.scm; if a previously-existing file is found, it is backed up as /etc/guix/machines.scm.bak. This allows you to declare build machines for offloading directly in the operating system declaration, like so:

(guix-configuration
  (build-machines
    (list #~(build-machine (name "foo.example.org") )
          #~(build-machine (name "bar.example.org") ))))

Additional build machines may be added via the guix-extension mechanism (see below).

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.

environment (default: '())

Environment variables to be set before starting the daemon, as a list of key=value strings.

socket-directory-permissions (default: #o755)

Permissions to set for the directory /var/guix/daemon-socket. This, together with socket-directory-group and socket-directory-user, determines who can connect to the build daemon via its Unix socket. TCP socket operation is unaffected by these.

socket-directory-user (default: #f)
socket-directory-group (default: #f)

User and group owning the /var/guix/daemon-socket directory or #f to keep the user or group as root.

Data Type: guix-extension

This data type represents the parameters of the Guix build daemon that are extendable. This is the type of the object that must be used within a guix service extension. See Composición de servicios, for more information.

authorized-keys (predeterminadas: '())

A list of file-like objects where each element contains a public key.

substitute-urls (default: '())

A list of strings where each element is a substitute URL.

build-machines (default: '())

A list of gexps that evaluate to build-machine records or to a list of build-machine records. (see Uso de la facilidad de delegación de trabajo).

Using this field, a service may add new build machines to receive builds offloaded by the daemon. This is useful for a service such as hurd-vm-service-type, which can make a GNU/Hurd virtual machine directly usable for offloading (see hurd-vm-service-type).

chroot-directories (default: '())

A list of file-like objects or strings pointing to additional directories the build daemon can use.

Variable: udev-service-type

Type of the service that runs udev, a service which populates the /dev directory dynamically, whose value is a <udev-configuration> object.

Since the file names for udev rules and hardware description files matter, the configuration items for rules and hardware cannot simply be plain file-like objects with the rules content, because the name would be ignored. Instead, they are directory file-like objects that contain optional rules in lib/udev/rules.d and optional hardware files in lib/udev/hwdb.d. This way, the service can be configured with whole packages from which to take rules and hwdb files.

The udev-service-type can be extended with file-like directories that respect this hierarchy. For convenience, the udev-rule and file->udev-rule can be used to construct udev rules, while udev-hardware and file->udev-hardware can be used to construct hardware description files.

In an operating-system declaration, this service type can be extended using procedures udev-rules-service and udev-hardware-service.

Data Type: udev-configuration

Data type representing the configuration of udev.

udev (default: eudev) (type: file-like)

Package object of the udev service. This package is used at run-time, when compiled for the target system. In order to generate the hwdb.bin hardware index, it is also used when generating the system definition, compiled for the current system.

rules (default: ’()) (type: list-of-file-like)

List of file-like objects denoting udev rule files under a sub-directory.

hardware (default: ’()) (type: list-of-file-like)

List of file-like objects denoting udev hardware description files under a sub-directory.

Procedimiento: 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\"")))
Procedure: udev-hardware file-name contents

Return a udev hardware description file named file-name containing the hardware information contents.

Procedure: udev-rules-service name rules [#:groups '()]

Return a service that extends udev-service-type with rules and account-service-type with groups as system groups. This works by creating a singleton service type name-udev-rules, of which the returned service is an instance.

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)))
Procedure: udev-hardware-service name hardware

Return a service that extends udev-service-type with hardware. The service name is name-udev-hardware.

Procedimiento: file->udev-rule nombre-archivo archivo

Return a udev-rule file named file-name containing the rules defined within file, a file-like object.

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

Since guix package definitions can be included in rules in order to use all their rules under the lib/udev/rules.d sub-directory, then in lieu of the previous file->udev-rule example, we could have used the android-udev-rules package which exists in Guix in the (gnu packages android) module.

Procedure: file->udev-hardware file-name file

Return a udev hardware description file named file-name containing the rules defined within file, a file-like object.

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: 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: %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: 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. See Command Line in gpm manual, para más información.

gpm (predeterminado: gpm)

El paquete GPM usado.

Variable: guix-publish-service-type

Este es el tipo de servicio para guix publish (see 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 (see 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. See 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”. See --nar-path, 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. See --cache, 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. See --workers, 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. See --cache-bypass-threshold para obtener más información.

ttl (predeterminado: #f)

Cuando es un entero, denota el tiempo de vida en segundos de los archivos publicados. See --ttl, para más información.

negative-ttl (default: #f)

When it is an integer, this denotes the time-to-live in seconds for the negative lookups. See --negative-ttl, for more information.

Variable: rngd-service-type

Type of the service that runs rng-tools rngd, whose value is an <rngd-configuration> object.

Data Type: rngd-configuration

Data type representing the configuration of rngd.

rng-tools (default: rng-tools) (type: file-like)

Package object of the rng-tools rngd.

device (default: "/dev/hwrng") (type: string)

Path of the device to add to the kernel’s entropy pool. The service will fail if device does not exist.

Variable: pam-limits-service-type

Type of the service that installs a configuration file for the pam_limits module. The value for this service type is a list of pam-limits-entry values, which can be used to specify ulimit limits and nice priority limits to user sessions. By default, the value is the empty list.

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:

(service pam-limits-service-type
         (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:

(service pam-limits-service-type
         (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.

Variable: greetd-service-type

greetd is a minimal and flexible login manager daemon, that makes no assumptions about what you want to launch.

If you can run it from your shell in a TTY, greetd can start it. If it can be taught to speak a simple JSON-based IPC protocol, then it can be a geeter.

greetd-service-type provides necessary infrastructure for logging in users, including:

  • greetd PAM service
  • Special variation of pam-mount to mount XDG_RUNTIME_DIR

Here is an example of switching from mingetty-service-type to greetd-service-type, and how different terminals could be:

  (append
   (modify-services %base-services
     ;; greetd-service-type provides "greetd" PAM service
     (delete login-service-type)
     ;; and can be used in place of mingetty-service-type
     (delete mingetty-service-type))
   (list
    (service greetd-service-type
             (greetd-configuration
              (terminals
               (list
                ;; we can make any terminal active by default
                (greetd-terminal-configuration (terminal-vt "1") (terminal-switch #t))
                ;; we can make environment without XDG_RUNTIME_DIR set
                ;; even provide our own environment variables
                (greetd-terminal-configuration
                 (terminal-vt "2")
                 (default-session-command
                   (greetd-agreety-session
                    (extra-env '(("MY_VAR" . "1")))
                    (xdg-env? #f))))
                ;; we can use different shell instead of default bash
                (greetd-terminal-configuration
                 (terminal-vt "3")
                 (default-session-command
                   (greetd-agreety-session (command (file-append zsh "/bin/zsh")))))
                ;; we can use any other executable command as greeter
                (greetd-terminal-configuration
                 (terminal-vt "4")
                 (default-session-command (program-file "my-noop-greeter" #~(exit))))
                (greetd-terminal-configuration (terminal-vt "5"))
                (greetd-terminal-configuration (terminal-vt "6"))))))
    ;; mingetty-service-type can be used in parallel
    ;; if needed to do so, do not (delete login-service-type)
    ;; as illustrated above
    #| (service mingetty-service-type (mingetty-configuration (tty "tty8"))) |#))
Data Type: greetd-configuration

Configuration record for the greetd-service-type.

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.

terminals (default: '())

List of greetd-terminal-configuration per terminal for which greetd should be started.

greeter-supplementary-groups (default: '())

List of groups which should be added to greeter user. For instance:

(greeter-supplementary-groups '("seat" "video"))

Note that this example will fail if seat group does not exist.

Data Type: greetd-terminal-configuration

Configuration record for per terminal greetd daemon service.

greetd (default: greetd)

The greetd package to use.

config-file-name

Configuration file name to use for greetd daemon. Generally, autogenerated derivation based on terminal-vt value.

log-file-name

Log file name to use for greetd daemon. Generally, autogenerated name based on terminal-vt value.

terminal-vt (default: ‘"7"’)

The VT to run on. Use of a specific VT with appropriate conflict avoidance is recommended.

terminal-switch (default: #f)

Make this terminal active on start of greetd.

source-profile? (default: #t)

Whether to source /etc/profile and ~/.profile, when they exist.

default-session-user (default: ‘"greeter"’)

The user to use for running the greeter.

default-session-command (default: (greetd-agreety-session))

Can be either instance of greetd-agreety-session configuration or gexp->script like object to use as greeter.

Data Type: greetd-agreety-session

Configuration record for the agreety greetd greeter.

agreety (default: greetd)

The package with /bin/agreety command.

command (default: (file-append bash "/bin/bash"))

Command to be started by /bin/agreety on successful login.

command-args (default: '("-l"))

Command arguments to pass to command.

extra-env (default: '())

Extra environment variables to set on login.

xdg-env? (default: #t)

If true XDG_RUNTIME_DIR and XDG_SESSION_TYPE will be set before starting command. One should note that, extra-env variables are set right after mentioned variables, so that they can be overridden.

Data Type: greetd-wlgreet-session

Generic configuration record for the wlgreet greetd greeter.

wlgreet (default: wlgreet)

The package with the /bin/wlgreet command.

command (default: (file-append sway "/bin/sway"))

Command to be started by /bin/wlgreet on successful login.

command-args (default: '())

Command arguments to pass to command.

output-mode (default: "all")

Option to use for outputMode in the TOML configuration file.

scale (default: 1)

Option to use for scale in the TOML configuration file.

background (default: '(0 0 0 0.9))

RGBA list to use as the background colour of the login prompt.

headline (default: '(1 1 1 1))

RGBA list to use as the headline colour of the UI popup.

prompt (default: '(1 1 1 1))

RGBA list to use as the prompt colour of the UI popup.

prompt-error (default: '(1 1 1 1))

RGBA list to use as the error colour of the UI popup.

border (default: '(1 1 1 1))

RGBA list to use as the border colour of the UI popup.

extra-env (default: '())

Extra environment variables to set on login.

Data Type: greetd-wlgreet-sway-session

Sway-specific configuration record for the wlgreet greetd greeter.

wlgreet-session (default: (greetd-wlgreet-session))

A greetd-wlgreet-session record for generic wlgreet configuration, on top of the Sway-specific greetd-wlgreet-sway-session.

sway (default: sway)

The package providing the /bin/sway command.

sway-configuration (default: #f)

File-like object providing an additional Sway configuration file to be prepended to the mandatory part of the configuration.

Here is an example of a greetd configuration that uses wlgreet and Sway:

  (greetd-configuration
   ;; We need to give the greeter user these permissions, otherwise
   ;; Sway will crash on launch.
   (greeter-supplementary-groups (list "video" "input" "seat"))
   (terminals
    (list (greetd-terminal-configuration
           (terminal-vt "1")
           (terminal-switch #t)
           (default-session-command
            (greetd-wlgreet-sway-session
             (sway-configuration
              (local-file "sway-greetd.conf"))))))))

Footnotes

(37)

See the agetty(8) man page for more information.


Next: Ejecución de tareas programadas, Up: Servicios   [Contents][Index]