Garder une gestion propre et saine de ses dotfiles
Sur la toile on peux trouver plétore de dossiers dotfiles contenant les fichiers de configurations divers.
Il s’agit souvent de simple dépôt, plus ou moins en vrac. La gestion est plus ou moins facile.
yadm est un outil libre qui va gérer pour vous ces fichiers, en s’appuyant sur git, capable d’utiliser gnupg ou openssl, par exemple, pour chiffrer vos secrets, et pour vous faciliter les sauvegardes régulières ou redéploiement des fichiers.
Par ou commencer ?
Il faut initialiser le dépot:
yadm init
Par défaut, cela crée le dépot dans /home/alexandre/.local/share/yadm/repo.git/
Puis on remplit
Pour ajouter un répertoire ou un fichier il suffit de faire
yadm add .ssh
yadm commit
Vous l’aurez deviné, on peut faire plusieurs ajouts et 1 commit. La commande commit est identique à la fenetre à laquelle vous êtes habitué avec git, puisque c’est git qui est appelé.
Mise à jour ?
Vous avez modifié un fichier ? Pour mettre à jour le dépot, il suffit de refaire un yadm add <mon_fichier> suivi de yadm commit
Tout mettre dans un dépot distant ?
yadm remote add origin <url>
yadm push -u origin master
Pour mes secrets ?
Vous posséder une clé ssh, ou un fichier de pawwsord ? Facile :
cat 'mon_password_files' > ~/.config/yadm/encrypt
cat 'mon_password_files2' > ~/.config/yadm/encrypt2
yadm encrypt
Pour tout déchiffrer ?
yadm decrypt
Si je veux utiliser un autre répertoire pour mon dépot ?
alias yadm='yadm --yadm-repo /home/alexandre/git/yadm'
yadm init
Petit retour
yadm permet d’avoir des versions alternative d’un même fichier, en fonction de l’OS, du hostname, du user etc… Perso je suis pas fan, je préfère avoir 1 dépot par personne/machine etc…
Stocker dans un dépôt public mes fichiers sensibles ? Pas fan non plus. Par contre sur un dépot privé pourquoi pas. Mais attention, stocker dans un dépot chiffré une clé gpg privée, peux virer au cauchemard si il y a perte de la dite clé. Je suis pas persuadé qu’il s’agisse d’une bonne solution.
Dernière note
yadm travail à partir de votre répertoire $HOME.