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:
This script symlinks all dotfiles into your home directory.
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
Dotmatrix will source it for you.
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
FILES exists in the Dotmatrix source directory, running
will only symlink the dotfiles listed within
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 .tmux.conf .sharedrc $ bin/install # Only installs .tmux.conf and .sharedrc
For Vim users, there's another command you might want to run, after you've run
bin/install from inside Vim:
Or from the command line:
vim -c 'PlugInstall | qa'
This will install the set of Vim plugins we use.
After you've done
./bin/install, you'll have a
.vimbundle file and this is a
manifest of sorts that Vim Plug 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.
~/.vimbundle.local file should include one plugin per line, each having
the following format:
You need not include a trailing
If you are upgrading from a previous version of Dotmatrix that used Pathogen make sure to update your .vimbundle.local to the above format. You can do that easily with the following command:
sed -ie "s/\(.*\)/Plug '\1'/" .vimbundle.local
hr is a command with lots of useful scripts as subcommands, based loosely on
When you run
hr is installed automatically. If you don't want
it, simply comment out the line from
To use, just run
hr. Each subcommand is self-documenting.
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:
<root>/ libexec/ hr-my-awesome-command hr-my-other-command
With the above plugin,
hr my-awesome-command would run the script located at
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
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
bin/upgrade. This will fetch the latest changes from GitHub and
symlink any new files.
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.