Gestion de dotfiles avec GNU Stow

GNU Stow est un CLI permettant de gérer ses dotfiles dans un système UNIX. Cette solution est simple (une commande, liens symboliques) et efficace (fonctionne directement). A l'heure où le nombre de paquets, de configurations et où nos cas d'utilisations ne cessent d'augmenter, le nombre de fichiers "dotfiles" continue de croître. Il me semble donc important de rapidement mettre en oeuvre un dotfiles manager.

Le principe de GNU Stow est de créer des liens symboliques pour tout fichier de situant dans un répertoire "central" au choix comme $HOME/.dotfiles afin que ceux-ci soient accessibles depuis $HOME. Une fois GNU Stow installé et les fichiers déplacés dans ce répertoire "spécial dotfiles", il suffit d'utiliser stow . directement depuis celui-ci : les liens symboliques sont alors créés. Il est donc aisément versionnable avec un système de gestion de versions tel que Git. Par ailleurs, il est possible de lister des fichiers qui seraient ignorés par stow . dans un fichier .stow-local-ignore à l'intérieur du répertoire dotfiles. Il existe même une liste par défaut (dossier .git etc.).

Les plus :

  • Cela gère les sous-dossiers, par exemple $HOME/.dotfiles/config/myconfig.yaml aurait un lien symbolique pour $HOME/config/myconfig.yaml
  • Nous pouvons modifier les fichiers depuis leur lien symbolique, cela se réflètera dans le fichier source (exemple nano $HOME/.zshrc modifie $HOME/dotfiles/.zshrc)
  • Un coup de git status dans le répertoire dotfiles permet de voir où nous en sommes : un paquet a peut-être modifié/mis à jour un fichier de configuration...

Je joins une vidéo de Dreams of Autonomy sur le sujet https://www.youtube.com/watch?v=y6XCebnB9gs