Minimal personal dotfiles for macOS, managed with GNU Stow.
This setup is focused on:
- Node.js development
- Neovim
- tmux
- iTerm2 as terminal
xcode-select --install/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"brew install stow neovim tmux asdf direnv jq ripgrep reattach-to-user-namespace
brew install --cask iterm2| Package | What it does |
|---|---|
stow |
Symlink manager for dotfiles |
neovim |
Neovim editor |
tmux |
Terminal multiplexer |
asdf |
Runtime manager (Node.js) |
direnv |
Per-directory environment variables |
jq |
JSON processor for shell scripts |
ripgrep |
Fast project search (used by nvim tools) |
reattach-to-user-namespace |
macOS clipboard integration for tmux |
iterm2 |
Terminal emulator used by this setup |
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"asdf plugin add nodejs
asdf install nodejs
asdf set -u nodejs latestmkdir -p ~/Documents/code
git clone <your-fork-url> ~/Documents/code/dotfiles
cd ~/Documents/code/dotfiles
make deps
make install
source ~/.zshrcOpen nvim. Plugin manager will install configured plugins on first launch.
The repo now tracks iTerm2 preferences in iterm2/.config/iterm2/com.googlecode.iterm2.plist, inside a directory-level symlink at ~/.config/iterm2/.
After make install or make stow-iterm2, enable the custom folder once in iTerm2:
- Open iTerm2 → Settings → Preferences
- Enable
Load preferences from a custom folder or URL - Set the folder to
~/.config/iterm2 - Restart iTerm2
Tracked defaults include:
- Report Terminal Type:
xterm-256color - Left Option key:
Esc+ - Right Option key:
Esc+ - Current profile appearance, fonts, and colors
This keeps tmux, zsh, and Neovim Meta/Alt mappings consistent on macOS.
make help # Show all commands
make deps # Check dependencies
make check # Verify symlinks
make status # Show stow package status
make restow # Re-stow all packages
make stow-zsh # Stow a single package
make unstow-zsh # Unstow a single package
make lint # Check for hardcoded paths| Package | What it manages |
|---|---|
zsh |
.zshenv, .zprofile, .zshrc, .profile |
git |
.gitconfig, .gitignore_global |
tmux |
.tmux.conf |
tool-versions |
.tool-versions (asdf defaults) |
nvim |
.config/nvim/ |
direnv |
.config/direnv/direnv.toml |
iterm2 |
.config/iterm2/ |