Suivant: , Monter: Services   [Table des matières][Index]


11.10.1 Services de base

Le module (gnu services base) fournit des définitions de services pour les services de base qu’on peut attendre du système. Les services exportés par ce module sort listés ci-dessous.

Variable :%base-services

Cette variable contient une liste de services de base (voir Types service et services, pour plus d’informations sur les objets service) qu’on peut attendre du système : un service de connexion (mingetty) sur chaque tty, syslogd, le démon de cache de noms de la libc (nscd), le gestionnaire de périphériques udev, et plus.

C’est la valeur par défaut du champ services des déclarations operating-system. Habituellement, lors de la personnalisation d’un système, vous voudrez ajouter des services à ceux de %base-services, comme ceci :

Variable :special-files-service-type

C’est le service qui met en place des « fichiers spéciaux » comme /bin/sh ; une instance de ce service fait partie 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")))

Si vous voulez ajouter, disons, /bin/bash à votre système, vous pouvez changer cela en :

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

Comme cela fait partie de %base-services, vous pouvez utiliser modify-services pour personnaliser l’ensemble des fichiers spéciaux (voir modify-services). Mais la manière la plus simple d’ajouter un fichier spécial est via la procédure extra-special-file (voir ci-dessous).

Procédure :extra-special-file file target

Utilise target comme « fichier spécial » file.

Par exemple, ajouter l’une des lignes suivantes au champ services de votre déclaration de système d’exploitation crée un lien symbolique /usr/bin/env :

(extra-special-file "/usr/bin/env"
                    (file-append coreutils "/bin/env"))
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 (voir essential-services).

Variable :console-font-service-type

Installez les polices données sur les ttys spécifiés (les polices sont par console virtuelle sur le noyau Linux). La valeur de ce service est une liste de paires tty/polices. La police peut être le nom d’une police fournie par le paquet kbd ou tout argument valide de setfont, comme dans cet exemple :

