Outils de synchronisation des dotfiles Linux

Autrefois, exécuter la même configuration Linux sur trois machines signifiait cloner un lecteur et espérer que le matériel correspondrait. La nouvelle norme est : synchronisez vos dotfiles avec un outil, conservez une liste de paquets dans Git, et laissez vos fichiers se synchroniser via un canal séparé. Ces sept outils de bureau couvrent les trois couches, du déploiement de deux fichiers ~/.zshrc à une reconstruction déclarative complète de Nix.

Ce qu'il faut rechercher dans un outil de synchronisation des dotfiles

Quelques questions déterminent la forme :

Comparaison rapide

Application Meilleur pour Forfait gratuit Payant Plateformes Point fort
chezmoi Dotfiles avec modèles et secrets Oui Gratuit Linux, macOS, Windows Modèles, chiffrement, configurations adaptées à la machine
GNU Stow Ferme de liens symboliques depuis un dépôt Git Oui Gratuit Linux, macOS Le flux de travail le plus ancien et le plus simple
yadm Git natif pour vos dotfiles Oui Gratuit Linux, macOS Script bootstrap, branche alternative par machine
dotbot Configuration de lien symbolique déclarative YAML Oui Gratuit Linux, macOS Multiplateforme, empreinte minimale
Ansible Configuration de machine complète, pas seulement dotfiles Oui AAP payant Linux, macOS, Windows Un seul outil pour une flotte ou un ordinateur portable
Syncthing Synchronisation de fichiers P2P continue Oui Gratuit Linux, macOS, Windows Pas de cloud, synchronisation directe machine à machine
Nix Home Manager Environnement utilisateur reproductible Oui Gratuit Linux, macOS La même configuration produit la même configuration à chaque fois

Les applications

1. chezmoi — meilleur pour les dotfiles avec modèles et secrets

chezmoi traite vos dotfiles comme du code source, avec des modèles par machine (Go text/template) et un chiffrement natif via age ou GPG. Un dépôt couvre votre Mac professionnel, votre boîte Linux domestique et un serveur sans interface graphique, et les différences (e-mail, plugins d’éditeur, entrées de travail uniquement) vivent dans des conditionnels de modèle.

Où il trouve ses limites : Courbe d’apprentissage pour la syntaxe des modèles. Fusionner un résultat de modèle avec un fichier géré par le système nécessite un motif spécifique que la plupart des gens découvrent à leurs dépens.

Prix : Gratuit, logiciel libre.

Plateformes : Linux, macOS, Windows.

Télécharger : chezmoi

Conclusion : Le standard actuel pour quiconque a dépassé un script de lien symbolique.

2. GNU Stow — meilleur pour le flux de travail le plus simple

GNU Stow a été écrit en 1994 et fait toujours exactement une chose : créer des liens symboliques depuis un répertoire de paquets vers votre répertoire personnel. Un dépôt dotfiles devient un « paquetage » Stow, et stow zsh crée des liens symboliques vers son contenu. Pas de modèles, pas de secrets, pas de magie.

Où il trouve ses limites : Les configurations spécifiques à une machine signifient plusieurs branches ou paquets par hôte. Les secrets doivent vivre quelque part d’autre (un montage chiffré, un gestionnaire de mots de passe).

Prix : Gratuit, logiciel libre.

Plateformes : Linux, macOS, Windows (via WSL).

Télécharger : GNU Stow

Conclusion : Le bon choix quand votre configuration est petite et que vous ne voulez plus jamais penser à l’outil de synchronisation.

3. yadm — meilleur pour traiter les dotfiles comme un seul dépôt Git

yadm (Yet Another Dotfiles Manager) est Git plus les avantages spécifiques aux dotfiles : scripts bootstrap, fichiers alternatifs par hôte ou système d’exploitation, et chiffrement via GPG. Puisqu’il s’agit vraiment juste d’un wrapper autour de Git, tout ce que vous savez déjà fonctionne toujours.

Où il trouve ses limites : La convention des fichiers alternatifs est puissante mais moins découvrable que la modélisation de chezmoi. L’histoire du chiffrement est basique comparée aux outils basés sur age.

Prix : Gratuit, logiciel libre.

Plateformes : Linux, macOS.

Télécharger : yadm

Conclusion : L’étape la plus douce à partir d’un dépôt Git simple de dotfiles.

4. dotbot — meilleur pour la configuration petite déclarative

