SL
Skeptik Log
skeptik-log

I tuoi dotfiles, ogni macchina, un solo comando

Autore: Skeptik Log

Configurare una macchina nuova di solito significa ore passate a personalizzare impostazioni, reinstallare tool e copiare manualmente i dotfiles da un altro computer. E se un singolo comando potesse riprodurre l’intero ambiente, segreti inclusi, con template che si adattano a ogni host? E’ esattamente ciò che promette chezmoi, e dopo anni di evoluzione silenziosa è diventato uno dei progetti più seguiti nella sua categoria.

TL;DR: Chezmoi risolve il problema che Git da solo non può affrontare: dotfiles parametrici su macchine diverse, con gestione dei segreti integrata e deployment in un comando. Il compromesso è la complessità, ma per chi gestisce più di due macchine si ripaga subito.

Fonte: Video YouTube

Perché ti dovrebbe interessare

Se hai mai configurato un laptop nuovo e pensato “l’ho già fatto su un’altra macchina, perché devo rifarlo?”, questo articolo fa per te. Vediamo perché Git non basta per i dotfiles, come chezmoi risolve il problema dei file parametrici e dei segreti, e quando vale davvero la pena impararlo.

Il problema di Git da solo

La maggior parte degli utenti Linux, prima o poi, scopre che i propri dotfiles starebbero bene in un repository Git. Funziona, fino a un certo punto. Nel momento in cui possiedi più di una macchina, le crepe si vedono.

Un desktop con GPU Nvidia ha bisogno di impostazioni diverse rispetto a un laptop con AMD. Una workstation a tre monitor non ha nulla in comune con un portatile a schermo singolo. La strategia “un branch per macchina” diventa presto un incubo di manutenzione: merge si accumulano, le modifiche su un branch non arrivano mai agli altri, e finisci per gestire repository invece di configurazioni.

Prima di chezmoi, strumenti come GNU Stow e yadm hanno provato a colmare questo vuoto. GNU Stow crea symlink dai pacchetti alla home directory: funziona bene per configurazioni semplici, ma non offre né template né gestione dei segreti. yadm (Yet Another Dotfiles Manager) aggiunge il tracking via Git con file alternativi per classe, ma resta ancorato al branching manuale e non integra nativamente i password manager. Chezmoi è stato progettato fin dall'inizio per risolvere esattamente questi problemi: invece dei branch, usa template Go; invece di committare segreti, li delega a password manager esterni.

Come funziona chezmoi

Chezmoi tratta la tua home directory come il target e mantiene una directory sorgente separata, un repo Git, che contiene lo stato desiderato di ogni file gestito. Quando esegui chezmoi apply, il motore renderizza ogni template, recupera i segreti dal password manager e scrive i file finali al posto giusto.

Aggiungere e modificare file

Il workflow di base è semplice:

  • chezmoi add ~/.bashrc copia il file nella directory sorgente e inizia a tracciarlo
  • chezmoi edit ~/.bashrc apre la versione sorgente nell’editor, sia che sia un file normale sia che sia un template
  • chezmoi cd ti porta nella directory sorgente per usare Git direttamente
  • chezmoi diff mostra cosa cambierebbe prima di applicare le modifiche

Ogni cambiamento è versionato attraverso Git, quindi ottieni la storia completa delle tue configurazioni senza sforzo aggiuntivo.

Template che si adattano per host

Ecco dove chezmoi supera un setup Git tradizionale. Aggiungendo .tmpl al nome di un file, lo trasformi in un template Go che può fare riferimento a proprietà di sistema come hostname, OS e architettura. Un singolo .bashrc.tmpl può produrre output diversi su ogni macchina:

{{- if eq .chezmoi.hostname "workstation" }}
export DISPLAY=:0
{{- else if eq .chezmoi.hostname "laptop" }}
export DISPLAY=:0
{{- end }}

Un esempio pratico: un file di configurazione OBS in formato template. Su una macchina con GPU Nvidia, il template abilita l’encoding hardware NVENC; su tutto il resto, passa al software encoding. Niente branch, niente modifiche manuali per host, niente differenze dimenticate.

Gestione dei segreti senza perdite

I dotfiles spesso contengono dati sensibili: chiavi API, chiavi private SSH, token di accesso. Committarli in un repository Git, anche privato, è un rischio per la sicurezza. Chezmoi risolve il problema integrandosi direttamente con i password manager.

