Vim script Shell Perl Ruby Other
Latest commit b3eb132 Feb 20, 2017 @gabebw icopy: oops
Failed to load latest commit information.
bin icopy: oops Feb 20, 2017
helpful-tips Persist ssh-add across reboots Oct 4, 2016
karabiner.d/configuration icopy: Make common use case easy Feb 19, 2017
slack-themes Add a Slack theme based on 1989.vim Jan 5, 2017
ssh Configuration for Oct 9, 2016
system Don't set an insane key repeat Mar 14, 2016
tag-arduino Arduino: easily create new program Jan 12, 2017
tag-clojure/vim Only enable rainbow parentheses for Clojure Mar 7, 2016
tag-git Fix git git in gitsh Dec 20, 2016
tag-haskell Only set Haskell's shiftwidth in Haskell files Jun 21, 2016
tag-python Python 2 is widely supported Oct 10, 2016
tag-ruby Delete unused bits Dec 31, 2016
tag-tmux Only start tmux if not in an SSH session Oct 13, 2016
terminal-themes Update terminal theme Mar 30, 2014
vim Use Tomorrow Night 80s Jan 6, 2017
zsh-plugins Install zsh-syntax-highlighting from source Oct 12, 2016
zsh Un-break my `bindkey` settings Jan 7, 2017
.gitignore Ignore icopy'd files Sep 26, 2016
Brewfile Brewfile: karabiner-elements Nov 2, 2016 Remove outdated screenshot of my prompt May 21, 2016
agignore Never search in .git Sep 26, 2016
ctags Update ctags for Elixir and JavaScript May 23, 2016
curlrc curl: Don't _always_ turn on verbose mode Jul 3, 2016
editrc editrc Oct 11, 2011
iex.exs iex: show results in cyan Sep 21, 2016
inputrc irb doesn't like `set -o vi` in inputrc Oct 13, 2016 Install rbenv to ~/.rbenv Oct 13, 2016
nethackrc OPTIONS=sound is an invalid option Apr 29, 2016
psqlrc shut up, psql Nov 30, 2013
rcrc Install Arduino IDE Dec 18, 2016
vimrc Use Tomorrow Night 80s Jan 6, 2017
zshenv Make rbenv's new location available in zshenv Oct 13, 2016
zshrc There aren't any 'after' scripts Jan 10, 2017


Gabriel Berke-Williams' dotfiles for Zsh, ruby, git, and more.

Questions? Comments? Open an issue or tweet @gabebw.


  • OS X
  • Zsh (to change your default shell to Zsh: chsh -s $(which zsh) $USER)
  • Homebrew


$ git clone ~/.dotfiles
$ cd ~/.dotfiles
$ ./

It will install rcm and use that to safely symlink the dotfiles, prompting you if a file already exists (like if you already have ~/.zshrc).


rcm will symlink all files into place, keeping the folder structure relative to the tag root. However, non-configuration files and folders like system/, Brewfile,, etc will not be linked because they are in the EXCLUDES section of the rcrc file.


rcm has the concept of tags: items under tag-git/ are in the git tag, and so on. I'm using it for organization, so that if someone starts using Haskell I can point them at all of my Haskell configuration across Vim/Zsh/GHCi, all in one place.


Zsh has lots of good stuff in zsh/options.zsh and zsh/aliases.zsh.

The Zsh prompt is in zsh/prompt.zsh. It shows the current directory, the current git branch, the status of the git branch (changed, staged, clean, etc) and the current Ruby version. It is well-documented, and entirely self-contained: you can copy it into your dotfiles with no changes to test it out. (It does assume you use rbenv.)


Many scripts and configurations have been inspired by or outright stolen from my colleagues at thoughtbot. Of special note, I've stolen many things from Chris Toomey and Gordon Fontenot, among others that I'm sure I'm forgetting.