Linux Konfigurationen verteilen

Ich versuche momentan aus verschiedenen Gründen immer mehr Programme auf der Kommandozeile mit einfachen Linuxwerkzeugen zu erledigen. Beipiele sind mutt (Mailprogramm) und vim (Editor). Einer der Vorteile ist das die Konfigurationen meistens in einem Textformat vorliegen und somit auch über eine Versionskontrolle verwaltet und verteilt werden können.

Anhand dieses Beitrags habe ich versucht zum Einstieg die mutt in vim Konfigurationen zu verteilen.

Zuerst wird auf dem Gitlabserver ein neues Repository erstellt und in das eigene Verzeichnis geclont.

git clone git@git.hgnb.de:hb/dotfiles.git
cd dotfiles
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Die Konfigurationen für mutt und vim liegen standardmäßig leider nicht im gleichen Verzeichnis. .vimrc liegt im $HOME Verzeichnis und die mutt Konfiguration liegt im .config Verzeichnis.

mkdir .config
mv ~/.vimrc ~/dotfiles/
mv ~/.config/mutt ~/dotfiles

Jetzt brauchen wir ein Script das uns für alle Konfigurationsdateien und -verzeichnisse die wir in dem dotfiles Verzeichnis verwalten einen symbolischen Link an die richtige stelle setzt.

vi install_dotfiles.sh

  #!/bin/bash
  dotfiles=(".vimrc" ".config/mutt" ".password-store" )
  dir="${HOME}/dotfiles"
  for dotfile in "${dotfiles[@]}";do
	 echo "${HOME}/${dotfile}"  
	 ln -s "${HOME}/dotfiles/${dotfile}"  "${HOME}/${dotfile}"
  done
    

chmod +x install_dotfiles.sh

Einige Cache Daten für mutt wollen wir aber nicht im Git haben

vi .gitignore
   .config/mutt/accounts/*

Jetzt noch alle Dateien in das Repository einchecken

git add .config .password-store .vimrc install_dotfiles.sh .gitignore
git commit
git push

Kommen wir jetzt auf einen neuen Rechner brauchen wir nur das Repository zu hohlen und den “Installer” starten

  git clone git@hawk:hb/dotfiles.git
  cd dotfiles/
  ./install_dotfiles.sh 

Wollen wir dann später eine weitere Konfiguration diesem Ansatz hinzufügen müssen wir es nur in das dotfiles Verzeichnis verschieben. Die neue Datei in den Installer aufnehmen und einchecken.

  mv .vim dotfiles
  vi dotfiles/install_dotfiles.sh
  cd dotfiles
  git add .vim
  git commit install_dotfiles.sh
  git push

Dann können wir auf den anderen Rechner die Konfiguration einfach hohlen


  cd dotfiles/
  git pull
  ./install_dotfiles.sh