Dotfiles sincronizzati con un repo con git

Su linux, tipicamente i file di configurazione personali delle applicazioni, vengono chiamati dotfiles, questo nome deriva dal fatto che iniziano con un punto (quindi sono file nascosti all’interno della nostra home).
Essendo file di configurazione, copiandoli ci consentono di spostare le configurazioni del nostro PC, in un altro PC, avendo cosi’ le stesse personalizzazioni in entrambi i PC.

Ovviamente per copiare le nostri configurazioni tra diversi pc, possiamo scegliere 1000 modi diversi, ma ce ne e’ uno piu’ bello e comodo di tutti gli altri, ovvero l’utilizzo di git.

i vantaggi di usare git per questo scopo sono diversi:

  1. Possiamo tenere lo storico di tutte le nostre modifiche
  2. Possiamo caricarlo su un repository remoto che configuriamo in ogni nostro pc, cosi’ che non dobbiamo ogni volta usare delle scomode chiavette usb
  3. se faccio una modifica nel pc A, velocemente la posso “scaricare” anche nel pc B e viceversa, e ovviamente se faccio contemporaneamente modifica dal pc A e dal pc B, git fara’ il merge delle modifiche

insomma i vantaggi non sono pochi.

vediamo qualche breve passaggio per configurare un repo git specifico per i dotfiles (questo e’ solo un modo, ovviamente potete fare come meglio credete).

Innanzi tutto creiamo la cartella in cui vogliamo mettere il nostro repo git, per esempio:

mkdir ~/.dotfiles_sway

(Si, sono passato a sway, qua l’articolo sulla mia configurazione)

Entriamo nella cartella e inizializziamo un repo git al suo interno

cd ~/.dotfiles_sway
git init --bare $HOME/.dotfiles_sway

Ora nel mio ~/.bashrc ho aggiunto questo alias per poter usare git da qualsiasi directory.

alias sdit='/usr/bin/git --git-dir=$HOME/.dotfiles_sway/ --work-tree=$HOME'

e con questo la configurazione di git e’ pronta.
Ovviamente potete creare tutti i repo che volete, io ad esempio ne ho 2, uno dei dotfiles generici, che tengo in un repo github privato, e un altro, quello di sway, che tengo in un altro repo github pubblico.

Sincronizzazione con github

Eventualmente potremmo arricchirla integrandolo con github (o quello che preferite).

Io per esempio ho un account su github (si ho pensato di fare il passaggio a gitlab dopo l’acquisizione da parte di microsoft, ma per ora non ho voglia), a cui accedo tramite chiave ssh con questa config su .ssh/config

Host github.com
HostName github.com
User git
Port 22
IdentitiesOnly yes
TCPKeepAlive yes
IdentityFile ~/.ssh/id_rsa.github

Ovviamente la chiave ~/.ssh/id_rsa.github va impostata sul vostro account github

a questo punto aggiungete il repo remoto

git remote add origin git@github.com:<username>/<repo_name>.git

e siete pronti per sincronizzare tutto su github.