This contains all my dotfile configurations (in particular my vim setup) so that I can share it across computers. Before you go diving in, please be aware that there are a few pre-requisites:
This repo is designed to work with homesick which handles all my symlinking for me automatically. Much of the configuration is inspired by Thoughtbot's dotfiles.
This repository uses a git submodule (home/sensitive) for private configs that shouldn't be public:
- API keys, tokens, Claude Code credentials
- Private configurations with secrets
Why a submodule? Keeps sensitive data separate while maintaining version control across machines.
Requirements: The setup script will automatically install:
- Homesick (for dotfile management)
- Oh My ZSH (shell framework)
- Homebrew (package manager)
- Dev tools: git, gh, nvim, tmux, tmuxinator, ripgrep, fzf, direnv, asdf, starship, heroku, ngrok
- Shell: z, zsh-history-substring-search, zsh-nvm
- Fonts: Inconsolata Go Nerd Font
- Claude Code CLI
Next step is to FORK this repository, then clone it via homesick:
homesick clone YOUR_GITHUB_USERNAME/dotfiles
It will ask if you want to evaluate - at this stage you do not!
- Create a private repository on GitHub (e.g.,
your-username/sensitive-dotfiles) - Update
.gitmodulesto point to your private repository - Add your sensitive files and the setup script will handle the rest
The setup script handles all pre-installations and configuration:
homesick rc dotfiles
This will install all dependencies, create symlinks, and set up everything you need. Then restart your terminal.
After forking, update these files with your personal info:
home/.gitconfig- Change name and email to yours.gitmodules- Update the sensitive-dotfiles URL to your private repository- Create your sensitive submodule with private configs before running setup
Everything else uses ~ or $HOME and will work across different machines!
The submodule works like a separate git repo:
Adding files: cds → add files → git add . && git commit && git push
Sync across computers: sup (pulls latest sensitive configs)
Main dotfiles:
hup- Update, commit and push all dotfilescdh- Navigate to main dotfiles folder
Sensitive/Claude configs:
sup- Commit and push sensitive configs (ensures main branch tracking)cds- Navigate to sensitive configs foldersdup- Update all submodules (sync changes across computers)
Manual commands (if needed):
Main dotfiles: homesick commit dotfiles homesick push dotfiles
Sensitive configurations: cd ~/.homesick/repos/dotfiles/home/sensitive git add . git commit -m "Update sensitive configs" git push
Submodule updates: cd ~/.homesick/repos/dotfiles git submodule update --recursive