Wer sich auch verschiedenen unterschiedlichen Rechnern zuhause fühlt, möchte dort die gleichen Einstellungen vorfinden, wie auf den anderen Geräten auch.
Mit Einstellungen sind hier vor allem EInträge in den "gepunkteten Dateien", also den Dotfiles gemeint. Die finden sich üblicherweise im Homeverzeichnis (~) und heißen z.B. .vimrc oder befinden sich unter .config.
Nur wie stellt man das geschickt und effizient sicher, dass die Einstellungen überall gleich sind?
Man könnte:
- das ganze home in ein Versionskontrollsystem, z.B. git packen
- sich etwas mit rsync und cron oder ähnlichem basteln
- die Einstellungsdaten per Hand hin- und her kopieren und hoffen, dass man dabei die Übersicht behält. Z.B. Änderungen nur auf einem master-System machen und dann überall hinkopieren
Nutzung
Hier schafft chezmoi Abhilfe.
Motto ist "Manage your dotfiles across multiple diverse machines, securely.", also die Einstellungsdateien über verschiedene Maschinen sicher verwalten.
Vorweg: Leider ist es nicht in den offiziellen Repositories enthalten, aber es gibt zumindest vorgefertigte deb-Pakete für allerlei Plattformen.
Initialisierung
Nachdem das Tool es aber mal auf die Platte geschafft hat, können wir loslegen:
Code: Alles auswählen
chezmoi init
Dateien hinzufügen
Mit folgendem Befehl fügen wir die erste Datei zu chezmoi hinzu:
Code: Alles auswählen
chezmoi add ~/.vimrc
chezmoi kopiert die Datei ~/.vimrc nach ~/.local/share/chezmoi/dot_vimrc. Die kann dann dort mit den gewohnten git-Bordmitteln verwaltet werden, in meinem Fall habe ich ein gitlab-Repository hinterlegt und dorthin gepusht, damit ich es auf anderen Rechnern "auschecken" kann. Ich verzichte mal auf die Beschreibung von git an dieser Stelle. Falls notwendig, kann ich das noch in weiteren Kommentaren erläutern.
Dateien bearbeiten
Es gibt nun mehrere Möglichkeiten die Datei zu bearbeiten, entweder direkt, oder nun besser mittels:
Code: Alles auswählen
chezmoi edit ~/.vimrc
Code: Alles auswählen
chezmoi diff
Code: Alles auswählen
chezmoi apply
Das sind zunächst mal die grundlegenden Funktionalitäten.
Weiterführende Themen wären z.B. templating.
Damit kann man beispielsweise manche Teile nur auf bestimmten Rechnern aktiv haben, hier ein if, das gegen den Hostnamen testet:
Code: Alles auswählen
# machine-specific configuration
{{- if eq .chezmoi.hostname "work-laptop" }}
# this will only be included in ~/.bashrc on work-laptop
{{- end }}
chezmoi bietet sicher noch einen Haufen weiterer Funktionalität, aber ich hoffe, ich konnte euch einen ersten Eindruck liefern. Für mich hat es sich beim Wechsel meines alten zum neuen Laptop schon massiv gelohnt. Nicht mehr einfach eine handvoll dotfiles kopieren, manche vergessen, bei manchen irritiert sein, dass man zu viel kopiert hat, sondern einfach direkt mit allem wichtig loslegen können