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


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

La valeur associée avec les services special-files-service-type doit être une liste de couples dont le premier élément est le « fichier spécial » et le deuxième sa cible. Par défaut il s’agit de :

`(("/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 Scheme :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"))
Procédure Scheme :host-name-service name

Renvoie un service qui paramètre le nom d’hôte à name.

Variable Scheme :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
Procédure Scheme :login-service config

Renvoie un service pour lancer login en suivant config, un objet <login-configuration> qui spécifie le message du jour, entre autres choses.

Type de données :login-configuration

Le type de données qui représente la configuration de login.

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.

Procédure Scheme :mingetty-service config

Renvoie un service qui lance mingetty en suivant config, un objet <mingetty-configuration>, qui spécifie le tty à lancer entre autres choses.

Type de données :mingetty-configuration

C’est le type de données représentant la configuration de Mingetty, qui fournit l’implémentation par défaut de l’écran de connexion des consoles virtuelles.

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.

Procédure Scheme :agetty-service config

Renvoie un service pour lancer agetty en suivant config, un objet <agetty-configuration>, qui spécifie le tty à lancer, entre autres choses.

Type de données :agetty-configuration

Ce type de données représente la configuration de agetty, qui implémente l’écran de connexion des consoles virtuelles et series. Voir la page de manuel de agetty(8) pour plus d’informations.

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.

Procédure Scheme :kmscon-service-type config

Renvoie un service qui lance kmscon d’après config, un objet <kmscon-configuration>, qui spécifie le tty sur lequel tourner, entre autres choses.

Type de données :kmscon-configuration

C’est le type de données représentant la configuration de Kscon, qui implémente l’écran de chargement de la console virtuelle.

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.

Procédure Scheme :nscd-service [config] [#:glibc glibc] [#:name-services '()]

Renvoie un service qui lance le démon de cache de services de noms de la libc (nscd) avec la config donnée — un objet <nscd-configuration>. Voir Name Service Switch, pour un exemple.

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.

Variable Scheme :%nscd-default-configuration

C’est la valeur par défaut de <nscd-configuration> (voir plus bas) utilisée par nscd-service. Elle utilise les caches définis par %nscd-default-caches ; voir plus bas.

Type de données :nscd-configuration

C’est le type de données qui représente la configuration du démon de cache de services de noms (nscd).

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

Type de données :syslog-configuration

Ce type de données représente la configuration du démon syslog.

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

Le démon syslog à utiliser.

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

Le fichier de configuration de syslog à utiliser.

Procédure Scheme :syslog-service config

Renvoie un service qui lance un démon syslog en suivant config.

Voir syslogd invocation dans GNU Inetutils, pour plus d’informations sur la syntaxe du fichier de configuration.

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

max-silent-time (par défaut : 0)
timeout (par défaut : 0)

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.

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.

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.

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.

Procédure Scheme :udev-service [#:udev eudev #:rules '()]

Lance udev, qui remplit le répertoire /dev dynamiquement. Les règles udev peuvent être fournies comme une liste de fichier via la variable rules. Les procédures udev-rule, udev-rules-service et (gnu services base) simplifient la création de ces fichiers de règle.

The herd rules udev command, as root, returns the name of the directory containing all the active udev rules.

Procédure Scheme :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 Scheme :udev-rule-service [name rules] [#:groups 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 Scheme :file->udev-rule [file-name file]

Renvoie un fichier udev nommé file-name contenant les règles définies dans file, un objet simili-fichier.

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

Procédure Scheme :rngd-service [#:rng-tools rng-tools] [#:device "/dev/hwrng"]

Renvoie un service qui lance le programme rngd de rng-tools pour ajouter device à la réserve d’entropie du noyau. Le service échouera si device n’existe pas.

Procédure Scheme :pam-limits-service [#:limits '()]

Renvoie un service qui installe un fichier de configuration pour le module pam_limits. La procédure prend éventuellement une liste de valeurs pam-limits-entry qui peuvent être utilisées pour spécifier les limites ulimit et les priorités nice des sessions utilisateurs.

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 :

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

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

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)

Si la valeur est vraie, XDG_RUNTIME_DIR et XDG_SESSION_TYPE seront initialisés avant de démarrer la commande. Il faut remarquer que les variables extra-env sont initialisées juste après les variables mentionnées, donc elles peuvent être écrasées.

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

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