Suivant: Shells, Monter: Services du dossier personnel [Table des matières][Index]
Il y a quelques services essentiels définis dans (gnu services)
, ils
sont surtout utilisés en interne et sont requis pour construire un
environnement personnel, mais certains vous seront utiles.
Le service de ce type sera instancié par chaque environnement personnel automatiquement par défaut, il n’y a pas besoin de le définir, mais vous voudrez peut-être l’étendre avec une liste de paires pour initialiser certaines variables d’environnement.
(list ("ENV_VAR1" . "valeur1")
("ENV_VAR2" . "valeur2"))
Le plus simple pour étendre un type de service, sans définir un nouveau type
de service est d’utiliser la fonction simple-service
de (gnu
services)
.
(simple-service 'un-service-de-variables-utiles
home-environment-variables-service-type
`(("LESSHISTFILE" . "$XDG_CACHE_HOME/.lesshst")
("SHELL" . ,(file-append zsh "/bin/zsh"))
("USELESS_VAR" . #f)
("_JAVA_AWT_WM_NONREPARENTING" . #t)))
Si vous incluez un tel service dans votre définition d’environnement personnel, il ajoutera le contenu suivant au script setup-environment (qui doit être sourcé par le shell de connexion) :
export LESSHISTFILE=$XDG_CACHE_HOME/.lesshst export SHELL=/gnu/store/2hsg15n644f0glrcbkb1kqknmmqdar03-zsh-5.8/bin/zsh export _JAVA_AWT_WM_NONREPARENTING
Remarque : Assurez-vous que le module
(gnu packages shells)
est importé avecuse-modules
ou d’une autre façon ; cet espace de nom contient la définition du paquetzsh
, utilisé dans l’exemple précédent.
La liste d’association (voir Association Lists dans le manuel de référence de Guile) est une structure de données
contenant des paires de clé-valeurs. Pour
home-environment-variables-service-type
la clé est toujours une
chaine, la valeur peut être une chaine, une gexp s’évaluant en une chaine
(voir G-Expressions), un objet simili-fichier (voir file-like object) ou un booléen. Pour les gexps, la variable sera
initialisée à la valeur de la gexp ; pour les objets simili-fichiers, elle
sera initialisée au chemin du fichier dans le dépôt (voir Le dépôt) ;
pour #t
, la variable sera exportée sans valeur et pour #f
, la
variable sera omise.
Le service de ce type sera instancié par chaque environnement personnel automatiquement, il n’y a pas besoin de le définir, mais vous pouvez l’étendre avec une liste de paquets si vous voulez installer des paquets supplémentaires dans votre profil. D’autres services, qui ont besoin de rendre certains programmes disponible à l’utilisateur ou l’utilisatrice étendront aussi ce type de service.
La valeur d’extension est simplement une liste de paquets :
(list htop vim emacs)
Vous pouvez utiliser la même approche avec simple-service
(voir simple-service) que pour
home-environment-variables-service-type
. Assurez-vous que les
modules contenant les paquets spécifiés sont importés avec
use-modules
. Pour trouver un paquet ou des informations à propos de
son module utilisez guix search
voir Invoquer guix package
). Autrement, vous pouvez utiliser specification->package
pour récupérer l’enregistrement de paquet à partir d’une chaine sans
importer le module correspondant.
Il y a quelques autres services essentiels, mais vous n’avez pas besoin de les étendre.
La racine du graphe des services personnels, elle génère un dossier qui sera plus tard lié à partir de ~/.guix-home, il contient les configurations, le profil avec les binaires et les bibliothèques et certains scripts nécessaires pour tout faire fonctionner ensemble.
Le service de ce type génère un script Guile qui devrait être lancé par le
shell de connexion. Il n’est exécuté que si le fichier spécial dans
XDG_RUNTIME_DIR
n’a pas été créé, ce qui évite les exécutions
supplémentaires de ce script si plusieurs shells de connexion sont ouverts.
Il peut être étendu avec une gexp. Cependant, pour démarrer une application
automatiquement, vous ne devriez pas utiliser ce service, dans la
plupart des cas il vaut mieux étendre home-shepherd-service-type
avec
un service Shepherd (voir Services Shepherd), ou en étendant le fichier
de démarrage de shell avec la commande requise en utilisant le type de
service approprié.
Le service de ce type permet de spécifier une liste de fichiers, qui iront dans ~/.guix-home/files. Ce répertoire contient généralement des fichiers de configuration (pour être plus précis, il contient des liens symboliques vers des fichiers de /gnu/store) qui devraient être placés dans $XDG_CONFIG_DIR ou dans de rares cas dans $HOME. Il accepte des valeurs d’extension de cette forme :
`((".sway/config" ,sway-file-like-object) (".tmux.conf" ,(local-file "./tmux.conf")))
Chaque liste imbriquée contient deux valeurs : un sous-répertoire et un
objet simili-fichier. Après la construction d’un environnement personnel
~/.guix-home/files contiendra le contenu approprié et tous les
répertoires imbriqués seront créés en fonction. Cependant, ces fichiers
n’iront nul part ailleurs à moins qu’un autre service s’en occupe. Par
défaut un service home-symlink-manager-service-type
, qui crée les
liens symboliques nécessaires vers les fichiers de ~/.guix-home/files
et sauvegarde les fichiers existants en conflit et d’autres choses, fait
partie des services personnels essentiels (activés par défaut), mais il est
possible d’utiliser des services alternatifs pour implémenter des cas
d’usage plus avancés comme un dossier personnel en
lecture-seule. Expérimentez et partagez vos trouvailles.
Le service est très semblable au service home-files-service-type
(et
l’étend en fait), mais il est utilisé pour définir des fichiers qui iront
dans ~/.guix-home/files/.config, et qui seront liés symboliquement
dans $XDG_CONFIG_DIR par home-symlink-manager-service-type
(par exemple) à l’activation. Il accepte des valeurs d’extension dans ce
format :
`(("sway/config" ,sway-file-like-object) ;; -> ~/.guix-home/files/.config/sway/config ;; -> $XDG_CONFIG_DIR/sway/config (par symlink-manager) ("tmux/tmux.conf" ,(local-file "./tmux.conf")))
Le service de ce type génère un script guile qui est lancé à chaque
invocation de guix home reconfigure
ou n’importe quelle autre
action qui active l’environnement personnel.
Le service de ce type génère un script guile qui sera exécuté à l’activation de l’environnement personnel, et effectuera les actions suivantes :
home-files-service-type
,
home-xdg-configuration-files-service-type
et éventuellement
d’autres), prend les fichiers du sous-répertoire files/.config/ et
place des liens symboliques correspondant dans XDG_CONFIG_DIR
. Par
exemple le lien symbolique pour files/.config/sway/config se
retrouvera dans $XDG_CONFIG_DIR/sway/config. Le reste des fichiers de
files/ en dehors du sous-répertoire files/.config/ seront
traités un peu différemment : un lien symbolique sera créé dans
$HOME. files/.un-programme/config se retrouvera dans
$HOME/.un-programme/config.
symlink-manager fait partie des services personnels essentiels et est activé et utilisé par défaut.
Suivant: Shells, Monter: Services du dossier personnel [Table des matières][Index]