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


13.3.1 Services personnels essentiels

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.

Variable Scheme :home-environment-variables-service-type

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é avec use-modules ou d’une autre façon ; cet espace de nom contient la définition du paquet zsh, 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.

Variable Scheme :home-profile-service-type

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.

Variable Scheme :home-service-type

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.

Variable Scheme :home-run-on-first-login-service-type

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

Variable Scheme :home-files-service-type

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.

Variable Scheme :home-configuration-files-service-type

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")))
Variable Scheme :home-activation-service-type

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 :

  1. Lire le contenu du répertoire files/ des environnements personnels actuels et en attente.
  2. Nettoyer tous les liens symboliques créés par symlink-manager à l’activation précédente. En plus, les sous-répertoires qui deviennent vides seront aussi nettoyés.
  3. Créer de nouveaux liens symboliques de cette façon : il cherche dans le répertoire files/ (normalement défini avec 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.
  4. Si certains sous-répertoires sont absents, ils seront créés.
  5. Si des fichiers sont en conflit, ils seront sauvegardés.

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]