Menu

chezmoi : gérer ses fichiers de conf sur plusieurs postes facilement

Versionner et synchroniser ses fichiers de configuration entre machines avec chezmoi.

chezmoi dotfiles manager

Introduction

Ici on va parler de chezmoi, non pas mon appartement, mais bien l’outil chezmoi.

Vous avez déjà perdu votre config zsh en changeant de Mac ? Ou passé des heures à retrouver vos alias après une reinstall ? chezmoi règle ça une bonne fois pour toutes 🎉

chezmoi est un gestionnaire de dotfiles open-source. Il vous permet de versionner vos fichiers de configuration (~/.zshrc, ~/.gitconfig, etc.) dans un dépôt git, de les synchroniser entre plusieurs machines, et même d’y injecter des variables selon l’environnement.

Installation

brew install chezmoi

Ensuite, initialisez chezmoi avec votre dépôt git (créez-en un vide sur votre serveur git si vous n’en avez pas) :

chezmoi init git@github.com:TON_USER/dotfiles.git

Chezmoi crée un répertoire source dans ~/.local/share/chezmoi/. C’est là que vivent vos fichiers versionnés.

Ajouter ses premiers dotfiles

La commande chezmoi add copie un fichier dans le répertoire source et le met sous gestion :

chezmoi add ~/.zshrc # backup zshrc

Les fichiers sont renommés automatiquement avec le préfixe dot_ dans la source (ex : dot_zshrc). Pour voir l’état de vos fichiers :

chezmoi status

Pour appliquer les modifications depuis la source vers votre home :

chezmoi apply

Pour voir ce qui va changer avant d’appliquer :

chezmoi diff

Gérer son Brewfile avec chezmoi

Le Brewfile liste toutes vos apps et formules Homebrew. L’associer à chezmoi, c’est avoir une liste de vos outils toujours à jour et synchronisée.

Ajouter le Brewfile à chezmoi

brew bundle dump --file=~/.Brewfile --force
chezmoi add ~/.Brewfile      # met à jour la source chezmoi
cd ~/.local/share/chezmoi
git add dot_Brewfile
git commit -m "feat: update Brewfile"
git push

Mettre à jour le Brewfile

Quand vous installez de nouveaux outils, régénérez votre Brewfile avec :

brew bundle dump --file=~/.Brewfile --force

Puis versionnez à nouveau :

chezmoi add ~/.Brewfile
cd ~/.local/share/chezmoi && git add dot_Brewfile && git commit -m "feat: update Brewfile" && git push

Réinstaller tout sur une nouvelle machine

Sur votre nouvelle machine, une fois chezmoi installé et le dépôt cloné :

chezmoi init --apply git@github.com:TON_USER/dotfiles.git

Cette commande clone le dépôt et applique immédiatement tous les dotfiles. Ensuite, pour réinstaller toutes vos apps depuis le Brewfile :

brew bundle install --file=~/.Brewfile

C’est tout. Toutes vos formules, casks et apps Mac App Store sont réinstallées en une commande 🚀

Utiliser des variables (templates)

chezmoi supporte les templates Go. C’est utile pour adapter un dotfile selon la machine (perso vs pro, macOS vs Linux).

Déclarer des variables

chezmoi edit-config

Dans le fichier ~/.config/chezmoi/chezmoi.toml :

[data]
  email = "antoine@example.com"
  work = false
  name = "Antoine"

Utiliser les variables dans un dotfile

Renommez le fichier source avec l’extension .tmpl pour activer le templating :

mv ~/.local/share/chezmoi/dot_gitconfig ~/.local/share/chezmoi/dot_gitconfig.tmpl

Puis dans dot_gitconfig.tmpl :

[user]
  name = {{ .name }}
  email = {{ .email }}
{{- if .work }}
  signingkey = ABCD1234
{{- end }}

chezmoi génère le bon .gitconfig à l’application selon les valeurs définies. Vous pouvez aussi utiliser des prompts pour demander les valeurs au premier chezmoi init :

[data]
  email = "{{ promptStringOnce . \"email\" \"Git email\" }}"

Détection des credentials et données sensibles

Avant de versionner un fichier, chezmoi peut vérifier qu’il ne contient pas de données sensibles (clés API, mots de passe, tokens…). Cette fonctionnalité repose sur des outils externes comme gitleaks ou detect-secrets.

Configurer gitleaks avec chezmoi

Installez gitleaks :

brew install gitleaks

Puis dans ~/.config/chezmoi/chezmoi.toml, déclarez-le comme hook de vérification :

[git]
  autoCommit = false

[hooks.add.pre]
  command = "gitleaks"
  args = ["detect", "--source", ".", "--no-git"]

Désormais, avant chaque chezmoi add, gitleaks analyse le fichier. S’il détecte un secret (token AWS, clé privée SSH, etc.), l’opération est bloquée et un avertissement s’affiche.

Conclusion

chezmoi transforme la gestion de vos dotfiles en quelque chose de propre, versionné et reproductible. Avec le Brewfile dans la boucle, vous pouvez recréer votre environnement complet sur n’importe quelle machine en quelques minutes 💪

Le workflow au quotidien se résume à :

  1. chezmoi add <fichier> quand vous modifiez une config
  2. Un commit + push depuis ~/.local/share/chezmoi
  3. chezmoi apply sur les autres machines

Sources :

Offrez-moi un café