$HOME sweet ~/
Shell Ruby VimL Perl Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
ack Default pager for ack Jan 9, 2013
api Stub for API-related aliases Sep 19, 2012
color Submodule base16 shell colors Nov 8, 2015
ctags Refresh vim submodules, add tagbar Jan 13, 2013
curl Fix curlrc symlink Nov 12, 2015
go Remove defunct env var Dec 23, 2014
homebrew Fix missing tap for homebrew fonts Aug 26, 2016
keyboard Bump subs Jan 1, 2016
osx Key repeat Nov 9, 2015
ruby Set up list of default gems for every ruby Dec 29, 2015
script Update Vundle config Nov 8, 2015
tmux Fix tmux mouse scrollback in 2.1 Nov 12, 2015
twitter Install rainbowstream Nov 10, 2015
vim Add vim-rake Feb 13, 2016
zsh Update grc setup Jul 9, 2016
.gitignore Pathogen => Vundle Sep 20, 2013
.gitmodules Submodule base16 shell colors Nov 8, 2015
README.md LOL real names Mar 13, 2013


There's no place like ~/

These are my personal dotfiles. They turn ordinary stock applications into my own carefully crafted lightsaber.


Yonk and I scour the galaxy looking for nanosecond timesavers for all our favorite tools. If you've got a tip let us know.


Get your own

If you're new to dotfiles, this probably isn't the best starter repository for you. While these started as a clone of Holman's, many utilities are unique to my workflow. I recommend other dotfile frameworks out there.


If you're crazy and want to clone my dots anyway:

  • git clone https://github.com/pengwynn/dotfiles.git ~/.dotfiles
  • cd ~/.dotfiles
  • script/bootstrap

The install script will symlink the appropriate files in .dotfiles to your home directory. Everything is configured and tweaked within ~/.dotfiles, though. All files and folders ending in .symlink get, you guessed it, symlinked. For example: ~/.dotfiles/vim/vimrc.symlink gets symlinked to ~/.vimrc.

Main elements

There's a few special files in the hierarchy.

  • bin/: Anything in bin/ will get added to your $PATH and be made available everywhere.
  • topic/*.zsh: Any files ending in .zsh get loaded into your environment.
  • topic/*.symlink: Any files ending in *.symlink get symlinked into your $HOME. This is so you can keep all of those versioned in your dotfiles but still keep those autoloaded files in your home directory. These get symlinked in when you run script/bootstrap.
  • topic/*.completion.sh: Any files ending in completion.sh get loaded last so that they get loaded after we set up zsh autocomplete functions.

Prior art

This project began as a fork of (and is heavily inspired by) Zach Holman's dotfiles, whose topic-based symlinking approach makes this so easy. I also have stolen freely from:

Share your dots

If you've got a great set of dots (or want to get started), check out dotfiles.github.com. Ping @octodots with great dot sets you've found or tips and tricks for your favorite tools.