Précédent: , Monter: Configuration du dossier personnel   [Table des matières][Index]


13.4 Invoquer guix home

Une fois que vous avez écrit une déclaration d’environnement personnel (voir Déclarer l’environnement personnel), elle peut être instanciée avec la commande guix home. Voici le résumé de la commande :

guix home optionsaction file

file doit être le nom d’un fichier contenant une déclaration home-environment. action spécifie comment l’environnement personnel est instancié, mais il y a quelques actions supplémentaires qui ne l’instancient pas. Actuellement les valeurs suivantes sont prises en charge :

search

Affiche les définitions des types de services personnels disponibles qui correspondent aux expressions régulières données, triées par pertinence :

$ guix home search shell
name: home-shell-profile
location: gnu/home/services/shells.scm:100:2
extends: home-files
description: Create `~/.profile', which is used for environment initialization of POSIX compliant login shells.
+ This service type can be extended with a list of file-like objects.
relevance: 6

name: home-fish
location: gnu/home/services/shells.scm:640:2
extends: home-files home-profile
description: Install and configure Fish, the friendly interactive shell.
relevance: 3

name: home-zsh
location: gnu/home/services/shells.scm:290:2
extends: home-files home-profile
description: Install and configure Zsh.
relevance: 1

name: home-bash
location: gnu/home/services/shells.scm:508:2
extends: home-files home-profile
description: Install and configure GNU Bash.
relevance: 1

…

Comme pour guix search, le résultat est écrit au format recutils, ce qui rend facile le filtrage de la sortie (voir GNU recutils databases dans GNU recutils manual).

container

Démarre un shell dans un environnement isolé — un conteneur — contenant votre dossier personnel spécifié par file.

Par exemple, voici comment vous pouvez démarrer un shell interactif dans un conteneur avec votre dossier personnel :

guix home container config.scm

C’est un conteneur jetable où vous pouvez gaiement jouer avec vos fichiers ; les changements effectués dans le conteneur et tous les processus qui y sont démarrés disparaissent aussitôt que vous sortez de ce shell.

Comme pour guix shell, plusieurs options contrôlent ce conteneur :

--network
-N

Active le réseau dans le conteneur (il est désactivé par défaut).

--expose=source[=cible]
--share=source[=cible]

Comme pour guix shell, rend le répertoire source du système hôte disponible en tant que target dans le conteneur — en lecture-seule si vous utilisez --expose, et inscriptible si vous utilisez --share (voir --expose et --share).

En plus, vous pouvez lancer une commande dans ce conteneur, au lieu de démarrer un shell interactif. Par exemple, voici comment vérifier que les service Shepherd sont démarrés dans un conteneur personnel jetable :

guix home container config.scm -- herd status

La commande à lancer dans le conteneur doit être indiquée après -- (double tirets).

edit

Modifier ou visualiser la définition des types de services personnels donnés.

Par exemple, la commande plus bas ouvre votre éditeur, spécifié par la variable d’environnement EDITOR, sur la définition du type de service home-mcron :

guix home edit home-mcron
reconfigure

Construit l’environnement personnel décrit dans file et y bascule. Le basculement signifie que le script d’activation sera évalué et (dans le scénario de base) les liens symboliques vers les fichiers de configuration générés dans la déclaration home-environment seront créés dans ~. Si un fichier avec le même chemin existe dans le répertoire personnel il sera déplacé vers ~/horodatage-guix-home-legacy-confis-backup, où horodatage est l’epoch UNIX actuelle.

Remarque : Il est grandement recommandé de lancer guix pull une fois avant de lancer guix home reconfigure pour la première fois (voir Invoquer guix pull).

Cela met en application toute la configuration spécifiée dans file. La commande démarre les services Shepherd spécifiés dans file qui ne sont pas actuellement lancés ; si un service est actuellement exécuté cette commande s’arrange pour qu’il soit mis à jour la prochaine fois qu’il est stoppé (p. ex par herd stop service ou herd restart service).

Cette commande crée une nouvelle génération dont le numéro est un de plus que la génération actuelle (rapportée par guix home list-generations). Si cette génération existe déjà, elle sera réécrite. Ce comportement correspond à celui de guix package (voir Invoquer guix package).

À la fin, le nouveau dossier personel est déployé dans ~/.guix-home. Ce répertoire contient les métadonnées de provenance : la liste des canaux utilisés (voir Canaux) et le fichier lui-même, s’il est disponible. Vous pouvez voir les informations de provenance avec :

guix home describe

Cette information est utile si vous voulez plus tard inspecter comment une génération particulière a été construite. En fait, en supposant que file est auto-contenu, vous pouvez reconstruire la génération n de votre environnement personnel avec :

guix time-machine \
  -C /var/guix/profiles/per-user/USER/guix-home-n-link/channels.scm -- \
  home reconfigure \
  /var/guix/profiles/per-user/USER/guix-home-n-link/configuration.scm

Vous pouvez considérer cela comme une sorte de contrôle de version intégré ! Votre dossier personnel n’est pas seulement un artefact binaire : il contient ses propres sources.

Remarque : If you’re using Guix System, guix-home-service-type, on how to embed your home configuration in your system configuration such that guix system reconfigure deploys both your system and your home.

switch-generation

Bascule à une génération du dossier personnel existante. Cette action bascule de manière atomique à la génération du dossier personnel spécifiée.

La génération cible peut être spécifiée explicitement par son numéro de génération. Par exemple, l’invocation suivante passerait à la génération 7 du dossier personnel :

guix home switch-generation 7

La génération cible peut aussi être spécifiée relativement à la génération actuelle avec la forme +N ou -N, où +3 signifie « trois générations après la génération actuelle » et -1 signifie « une génération précédent la génération actuelle ». Lorsque vous spécifiez un nombre négatif comme -1, il doit être précédé de -- pour éviter qu’il ne soit compris comme une option. Par exemple :

guix home switch-generation -- -1

Cette action échouera si la génération spécifiée n’existe pas.

roll-back

Passe à la génération précédente du dossier personnel. C’est le contraire de reconfigure, et c’est exactement comme invoquer switch-generation avec pour argument -1.

delete-generations

Supprimer des générations du dossier personnel, ce qui les rend disponibles pour le ramasse-miettes (voir Invoquer guix gc, pour des informations sur la manière de lancer le « ramasse-miettes »).

Cela fonctionne comme pour ‘guix package --delete-generations’ (voir --delete-generations). Avec aucun argument, toutes les générations du dossier personnel sauf la génération actuelle sont supprimées :

guix home delete-generations

Vous pouvez aussi choisir les générations que vous voulez supprimer. L’exemple plus bas supprime toutes les génération du dossier personnel plus vieilles que deux mois :

guix home delete-generations 2m
build

Construit la dérivation de l’environnement personnel, ce qui comprend tous les fichiers de configuration et les programmes requis. Cette action n’installe rien.

describe

Décrit la génération du dossier personnel actuel : son nom de fichier, ainsi que les informations de provenance si elles sont disponibles.

Pour afficher les paquets installés dans le profil de la génération actuelle du dossier personnel, le drapeau --list-intalled est proposé, avec la même syntaxe que celle utilisée pour guix package --list-installed (voir Invoquer guix package). Par exemple, la commande suivante affiche un tableau de tous les paquets avec « emacs » dans leur nom qui sont installés dans la génération actuelle du profil du dossier personnel :

guix home describe --list-installed=emacs
list-generations

Affiche un résumé de chaque génération de l’environnement personnel disponible sur le disque, dans un format lisible pour un humain. C’est similaire à l’option --list-generations de guix package (voir Invoquer guix package).

Éventuellement, on peut spécifier un motif, avec la même syntaxe utilisée pour guix package --list-generations, pour restreindre la liste des générations affichées. Par exemple, la commande suivante affiche les générations de moins de 10 jours :

guix home list-generations 10d

Le drapeau --list-installed peut aussi être spécifié, avec la même syntaxe que celle utilisée dans guix home describe. Cela peut être utile si vous essayez de déterminer si un paquet a été ajouté au profil personnel.

import

Génère un environnement personnel à partir des paquets du profil par défaut et des fichiers de configuration qui se trouvent dans votre répertoire personnel. Les fichiers de configuration sont copiés vers le répertoire donné, et un fichier home-configuration.scm sera rempli avec l’environnement personnel. Remarquez que les services personnels existants ne sont pas tous pris en charge (voir Services du dossier personnel).

$ guix home import ~/guix-config
guix home: « /home/alice/guix-config » rempli avec tous les fichiers de configuration du dossier personnel

Et plus encore ! guix home fournit aussi les sous-commandes suivantes pour visualiser la manière dont les services de votre environnement personnel sont liés les uns aux autres :

extension-graph

Émettre vers la sortie standard le graphe d’extension de service de l’environnement personnel défini dans file (voir Composition de services, pour plus d’informations sur les extensions de service). Par défaut, le format de sortie est le format Dot/Graphviz, mais vous pouvez choisir un autre format avec --graph-backend, comme avec guix graph (voir --backend) :

La commande :

guix home extension-graph file | xdot -

montre les relations d’extension entre les services.

shepherd-graph

Affiche le graphe de dépendance des services shepherd de l’environnement personnel défini dans file sur la sortie standard. Voir Services Shepherd, pour plus d’informations et un exemple de graphe.

Encore une fois, le format de sortie par défaut est Dot/Graphviz, mais vous pouvez passer --graph-backend pour en choisir un autre.

options peut contenir n’importe quelle option commune de construction (voir Options de construction communes). En plus, options peut contenir l’une de ces options :

--expression=expr
-e expr

Considère l’environnement personnel en lequel s’évalue expr. C’est une alternative à la spécification d’un fichier qui s’évalue en un environnement personnel.

--allow-downgrades

Dit à guix home reconfigure de permettre le retour en arrière du système.

Comme pour guix system, guix home reconfigure, par défaut, vous empêche de faire revenir votre dossier personnel à une révision plus vieille ou non liée par rapport aux révisions des canaux utilisés pour le déployer — cette information est affichée par guix home describe. Avec --allow-downgrades, vous pouvez outrepasser cette vérification, au risque de faire revenir votre dossier personnel en arrière — faites attention !


Précédent: Services du dossier personnel, Monter: Configuration du dossier personnel   [Table des matières][Index]