Dotfiles for comps
VimL Shell Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Dotmatrix is a collection of dotfiles used at Hashrocket to customize various deveopment tools. This project is the culmination of many years worth of tinkering with our favorite tools to get them to behave just right. We think using dotmatrix makes working with these tools more pleasant and hope you will too!

Looking for wmenv documentation? See

What are dotfiles?

Dotfile are really just plain text files that start with a '.' and they are used to set preferences for things like Git and Vim. To see your current dotfiles, open a terminal and in your home folder run this:

$ ls -a


Start by cloning down the repo:

$ git clone

Then run this script:

$ bin/install

This script symlinks all dotfiles into your home directory.

Please note: This will only install files that do not already exist in your $HOME directory. If you have, e.g. your own .bashrc file, you can move it to ~/.bashrc.local, and dotmatrix will source it for you.

Partial Installation

Sometimes it's useful to only install part of dotmatrix. For partial installation, you can create a FILES file in the root of dotfiles that contains a newline-delimited list of dotfiles to symlink and keep up to date with dotfiles.

When FILES exists in the dotfiles source directory, running bin/install will only symlink the dotfiles listed within FILES.

If, for example, you only want the tmux configuaration and wmrc files, and want to ignore all of the rest of dotfiles's dotfiles:

$ cd path/to/dotfiles
$ cat FILES
$ bin/install # Only installs .tmux.conf and .wmrc

Vim bundles

For Vim users, there's another script you might want to run, after you've run bin/install:

$ bin/

This will install the set of Vim bundles we use.

After you've done ./bin/install, you'll have a .vimbundle file and this is a manifest of sorts that the script will use to install various vim plugins. If you have other plugins that you like that aren't on this list, you can put them in a ~/.vimbundle.local and that will be installed secondarily.

The ~/.vimbundle.local file should include one plugin per line, each having the following format:


You need not include a trailing .git.

In addition, our Dotfiles support the ability to limit plugins for a given project. Simply place a .vimbundle file in the project root, containing a whitelist of the plugins that should be loaded. This gives us the flexibility to have specific global, personal and project-specific plugin configurations that match the behavior of the .vimrc file. This gives us the ability to experiment with new plugins easily, as well as to triage potential issues by limiting what is loaded.

Project .vimbundles are also consulted when installing/updating plugins -- as long as they are within the $WELLMATCH_DIR. This directory can, of course, be overridden on your local machine should you choose to organize things differently.

Terminal configuration

The vim setup contains both the vim-airline plugin and its configuration. This gives you a nice status line in vim that looks like this: vim-airline

In order for this to work, your terminal emulator needs to use a font with the requisite symbols. A list of them can be found in the powerline-fonts repository. Some recommended choices are Hack, Meslo or Fira. To use, download the font to your local machine, install it (on OSX, this means using Font Book), and configure your terminal emulator to use them. Note that you may need to tweak the font settings (particularly the size) to get the chevrons to line up juuuuuuust so.

In case you're using iTerm2: to configure, go to Preferences -> Profiles -> Text, and set both the Regular Font and Non-ASCII Font settings to the one you just installed. You may have to tweak the font size, particularly for the Non-ASCII Font setting, to get the chevrons to line up. Using the Hack font, you will likely need to set Non-ASCII Font size to be 1pt smaller than the Regular Font size.


Keeping your dotfiles up-to-date is easy. Just visit the dotfiles directory and run bin/upgrade. This will fetch the latest changes from GitHub and symlink any new files.