These are the configuration files I want to have in every Linux box I use.
Installation instructions come first because it is what I need most of the time, but if you are not me, please read on :)
git clone git://github.com/jdevera/dotfiles ~/.dotfiles
cd ~/.dotfiles
bash install
Most files handle Bash or Vim configuration, but I also share my settings for GNU Screen, Tmux, Git, Emacs, the Python interpreter, and others.
My git configuration file is actually a generator (more on this below).
My Vim configuration will install all the plug-ins I have installed.
There are some configuration files, such as .gitconfig that might contain sensitive data or that have contents that vary across different machines. For these cases, I don't directly store the configuration file, but a generator for it.
These generators very are simple bash scripts that contain a template for the file they generate. The values for variable fields are requested during execution or they can be provided with environment variables for unattended installation.
My bash configuration files live in the .bash.d directory.
My .bashrc sources configuration files in this order:
- Every file under .bash.d/local/before
- Every file under .bash.d
- Every file under .bash.d/local/after
Contents of .bash.d/local are not tracked by git, so this is the place to add configuration files that are specific for the current machine.
I am using Junegunn Choi's Vim-Plug to manage my Vim plug-ins and keep them up to date.
With Vim-Plug, I only have to point, in my .vimrc file, to the git repositories of all the Vim add-ons I want to have installed and it takes care or the rest. Vim-Plug clones each add-on under its own directory and adds it to Vim's runtime path.
All add-ons in the official Vim's website are actively mirrored in github by the Vim-Scripts.org project. This means Vim-Plug can be used to install any add-on published in the official site.
I use el-get to manage all the Emacs packages that I want installed.
With the right configuration, I simply have to open Emacs and the packages will be installed if they are not already.