Hashrocket Dot Files
Shell Ruby Vim script
Latest commit 0207c64 Dec 12, 2016 @dkarter dkarter committed on GitHub Merge pull request #53 from hashrocket/replace-bufonly-with-bdubs
Replace bufonly with the more feature-ful bdubs
Failed to load latest commit information.
.bundle Add bundler config Jul 7, 2016
.vim Add support for PSQL squiggly heredoc highlighting in Ruby Jun 6, 2016
.zsh/functions Bump bundler zsh completion Mar 20, 2015
bin Fix: should only warn when the file does NOT exist Sep 22, 2016
custom Add install/uninstall support for custom files May 27, 2014
hr Add hr-group Aug 30, 2016
.ackrc Separate ignored dirs into different flags. Jun 18, 2015
.bash_profile Add RVM to PATH for scripting Nov 15, 2012
.bashrc Use "yellow" host prompt when on remote host (SSH) Nov 23, 2015
.clippy.rb Remove IRB dependency from Pry Jul 28, 2016
.ctags Ctags settings for elixir Jun 24, 2016
.cvsignore Files containing the word 'tags' are not ignored May 7, 2013
.gitconfig Add `cheddar` as an alias Oct 11, 2016
.gitconfig.local Check Git version before copying local config Oct 2, 2012
.gitignore Add FILES file to .gitignore Apr 21, 2014
.hashrc Rename hashrc to sharedrc May 23, 2014
.irbrc Remove IRB dependency from Pry Jul 28, 2016
.pryrc Remove IRB dependency from Pry Jul 28, 2016
.psqlrc Add basic psqlrc Sep 9, 2015
.railsrc Add railsrc Sep 14, 2015
.rspec Add .rspec Sep 14, 2015
.screenrc Remove extraneous screen command bindings Sep 20, 2011
.sharedrc Remove unused hitch wrapper Aug 5, 2016
.tmux.conf Update tmux mouse options for 2.1 Oct 22, 2015
.vimbundle Replace bufonly with the more feature-ful bdubs Dec 12, 2016
.vimrc Enable the built-in man page plugin Nov 19, 2016
.zshrc Set cdpath *after* custom init has run Aug 5, 2016
README.md Require flag for workstation install Sep 22, 2016



Dotmatrix is a collection of dotfiles used at Hashrocket to customize various development 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!

What are dotfiles?

Dotfiles 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

Most users will see a long list of files that you might not have know were even there! Since they start with a '.' the OS ignores them (usually) - those are your current dotfiles, Dotmatrix hopes to replace/augment whatever configuration you already have.


Start by cloning down the repo:

$ git clone https://github.com/hashrocket/dotmatrix.git

Then run this script:

$ bin/install

This script symlinks all dotfiles into your home directory.

Hashrocket Workstation

Dotmatrix comes with gitconfig for our Hashrocket Workstations that can be installed like so:

$ bin/install --workstation

Safe by Default

When you install Dotmatrix like this, only files that do not already exist in your $HOME directory will be linked. If you have your own .bashrc file, for example, Dotmatrix won't mess with it.

What we'd recommend, however, is moving that file 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 Dotmatrix that contains a newline-delimited list of dotfiles to symlink and keep up to date with Dotmatrix.

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

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

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

Vim bundles

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

$ hr vimbundle

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 vimbundles.sh 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.


hr is a command with lots of useful scripts as subcommands, based loosely on Basecamp's sub.

When you run bin/install, hr is installed automatically. If you don't want it, simply comment out the line from ~/.zshrc.local or ~/.bashrc.local that initializes it.

To use, just run hr. Each subcommand is self-documenting.

hr plugins

If you have have commands you'd like to add to hr, add them within a "plugin". Plugins are really just folders within hr's "plugins" folder.

The anatomy of a plugin follows:


With the above plugin, hr my-awesome-command would run the script located at hr-my-awesome-command.

Plugins are designed to be git repos. For example, if there were another hr plugin you wanted to add, you could add it like this:

$ hr plugins add my_plugin git://github.com/path/to/git/repo.git

For more information, run hr help plugins

Actively Maintained

At Hashrocket we use Dotmatrix on all of our development machines, then for many of us we get so familiar with the setup that we use it on our personal machines too. That means there's a lot of picky nerds using Dotmatrix every day to make their tools easy and fun to use.


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


Hashrocket logo

Dotmatrix is supported by the team at Hashrocket, a multidisciplinary design and development consultancy. If you'd like to work with us or join our team, don't hesitate to get in touch.