`(("tty1" . "LatGrkCyr-8x16")
  ("tty2" . ,(file-append
                font-tamzen
                "/share/kbd/consolefonts/TamzenForPowerline10x20.psf"))
  ("tty3" . ,(file-append
                font-terminus
                "/share/consolefonts/ter-132n"))) ; pour 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"))))

Remarque : 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 (voir 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.

Type de données :login-configuration

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

motd

Un objet simili-fichier contenant le « message du jour ».

allow-empty-passwords? (par défaut : #t)

Permet les mots de passes vides par défaut pour que les utilisateurs puissent se connecter au compte « root » la première fois après sa création.

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.

Type de données :mingetty-configuration

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

tty

Le nom de la console sur laquelle tourne ce Mingetty, p. ex. "tty1".

auto-login (par défaut : #f)

Lorsque la valeur est vraie, ce champ doit être une chaîne de caractère dénotant le nom d’utilisateur pour lequel le système se connecte automatiquement. Lorsque la valeur est #f, il faut entrer un nom d’utilisateur et un mot de passe pour se connecter.

login-program (par défaut : #f)

Ce doit être soit #f, auquel cas le programme de connexion par défaut est utilisé (login de la suite d’outils Shadow), soit une gexp dénotant le nom d’un programme de connexion.

login-pause? (par défaut : #f)

Lorsque la valeur est #t en plus de auto-login, l’utilisateur devrai appuyer sur une touche avant que le shell de connexion ne soit lancé.

clear-on-logout? (par défaut : #t)

Lorsque la valeur est #t, l’écran sera nettoyé après la déconnexion.

mingetty (par défaut : mingetty)

Le paquet Mingetty à utiliser.

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.

Type de données :agetty-configuration

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

tty

Le nom de la console sur laquelle cet agetty fonctionne, sous forme de chaîne de caractères, par exemple "ttyS0". Cet argument est optionnel, il sera par défaut un port série raisonnable par défaut utilisé par le noyau Linux.

Pour cela, s’il y a une valeur pour une option agetty.tty sur la ligne de commande du noyau, agetty extraira le nom du périphérique du port série à partir de cette option.

Sinon et s’il y a une valeur pour une option console avec un tty sur la ligne de commande du noyau Linux, agetty extraira le nom du périphérique du port série et l’utilisera.

Dans les deux cas, agetty laissera les autres paramètres du périphérique série (baud, etc.) sans y toucher — dans l’espoir que Linux leur a assigné les bonnes valeurs.

baud-rate (par défaut : #f)

Une chaîne qui contient une liste d’un ou plusieurs taux de baud séparés par des virgules, en ordre décroissant.

term (par défaut : #f)

Une chaîne de caractères contenant la valeur utilisée pour la variable d’environnement TERM.

eight-bits? (par défaut : #f)

Lorsque la valeur est #t, le tty est supposé être propre pour les caractères 8-bit et la détection de parité est désactivée.

auto-login (par défaut : #f)

Lorsqu’un nom de connexion est passé comme une chaîne de caractères, l’utilisateur spécifié sera automatiquement connecté sans demande du nom d’utilisateur ni du mot de passe.

no-reset? (par défaut : #f)

Lorsque la valeur est #t, ne vide pas les cflags du terminal (modes de contrôle).

host (par défaut : #f)

Ceci accepte une chaîne de caractères contenant le "login_host", qui sera écrite dans le fichier /var/run/utmpx.

remote? (par défaut : #f)

Lorsque la valeur est #t en plus de host, cette option ajoutera une option fakehost -r à la ligne de commande du programme de connexion spécifié dans login-program.

flow-control? (par défaut : #f)

Lorsque la valeur est #t, active le contrôle de flux matériel (RTS/CTS).

no-issue? (par défaut : #f)

Lorsque la valeur est #t, le contenu du fichier /etc/issue ne sera pas affiché avant de présenter l’écran de connexion.

init-string (par défaut : #f)

Cette option accepte une chaîne de caractères qui sera envoyée au tty ou au modem avant toute autre chose. Elle peut être utilisée pour initialiser un modem.

no-clear? (par défaut : #f)

Lorsque la valeur est #t, agetty ne nettoiera pas l’écran avant de montrer l’écran de connexion.

login-program (par défaut : (file-append shadow "/bin/login"))

Cette option doit être soit une gexp dénotant le nom d’un programme de connexion, soit non définie, auquel cas la valeur par défaut est la commande login de la suite d’outils Shadow.

local-line (par défaut : #f)

Contrôle le drapeau CLOCAL. Cette option accepte l’un des trois symboles comme argument, 'auto, 'always ou 'never. Si la valeur est #f, la valeur par défaut choisie par agetty est 'auto.

extract-baud? (par défaut : #f)

Lorsque la valeur est #t, dit à agetty d’essayer d’extraire la taux de baud depuis les messages de statut produits par certains modems.

skip-login? (par défaut : #f)

Lorsque la valeur est #t, ne demande par de nom d’utilisateur. Elle peut être utilisée avec le champ login-program pour utiliser des systèmes de connexion non standards.

no-newline? (par défaut : #f)

Lorsque la valeur est #t, n’affiche pas de retour à la ligne avant d’afficher le fichier /etc/issue.

login-options (par défaut : #f)

Cette option accepte une chaîne de caractères contenant des options passées au programme login. Lorsqu’utilisé avec login-program, soyez conscient qu’un utilisateur malicieux pourrait essayer de rentrer un nom d’utilisateur contenant des options incluses qui pourraient être analysées par le programme de connexion.

login-pause (par défaut : #f)

Lorsque la valeur est #t, attend qu’une touche soit appuyée avant de montrer l’écran de connexion. Cela peut être utilisé avec auto-login pour sauvegarder de la mémoire en lançant les shells de manière fainéante.

chroot (par défaut : #f)

Change de racine dans le répertoire donné. Cette option accepte un chemin en tant que chaîne de caractères.

hangup? (par défaut : #f)

Utilise l’appel système Linux vhangup pour raccrocher virtuellement le terminal spécifié.

keep-baud? (par défaut : #f)

Lorsque la valeur est #t, essaye de garder le taux de baud existant. Les taux de baud de baud-rate sont utilisés lorsque agetty reçoit un caractères BREAK.

timeout (par défaut : #f)

Lorsque la valeur est un nombre entier, termine la session si aucun nom d’utilisateur n’a pu être lu après timeout secondes.

detect-case? (par défaut : #f)

Lorsque la valeur est #t, active le support pour la détection des terminaux en majuscule uniquement. Ce paramètre détectera qu’un nom d’utilisateur qui ne contient que des majuscules indique un terminal en majuscule et effectuera des conversion de majuscule en minuscule. Remarquez que cela ne fonctionne pas avec les caractères unicode.

wait-cr? (par défaut : #f)

Lorsque la valeur est #t, attend que l’utilisateur ou le modem envoie un retour chariot ou un saut de ligne avant d’afficher /etc/issue ou l’écran de connexion. Cela est typiquement utilisé avec l’option init-string.

no-hints? (par défaut : #f)

Lorsque la valeur est #t, n’affiche par les astuces à propos des verrouillages numériques, majuscule et défilement.

no-hostname? (par défaut : #f)

Par défaut, le nom d’hôte est affiché. Lorsque la valeur est #t, aucun nom d’hôte ne sera affiché.

long-hostname? (par défaut : #f)

Par défaut, le nom d’hôte n’est affiché qu’après le premier point. Lorsque la valeur est #t, le nom d’hôte pleinement qualifié renvoyé par gethostname ou getaddrinfo sera affiché.

erase-characters (par défaut : #f)

Cette option accepte une chaîne de caractères de caractères supplémentaires qui devraient être interprétés comme des effacements lorsque l’utilisateur les tape dans leur nom d’utilisateur.

kill-characters (par défaut : #f)

Cette option accepte une chaîne de caractères qui devrait être interprétée comme signifiant « ignore tous les caractères précédents » (aussi appelé un caractère « kill ») lorsque l’utilisateur·rice tape son nom d’utilisateur·rice.

chdir (par défaut : #f)

Cette option accepte, en tant que chaîne de caractères, un chemin vers un répertoire dans lequel se trouvera la commande avant la connexion.

delay (par défaut : #f)

Cette option accepte, en tant qu’entier, le nombre de secondes à attendre avant d’ouvrir le tty et afficher l’écran de connexion.

nice (par défaut : #f)

Cette option accepte, en tant qu’entier, la valeur « nice » avec laquelle le programme login tourne.

extra-options (par défaut : '())

Cette option fournit un « mécanisme de secours » pour que l’utilisateur·rice puisse ajouter des arguments arbitraires en ligne de commande à agetty comme une liste de chaînes de caractères.

rshepherd-equirement (par défaut : '())

L’option peut être utilisée pour fournir des prérequis shepherd supplémentaires (par exemple 'syslogd) aux services shepherd 'term-* correspondants.

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.

Type de données :kmscon-configuration

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

virtual-terminal

Le nom de la console sur laquelle Kmscon tourne, p. ex. "tty1".

login-program (par défaut : #~(string-append #$shadow "/bin/login"))

Une gexp qui dénote le nom d’un programme de connexion. le programme de connexion par défaut est login de la suite d’outils Shadow.

login-arguments (par défaut : '("-p"))

Une liste d’arguments à passer à login.

auto-login (par défaut : #f)

Lorsqu’un nom de connexion est passé comme une chaîne de caractères, l’utilisateur spécifié sera automatiquement connecté sans demande du nom d’utilisateur ni du mot de passe.

hardware-acceleration? (par défaut : #f)

S’il faut utiliser l’accélération matérielle.

font-engine (par défaut : "pango")

Moteur de polices utilisé dans Kmscon.

font-size (par défaut : 12)

Taille de police utilisée par Kmscon.

keyboard-layout (par défaut : #f)

Si la valeur est #f, Kmscon utilise la disposition du clavier par défaut — habituellement la disposition anglaise américaine (« qwerty ») pour un clavier de PC à 105 touches.

Sinon cela doit être un objet keyboard-layout spécifiant la disposition du clavier. Voir Disposition du clavier pour plus d’informations sur la manière de spécifier la disposition du clavier.

kmscon (par défaut : kmscon)

Le paquet Kmscon à utiliser.

Variable :nscd-service-type

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

Parce que c’est pratique, le service du Shepherd pour nscd fournit les actions suivantes :

invalidate

Cela invalide le cache donné. Par exemple, en laçant :

herd invalidate nscd hosts

on invalide le cache de noms d’hôtes de nscd.

statistiques

Lancer herd statistics nscd affiche des informations sur l’utilisation de nscd et des caches.

Type de données :nscd-configuration

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

name-services (par défaut : '())

Liste des paquets dénotant des services de noms qui doivent être visible pour nscd, p. ex. (list nss-mdns).

glibc (par défaut : glibc)

Objet de paquet qui dénote la Bibliothèque C de GNU qui fournit la commande nscd.

log-file (par défaut : "/var/log/nscd.log")

Nom du fichier journal de nscd. C’est là que les sorties de débogage sont envoyée lorsque debug-level est strictement positif.

debug-level (par défaut : 0)

Entier qui dénote le niveau de débogage. Les entiers les plus grands signifient plus de sortie de débogage.

caches (par défaut : %nscd-default-caches)

Liste d’objets <nscd-cache> qui dénotent des choses à mettre en cache ; voir plus bas.

Type de données :nscd-cache

Type de données représentant une base de données de cache de nscd et ses paramètres.

database

C’est un symbole qui représente le nom de la base de donnée à mettre en cache. Les valeurs valide sont passwd, group, hosts et services qui désignent les bases de données NSS correspondantes (voir NSS Basics dans The GNU C Library Reference Manual).

positive-time-to-live
negative-time-to-live (par défaut : 20)

Un entier qui représente le nombre de secondes pendant lesquelles un résultat positif ou négatif reste en cache.

check-files? (par défaut : #t)

Indique s’il faut vérifier des mises à jours dans les fichiers correspondant à database.

Par exemple, lorsque database est hosts, ce drapeau indique à nscd de vérifier s’il y a des mises à jour de /etc/hosts et de les prendre en compte.

persistent? (par défaut : #t)

Indique si le cache devrait être stocké de manière persistante sur le disque.

shared? (par défaut : #t)

Indique si le cache devrait être partagé entre les utilisateurs.

max-database-size (par défaut : 32 MiB)

Taille maximale en octets de la base de données en cache.

Variable :%nscd-default-caches

Liste d’objets <nscd-cache> utilisés par défaut par nscd-configuration (voir plus haut).

Elle active la mise en cache persistante et agressive des recherches de services et de noms d’hôtes. Ces derniers fournissent une recherche de noms d’hôtes plus performante, résiliente face à des serveurs de noms peu fiables et une protection de votre vie privée plus efficace — souvent le résultat des recherches de noms d’hôtes sont dans le cache local, donc les serveurs de nom externes n’ont même pas besoin d’être questionnés.

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.

Type de données :syslog-configuration

Data type representing the configuration of the syslog daemon.

syslogd (par défaut : #~(string-append #$inetutils "/libexec/syslogd"))

Le démon syslog à utiliser.

config-file (par défaut : %default-syslog.conf)

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

Variable :guix-service-type

C’est le type de service qui lance le démon de construction, guix-daemon (voir Invoquer guix-daemon). Sa valeur doit être un enregistrement guix-configuration décrit plus bas.

Type de données :guix-configuration

Ce type de données représente la configuration du démon de construction de Guix. Voir Invoquer guix-daemon pour plus d’informations.

guix (par défaut : guix)

Le paquet Guix à utiliser.

build-group (par défaut : "guixbuild")

Nom du groupe des comptes utilisateurs de construction.

build-accounts (par défaut : 10)

Nombre de comptes utilisateurs de construction à créer.

authorize-key? (par défaut : #t)

Indique s’il faut autoriser ou non les clefs de substituts listées dans authorize-keys — par défaut celle de ci.guix.gnu.org et bordeaux.guix.gnu.org (voir Substituts).

Lorsque authorize-key? est vrai, /etc/guix/acl ne peut pas être changé en invoquant guix archive --authorize. vous devez plutôt ajuster guix-configuration comme vous le souhaitez et reconfigurer le système. Cela s’assure que le fichier de configuration de votre système est auto-contenu.

Remarque : Au démarrage ou la reconfiguration d’un système où authorize-key? est vrai, le fichier /etc/guix/acl existant est sauvegardé dans /etc/guix/acl.bak s’il est déterminé qu’il a été modifié manuellement. Cela facilite la migration à partir de versions précédentes, qui permettaient des modifications en-place de /etc/guix/acl.

authorized-keys (par défaut : %default-authorized-guix-keys)

La liste des fichiers des fichiers de clés autorisées pour les imports d’archives, en tant que liste de gexps sous forme de chaines (voir Invoquer guix archive). Par défaut, elle contient celle de ci.guix.gnu.org et bordeaux.guix.gnu.org (voir Substituts). Voir substitute-urls ci-dessous pour apprendre comment la changer.

use-substitutes? (par défaut : #t)

S’il faut utiliser les substituts.

substitute-urls (par défaut : %default-substitute-urls)

La liste des URL où trouver des substituts par défaut.

Supposons que vous vouliez récupérer des substituts à partir de guix.example.org en plus de ci.guix.gnu.org. Vous devrez faire deux choses : (1) ajouter guix.example.org à substitute-urls, et (2) autoriser sa clé de signature, après avoir effectué les vérifications adéquates (voir Autoriser un serveur de substituts). La configuration ci-dessous fait exactement cela :

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

Cet exemple suppose que le fichier ./guix.example.org-key.pub contient la clé publique que guix.example.org utilise pour signer les substituts.

generate-substitute-keys? (par défaut : #t)

Indique s’il faut générer une paire de clés de substituts dans /etc/guix/signing-key.pub et /etc/guix/signing-key.sec si elle n’existe pas déjà.

Cette paire de clés est utilisée pour exporter les éléments du dépôt, par exemple avec guix publish (voir Invoquer guix publish) ou guix archive (voir Invoquer guix archive). Générer une paire de clés prend quelques secondes quand il y a assez d’entropie disponible et n’est fait qu’une seule fois ; vous pouvez la désactiver par exemple dans une machine virtuelle qui n’en pas besoin et où le temps de démarrage supplémentaire peut être problématique.

channels (par défaut : %default-channels)

List of channels to be specified in /etc/guix/channels.scm, which is what guix pull uses by default (voir Invoquer guix pull).

Remarque : 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))

Le nombre de secondes de silence et le nombre de secondes d’inactivité, respectivement, après lesquelles un processus de construction son délai d’attente. Une valeur de zéro désactive le délai d’attente.

log-compression (par défaut : 'gzip)

Le type de compression utilisé par les journaux de construction — parmi gzip, bzip2 et none.

discover? (par défaut : #f)

Indique s’il faut découvrir les serveurs de substitut sur le réseau local avec mDNS et 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 (voir Utiliser le dispositif de déchargement).

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 (par défaut : '())

Liste d’options supplémentaires de la ligne de commande pour guix-daemon.

log-file (par défaut : "/var/log/guix-daemon.log")

Le fichier où les sorties standard et d’erreur de guix-daemon sont écrites.

http-proxy (par défaut : #f)

L’URL du proxy HTTP et HTTPS utilisé pour le téléchargement des dérivés et substituts à sortie fixe.

Il est également possible de changer le proxy du démon au moment de l’exécution grâce à l’action set-http-proxy, qui le redémarre :

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

Pour effacer les paramètres du proxy, exécutez :

herd set-http-proxy guix-daemon
tmpdir (par défaut : #f)

Un répertoire où guix-daemon effectuera ses constructions.

environment (par défaut : '())

Les variables d’environnement à configurer avant de démarrer le démon, en tant que liste de chaines clé=valeur.

Type de données :guix-extension

Ce type de données représente les paramètres du démon de construction de Guix qui peuvent être étendus. C’est le type d’objet qui doit être utilisé dans une extension du service guix. Voir Composition de services, pour plus d’informations.

authorized-keys (par défaut : '())

Une liste d’objets simili-fichiers où chaque élément contient une clé publique.

substitute-urls (par défaut : '())

Une liste de chaines où chaque élément est l’URL d’un serveur de substituts.

build-machines (default: '())

A list of gexps that evaluate to build-machine records or to a list of build-machine records. (voir Utiliser le dispositif de déchargement).

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 (voir hurd-vm-service-type).

chroot-directories (par défaut : '())

Une liste d’objets simili-fichiers ou de chaines pointant vers des répertoires supplémentaires que le démon de construction peut utiliser.

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.

This service type can be extended using procedures udev-rules-service along with file->udev-rule or udev-rule which simplify the process of writing udev rules.

Data Type :udev-configuration

Data type representing the configuration of udev.

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

Package object of the udev service.

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

List of file-like objects denoting udev-rule files.

Procédure :udev-rule file-name contents

Renvoie un fichier de règle udev nommé file-name contenant les règles définie par le littéral contents.

Dans l’exemple suivant, on définie une règle pour un périphérique USB qui sera stockée dans le fichier 90-usb-thing.rules. La règle lance un script à la détection du périphérique USB avec l’identifiant de produit donné.

(define %example-udev-rule
  (udev-rule
    "90-usb-thing.rules"
    (string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", "
                   "ATTR{product}==\"Example\", "
                   "RUN+=\"/path/to/script\"")))
Procédure :udev-rules-service name rules [#:groups '()]

Renvoie un service qui étend udev-service-type avec rules et account-service-type avec groups comme groupes système. Cela fonctionne en créant un service de type name-udev-rules, dont le service renvoyé est une instance.

Nous montrons ici comment cela peut être utilisé pour étendre udev-service-type avec la règle précédemment définie %exemple-udev-rule.

(operating-system
 ;; …
 (services
   (cons (udev-rules-service 'usb-thing %example-udev-rule)
         %desktop-services)))
Procédure :file->udev-rule file-name file

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

L’exemple suivant montre comment utiliser un fichier de règles existant.

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

(define %android-udev-rules
  (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"))))))

En plus, les définitions des paquets de Guix peuvent être inclus dans rules pour étendre les règles avec les définitions trouvées dans leur sous-répertoire lib/udev/rules.d. Au lieu de l’exemple file->udev-rule précédent, on aurait pu utiliser le paquet android-udev-rules qui existe dans le module (gnu packages android).

L’exemple suivant montre comment utiliser le paquet android-udev-rules pour que l’outil Android adb puisse détecter les appareils sans privilège root. Il détaille aussi comment créer le groupe adbusers, requis pour le bon fonctionnement des règles définies dans le paquet android-udev-rules. Pour créer ce groupe, on doit le définir dans les supplementary-groups de la déclaration user-account ainsi que dans le champ groups de l’enregistrement operating-system.

(use-modules (gnu packages android)  ;pour android-udev-rules
             (gnu system shadow)     ;pour 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

Conserve de l’ entropie dans %random-seed-file pour amorcer /dev/urandom lors du redémarrage. Il essaie également d’amorcer /dev/urandom à partir de /dev/hwrng lors du démarrage, si /dev/hwrng existe et est lisible.

Variable :%random-seed-file

C’est le nom du fichier où des octets aléatoires sont sauvegardés par urandom-seed-service pour démarrer /dev/urandom au redémarrage. Sa valeur par défaut est /var/lib/random-seed.

Variable :gpm-service-type

C’est le type du service qui lance GPM, le démon de souris à but général, qui fournit le support de la souris sur la console Linux. GPM permet aux utilisateurs d’utiliser la souris dans la console, entre autres pour sélectionner, copier et coller du texte.

La valeur pour les services de ce type doit être un gpm-configuration (voir plus bas). Ce service ne fait pas partie de %base-services.

Type de données :gpm-configuration

Type de données représentant la configuration de GPM.

options (par défaut : %default-gpm-options)

Les options de la ligne de commande à passer à gpm. L’ensemble des options par défaut dit à gpm d’écouter les événements de la souris dans /dev/input/mice. Voir Command Line dans gpm manual, pour plus d’informations.

gpm (par défaut : gpm)

Le paquet GPM à utiliser.

Variable :guix-publish-service-type

C’est le type de service pour guix publish (voir Invoquer guix publish). Sa valeur doit être un objet guix-publish-configuration décrit plus bas.

Ce service suppose que /etc/guix contient déjà une paire de clefs créée par guix archive --generate-key (voir Invoquer guix archive). Si ce n’est pas le cas, le service ne démarrera pas.

Type de données :guix-publish-configuration

Le type de données représentant la configuration du service guix publish.

guix (par défaut : guix)

Le paquet Guix à utiliser.

port (par défaut : 80)

Le port TCP sur lequel écouter les connexions.

host (par défaut : "localhost")

L’hôte (et donc, l’interface réseau) sur lequel écouter. Utilisez "0.0.0.0" pour écouter sur toutes les interfaces réseaux.

advertise? (par défaut : #f)

Lorsque la valeur est vraie, annonce le service sur le réseau local via le protocole DNS-SD, avec Avahi.

Cela permet aux machines Guix voisines qui ont activé la découverte (voir guix-configuration ci-dessus) de découvrir cette instance de guix publish et de télécharger des substituts directement à partir d’elle.

compression (par défaut : '(("gzip" 3) ("zstd" 3)))

Il s’agit d’une liste de méthodes de compression/numéros de niveau utilisés lors de la compression des substituts. Par exemple, pour compresser tous les substituts avec both lzip au niveau 7 et gzip au niveau 9, écrivez :

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

Le niveau 9 atteint le meilleur taux de compression au détriment d’une utilisation accrue du CPU, tandis que le niveau 1 atteint une compression rapide. Voir Invoquer guix publish, pour plus d’information sur les méthodes de compression disponibles et les compromis à faire entre elles.

Une liste vide désactive complètement la compression.

nar-path (par défaut : "nar")

Le chemin d’URL où les « nars » se trouvent. Voir --nar-path, pour des détails.

cache (par défaut : #f)

Lorsque la valeur est #f, désactive le cache et génère les archives à la demande. Sinon, cela devrait être le nom d’un répertoire — p. ex. "/var/cache/guix/publish" — où guix publish gère le cache des archives et des métadonnées prêtes à être envoyées. Voir --cache, pour plus d’informations sur les compromis impliqués.

workers (par défaut : #f)

Lorsque la valeur est un entier, c’est le nombre de threads de travail utilisés pour le cache ; lorsque la valeur est #f, le nombre de processeurs est utilisé. Voir --workers, pour plus d’informations.

cache-bypass-threshold (par défaut : 10 Mio)

Lorsque cache est vrai, c’est la taille maximale en octets d’un élément du dépôt pour lequel guix publish peut contourner le cache s’il n’y est pas. Voir --cache-bypass-threshold, pour plus d’informations.

ttl (par défaut : #f)

Lorsque la valeur est un entier, il dénote la durée de vie en secondes des archives publiées. Voir --ttl, pour plus d’informations.

negative-ttl (par défaut : #f)

Lorsque la valeur est un entier, il dénote la durée de vie en secondes pour les réponses négatives. Voir --negative-ttl, pour plus d’informations.

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.

La définition de limites suivante défini deux limites matérielles et logicielles pour toutes les sessions connectées des utilisateurs du groupe realtime :

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

La première entrée augment la priorité en temps réel maximale des processus non privilégiés ; la deuxième entrée abandonne les restrictions sur l’espace d’adressage maximal qui peut être verrouillé en mémoire. Ces paramètres sont souvent utilisés sur les systèmes audio temps-réel.

Un autre exemple utile est d’augmenter le nombre maximum de descripteurs de fichiers ouverts qui peuvent être utilisés :

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

Dans l’exemple au-dessus, l’astérisque signifie que la limite s’applique à tous les utilisateurs. Il est important de s’assurer que la valeur choisie n’excède pas la valeur maximale du système visible dans le fichier /proc/sys/fs/file-max, sinon les utilisateurs ne pourront pas se connecter. Pour plus d’information sur les limites du module d’authentification grefable (PAM), regardez la page de manuel ‘pam_limits’ du paquet linux-pam.

Variable :greetd-service-type

greetd est un démon de gestion des connexions minimaliste et flexible, qui ne fait aucune hypothèse sur ce que vous voulez lancer.

Si vous pouvez le lancer depuis votre shell dans un TTY, greetd peut le lancer. S’il peut apprendre à parler un protocole IPC simple basé sur JSON, alors ce peut être un écran d’accueil.

greetd-service-type fournit l’infrastructure nécessaire pour la connexion des utilisateurs, ce qui comprend :

  • le service PAM greetd
  • Une variante spéciale de pam-mount pour monter XDG_RUNTIME_DIR

Voici un exemple pour passer de mingetty-service-type à greetd-service-type et comment vous pouvez le spécifier pour plusieurs terminaux :

  (append
   (modify-services %base-services
     ;; greetd-service-type fournit le srevice PAM « greetd »
     (delete login-service-type)
     ;; et peut être utilisé à la place de mingetty-service-type
     (delete mingetty-service-type))
   (list
    (service greetd-service-type
             (greetd-configuration
              (terminals
               (list
                ;; on peut rendre n'importe quel terminal actif par défaut
                (greetd-terminal-configuration (terminal-vt "1") (terminal-switch #t))
                ;; on peut créer des environnement sans initialiser XDG_RUNTIME_DIR
                ;; et même fournir nos propres variables d'environnement
                (greetd-terminal-configuration
                 (terminal-vt "2")
                 (default-session-command
                   (greetd-agreety-session
                    (extra-env '(("MY_VAR" . "1")))
                    (xdg-env? #f))))
                ;; on peut utiliser un shell différent au lieu de bash par défaut
                (greetd-terminal-configuration
                 (terminal-vt "3")
                 (default-session-command
                   (greetd-agreety-session (command (file-append zsh "/bin/zsh")))))
                ;; on peut utiliser n'importe quelle autre commande exécutable comme gestionnaire de connexion
                (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 peut être utilisé en parallèle
    ;; si vous voulez faire cela, n'utilisez pas (delete login-service-type)
    ;; comme indiqué plus haut
    #| (service mingetty-service-type (mingetty-configuration (tty "tty8"))) |#))
Type de données :greetd-configuration

La configuration pour greetd-service-type.

motd

Un objet simili-fichier contenant le « message du jour ».

allow-empty-passwords? (par défaut : #t)

Permet les mots de passes vides par défaut pour que les utilisateurs puissent se connecter au compte « root » la première fois après sa création.

terminal (par défaut : '())

Liste de greetd-terminal-configuration par terminal pour lequel greetd doit démarrer.

greeter-supplementary-groups (par défaut : '())

Liste des groupes qui devraient être ajoutés à l’utilisateur greeter. Par exemple :

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

Remarquez que cet exemple échouera si le groupe seat n’existe pas.

Type de données :greetd-terminal-configuration

Enregistrement de la configuration par terminal du service greetd.

greetd (par défaut : greetd)

Le paquet greetd à utiliser.

config-file-name

Nom du fichier de configuration utilisé pour le démon greetd. En général, c’est une dérivation générée à partir de la valeur de terminal-vt.

log-file-name

Nom du fichier de journalisation utilisé par le démon greetd. En général, c’est un nom généré à partir de la valeur de terminal-vt.

terminal-vt (par défaut : ‘"7"’)

Le terminal virtuel sur lequel tourner. L’utilisation d’un VT spécifique en évitant les conflits est recommandé.

terminal-switch (par défaut : #f)

Rend ce terminal actif au démarrage de greetd.

source-profile? (par défaut : #t)

Indique s’il faut sourcer /etc/profile et ~/.profile, s’ils existent.

default-session-user (par défaut : ‘"greeter"’)

L’utilisateur à utiliser pour lancer l’écran d’accueil.

default-session-command (par défaut : (greetd-agreety-session))

Peut être soit une instance d’une configuration greetd-agreety-session ou un objet comme gexp->script à utiliser comme écran d’accueil.

Type de données :greetd-agreety-session

Enregistrement de la configuration de l’écran d’accueil agreety de greetd.

agreety (par défaut : greetd)

Le paquet dans lequel se trouve la commande /bin/agreety.

command (par défaut : (file-append bash "/bin/bash")

La commande à démarrer par /bin/agreety si la connexion réussi.

command-args (par défaut : '("-l"))

Les arguments à passer à la commande.

extra-env (par défaut : '())

Variables d’environnement supplémentaires à définir à la connexion.

xdg-env? (par défaut : #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.

Type de données :greetd-wlgreet-session

Enregistrement de configuration générique de l’écran d’accueil wlgreet de greetd.

wlgreet (par défaut : wlgreet)

Le paquet dans lequel se trouve la commande /bin/wlgreet.

command (par défaut : (file-append sway "/bin/sway")

La commande à démarrer par /bin/wlgreet si la connexion réussi.

command-args (par défaut : '())

Les arguments à passer à la commande.

output-mode (par défaut : "all")

Option à utiliser pour outputMode dans le fichier de configuration TOML.

sclae (par défaut : 1)

Option à utiliser pour scale dans le fichier de configuration TOML.

background (par défaut : '(0 0 0 0.9))

Liste RGBA à utiliser comme couleur de fond pour l’invite de connexion.

headline (par défaut : '(1 1 1 1))

Liste RGBA à utiliser comme couleur de titre dans la popup.

prompt (par défaut : '(1 1 1 1))

Liste RGBA à utiliser comme couleur d’invite dans la popup.

prompt-error (par défaut : '(1 1 1 1))

Liste RGBA à utiliser comme couleur d’erreur dans la popup.

border (par défaut : '(1 1 1 1))

Liste RGBA à utiliser comme couleur de bordure de la popup.

extra-env (par défaut : '())

Variables d’environnement supplémentaires à définir à la connexion.

Type de données :greetd-wlgreet-sway-session

Enregistrement de la configuration spécifique à sway, de l’écran d’accueil wlgreet de greetd.

wlgreet-session (par défaut : (greetd-wlgreet-session))

Un enregistrement greetd-wlgreet-session pour la configuration générale de wlgreet, en plus du greetd-wlgreet-sway-session spécifique à Sway.

sway (par défaut : sway)

Le paquet qui fournit la commande /bin/sway.

sway-configuration (par défaut : #f)

Objet simili-fichier qui fournit un fichier de configuration Sway supplémentaire à ajouter au début de la partie obligatoire de la configuration.

Voici un exemple de configuration de greetd qui utilise wlgreet et Sway :

  (greetd-configuration
   ;; Nous devons donner ces permissions à l'utilisateur de l'écran d'accueil, sinon
   ;; Sway plantera au démarrage.
   (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"))))))))

Notes de bas de page

(33)

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


Suivant: Exécution de tâches planifiées, Monter: Services   [Table des matières][Index]