dotbot lit un fichier d’installation YAML et crée des liens symboliques, clone des dépôts et exécute des commandes shell. Il est assez petit pour être intégré dans votre dépôt dotfiles, donc cloner le dépôt et exécuter ./install est tout le bootstrap sur une nouvelle machine.

Où il trouve ses limites : Pas de modèles. Pas de chiffrement natif. Les machines complexes finissent avec de longs fichiers install.yaml qui deviennent difficiles à lire.

Prix : Gratuit, logiciel libre.

Plateformes : Linux, macOS.

Télécharger : dotbot sur GitHub

Conclusion : Le bon choix quand vous voulez un fichier d’installation déclaratif et rien d’autre.

5. Ansible — meilleur quand la configuration va au-delà du répertoire personnel

Ansible gère des machines entières à partir d’un ensemble de playbooks. Pour une configuration personnelle, un playbook installe les paquets, définit les paramètres du noyau, dépose les dotfiles et configure les services en une seule passe. Le même playbook s’exécute sur un ordinateur portable ou un nœud homelab.

Où il trouve ses limites : Overkill pour un pur problème de dotfile. Les exécutions de playbook sont plus lentes qu’une ferme de liens symboliques. La fatigue YAML est réelle une fois que vous dépassez quelques centaines de lignes.

Prix : Gratuit, logiciel libre. Niveau entreprise payant d’Ansible Automation Platform.

Plateformes : Linux, macOS, Windows.

Télécharger : Ansible

Conclusion : L’outil pour quiconque veut un seul flux de travail pour son ordinateur portable et ses serveurs.

6. Syncthing — meilleur pour les fichiers, pas les configurations

Syncthing est la synchronisation de fichiers peer-to-peer qui devrait s’asseoir à côté de votre gestionnaire dotfiles. Conservez les configurations déclaratives dans Git, mais laissez Syncthing déplacer quelques centaines de gigaoctets de Documents, Music et fichiers de brouillon de projet entre les machines sans qu’un fournisseur de cloud ne les touche jamais.

Où il trouve ses limites : Pas du tout un outil dotfiles. Apportez vos propres habitudes de résolution de conflits. La synchronisation initiale d’un grand dossier prend aussi longtemps que le lien le plus lent le permet.

Prix : Gratuit, logiciel libre.

Plateformes : Linux, macOS, Windows.

Télécharger : Syncthing

Conclusion : L’autre moitié d’une vraie configuration multi-machines, que votre seul outil dotfiles ne remplacera pas.

7. Nix Home Manager — meilleur pour la reproducibilité complète

Nix Home Manager décrit tout votre environnement utilisateur dans les expressions Nix : paquets, dotfiles, services, tout. Une nouvelle machine obtient nix run home-manager -- switch et monte identique à toute autre machine du flake.

Où il trouve ses limites : La courbe d’apprentissage de Nix est réelle. Certaines applications propriétaires n’ont pas de paquets Nix. Les restaurations sont magiques quand elles fonctionnent et douloureuses quand un canal se casse.

Prix : Gratuit, logiciel libre.

Plateformes : Linux, macOS.

Télécharger : Nix Home Manager

Conclusion : Le bon choix pour quiconque est prêt à investir dans Nix dès le départ pour une véritable reproducibilité.

Comment choisir le bon

Questions fréquemment posées

Où je stocke les secrets dans un dépôt dotfiles ? Jamais en texte clair. chezmoi et yadm chiffrent au repos. Pour les dépôts Git simples, utilisez age ou GPG sur des fichiers spécifiques, ou conservez les secrets complètement en dehors du dépôt.

Ces outils fonctionnent-ils sur macOS ? Chaque outil de cette liste supporte macOS. Nix Home Manager et chezmoi sont de loin les plus amicaux pour macOS.

Comment je gère les configurations spécifiques à la machine ? Modèles (chezmoi), fichiers alternatifs (yadm), branches (yadm et Stow), ou blocs gardés par hôte dans Ansible. Le motif de modèle évolue mieux au-delà de deux machines.

Devrais-je valider mon dépôt dotfiles publiquement ? Seulement après un audit. Même une petite configuration porte souvent une adresse e-mail ou un alias de travail uniquement. Le privé est plus sûr.

Comment je synchronise les fichiers qui changent constamment, comme les signets du navigateur ou l’historique du shell ? Syncthing, pas un outil dotfiles. Les dotfiles versionnés n’aiment pas le changement toutes les heures.

Vaut-il la peine d’apprendre Nix juste pour les dotfiles ? Pour les dotfiles seuls, non. Pour quiconque construit des homelabs, des conteneurs de développement et des builds reproductibles, oui.