La lista attuale di password manager supportati è ampia: 1Password, Bitwarden, AWS Secrets Manager, Azure Key Vault, Dashlane, Doppler, ejson, gopass, KeePassXC, Keychain (macOS), GNOME Keyring, keepass, LastPass, pass, Proton Pass, Vault e Windows Credentials Manager, tra gli altri. Il supporto per Proton Pass e Dashlane è stato aggiunto nelle release recenti, rendendo chezmoi uno dei dotfile manager più versatili per quanto riguarda l'archiviazione dei segreti.

Prendiamo il caso di una chiave privata SSH: con bitwarden_attachment_by_reference, il template recupera il segreto da Bitwarden al momento del rendering. Il segreto stesso non finisce mai nel repository Git. Il risultato è un setup di dotfiles portabile e sicuro di default.

Per chi è chezmoi?

La risposta onesta: power user che gestiscono più macchine Linux (o macOS, o Windows, o FreeBSD) e hanno confidenza con Git e la riga di comando. Se non hai mai sentito il dolore di riconfigurare un laptop nuovo da zero, chezmoi ti sembrerà eccessivo. Ma se la frase “lasciami solo configurare il mio ambiente” ti riempie di terrore, potrebbe essere esattamente ciò di cui hai bisogno.

Il progetto ha accumulato oltre 19.400 stelle su GitHub, con 636 fork e attività di commit costante (l'ultimo push risale al 2026-04-28, il giorno prima di questo articolo). Scritto in Go e rilasciato sotto licenza MIT, chezmoi è un singolo binario senza dipendenze runtime. Funziona su Linux, macOS, Windows, FreeBSD e persino OpenIndiana. La release attuale è la versione 2.70.2, datata 2026-04-17.
Chezmoi non è esente da critiche. La curva di apprendimento è reale: i template Go hanno una sintassi propria e alcune stranezze, e la struttura della directory sorgente è diversa da quella che vedi nella tua home directory, il che può disorientare all'inizio. La documentazione è completa ma densa, e i nuovi arrivati a volte faticano a trovare la variabile template giusta o l'integrazione col password manager corretta. Rispetto a strumenti più semplici come Stow, chezmoi richiede un investimento iniziale maggiore, che però si ripaga quando il tuo setup supera la manciata di file.

Per chi vuole approfondire

Da qui in poi si entra nel tecnico. Se ti interessa l’idea più dell’implementazione, puoi saltare direttamente alla conclusione.

Comandi e pattern avanzati

Alcuni pattern che rendono l’uso quotidiano più scorrevole:

  • chezmoi merge risolve i conflitti quando sia lo stato sorgente sia il file target sono cambiati, offrendo un merge a tre vie simile a Git
  • chezmoi data stampa tutte le variabili template disponibili, utile quando stai scrivendo template e hai bisogno di sapere quali proprietà sono accessibili
  • chezmoi doctor esegue diagnosi sul tuo setup, verificando che tutte le integrazioni (Git, password manager) funzionino correttamente
  • L’integrazione con tool esterni: chezmoi può eseguire script prima e dopo l’applicazione delle modifiche, così puoi avviare package manager, installare font o impostare permessi nello stesso flusso di lavoro

Deployment in un comando

Su una macchina vergine, eseguire chezmoi init-apply https://github.com/tuonome/dotfiles clona il tuo repo e applica tutto in un solo passo. Questo è il momento dove l’investimento di tempo nella configurazione iniziale si traduce in risparmio reale: da qui in avanti, ogni nuova macchina è a un comando dalla tua configurazione completa.

Lo sponsor: InternXT

L’occasione è utile per segnalare anche InternXT, un provider europeo di cloud storage open source. InternXT offre crittografia end-to-end zero-knowledge, conformità GDPR, certificazione ISO 27001 e supporto per Rclone e WebDAV. Dispone inoltre di versioning dei file e crittografia post-quantistica. Vale la pena sottolineare che si tratta di una pubblicità, non di un’endorsement editoriale.

Il punto

  • Chezmoi risolve il problema che Git da solo non può affrontare: dotfiles parametrici su macchine eterogenee con gestione dei segreti di prima classe
  • Il sistema di template Go è potente ma richiede un investimento iniziale di apprendimento
  • Per chi gestisce più di due macchine, il ROI si materializza la prima volta che esegui chezmoi init-apply su un’installazione pulita

I dotfiles sono il DNA del tuo ambiente di lavoro. Chezmoi ti permette di replicarlo su qualsiasi macchina senza copiare segreti in chiaro e senza impazzire con i branch.

00:00 - Chezmoi 05:48 - Come si usa 10:22 - Template e gestione dei secret 14:01 - Tips & Tricks 17:53 - Conclusioni
skeptik-log Autore: Skeptik Log