Set up a new Linux system just the way you like it, in seconds. This is loosely based on a similar approach I read a very long time ago.
I got tired of having my common dotfiles (.bashrc, .pythonrc, .vimrc, etc.) out of sync across all the different workstations and shells I use on a regular basis. So, I rewrote them in a way to be generic, allowing host-specific and domain-specific files to be sourced as appropriate. I also included window-manager specifics, like my Openbox configuration.
Now I can take a freshly installed operating system and make it cozy and customized without any tedious repetition. I also get the added benefit of source control to view previous versions of files.
When I set up a new box, first I install my private SSH key:
With the appropriate github SSH identity in place, I can do this:
That clones my git repo and copies my entire environment into my home directory.
I also have another helper script to keep track of common packages I use across all my systems. It works like this:
Those simple steps eliminate 95% of the fiddling I used to do when moving into a freshly installed system. The only remaining tweaks deal with differences between distributions or domain-specific configurations, and I write my dotfiles in such a way to accommodate those scenarios. For example, my .bashrc only contains things I'm reasonable sure are portable across all of the systems I use. For host- or domain-specific things, I do the following at the end of my common .bashrc:
That way, settings are only applied in their appropriate context.
If I change something on any of my systems, I can easily push the change back to my master git repository. For example:
Steal this technique
If you want to use my configuration as a starting point, you can just branch my git repo and make your own modifications following the workflow described above.