I believe you already heard about DevOps and Infrastructure as a Code ideas. This concept stuck into my mind some time ago for development purposes and to manage project related infrastructure, I even gave a talk at JEEConf this year (20013), here is a link BTW Избавьтесь от рутины конфигурации окружений JEE проектов с помощью Vagrant (talk is in russian).
Well this note is something a bit different but quite closed. Recently I’ve got an idea to throw everything out of my MBP and have every software/app I need to be installed in controlled way e.g. using Boxen (source code @github). If to say in 2 words Boxen is an automation of configuration of development environments for OS X (currently there is just OS X support, Puppet that is used under the hood supports other OSs as well though).
So it took some of my spare time to back up everything I had on my laptop before, then erase hard drive and reinstall OS X from scratch. After that I cloned https://github.com/boxen/our-boxen and started my journey. There is my Boxen‘s repo https://github.com/webdizz/my-boxen with some things I have right now built and configured with it. I said some things because it’s an incremental way and it takes some time to automate parts of infrastructure I have on my laptop. Currently there are all applications, software like Git, Ruby, Java, OS preferences and configuration of apps like Emacs, Vim, Terminal (iTerm2 I’m tasting it right now). I really like a concept of dotfiles, my is here https://github.com/webdizz/dotfiles, and Boxen has quite straight forward support of it.
Additionally there is a way to amend your working space configuration with private dotfiles. For example, your SSH configuration, aliases for intranet servers etc. could be added into private dotfiles repository and easily managed with Boxen.
There are useful links to get started with Boxen:
Enjoy to control your laptop build process incrementally and repeatable way.