My Dot Castle
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

My Dot Castle


castle for my dotfiles - the cornetstone of dev-kind ! :)

This repository contains the dotfiles (stolen/compiled/created) by me. Major inspirations from @holman and @mathiasybnens. More inspirations from dotfiles repository by @skwp. Credit has been given where I could. :)

Load Time Comparison

$ ./scripts/benchmark.rb 96d8773..3d7efab
        zsh on 96d8773: 0.784s (ran 10 times with rehearsal)
        zsh on 3d7efab: 0.272s (ran 10 times with rehearsal)
        vim on 96d8773: 0.724s (ran 10 times with rehearsal)
        vim on 3d7efab: 0.357s (ran 10 times with rehearsal)
vim_ruby on 96d8773: 1.323s (ran 10 times with rehearsal)
vim_ruby on 3d7efab: 0.382s (ran 10 times with rehearsal)

Save dotfiles in ~/Code/__dotfiles !!!

Following some conventions, I store all my code inside ~/Code directory. This has obvious organizational benefits. On similar grounds, I store my dotfiles inside ~/Code/__dotfiles directory, which is more sensible in my opinion than ~/.dotfiles, because:

  • dotfiles are the heart of your code - obvious reason to have them stored right next to all your code in ~/Code
  • dotfiles directory is in front of your eyes at all times, and hence, you will be intrigued to change it more often than when it was hidden.
  • more importantly, improving code in dotfiles implies improved productivity.


There will be a 80% chance you will have a reason not to use ~/Code/__dotfiles for the installation, in which case, you can simply modify the first line of the following bash commands to suit your taste ;) Note that, DotCastle requires homebrew (or linuxbrew) and ohmyzsh, and the same can be installed manually, or via the installer script at ./scripts/

export DOTCASTLE=$HOME/Code/__dotfiles
git clone git:// $DOTCASTLE
# run the installer script

How my Development Environment is Setup

A lot of this information can be found on my blog.

Primarily, I use a lot of tools to setup my development environment, and thanks to the *nix goodness, all fo these tools have a way to specify their configurations. Most of the times, I will include such configurations within this repository to keep them versioned.

The minimal setup that I would like to work with includes these dotfiles, as well as base16-eighties and solarized themes for both iTerm2 and MacVim, along with Homebrew on my MacOSX.

Everything goes inside ~/Code

All my code resides in the ~/Code directory. Typically:

  • repositories are downloaded to the repos directory.
  • these dotfiles are present at __dotfiles directory.
  • scripts are saved to __dotfiles/scripts directory, and include subs created.
  • websites that I develop upon locally are present at sites directory.
  • work related code is located in work directory.
  • other personal/miscelleneous code is present in topic-wise directories under personal directory.


I prefer iTerm2 over Terminal app in MacOSX, and have installed the base16-eighties theme for it. Note that, this requires base16-shell to be loaded in my ZSH configuration.


I like OhMyZSH! project, which provides me with a ready-to-use ZSH configuration. I customize upon that heavily, but OMZ! is a major ingredient.

HomeBrew and packages

HomeBrew is a necessity for development on OSX, and is a really awesome package manager. I use it to install various dependencies and packages, like macvim, rbenv, autoenv, zsh-syntax-highlighting etc. If there is a formula available for a particular program in Homebrew, I would prefer it over other sources. Also, note that brew installs zsh completions to /usr/local/share/zsh/site-functions file, which helps me add custom completions, easily. On Ubuntu, I install the Linux version of Homebrew, namely Linuxbrew.

Post Install Tasks

  • Install dotjs