This setup uses GNU Stow.
GNU Stow is a symlink farm manager which takes distinct packages of software and/or data located in separate directories on the filesystem, and makes them appear to be installed in the same place. Perfect for managing dotfiles.
-
Install Xcode CLI tools (macOS):
xcode-select --install
-
Install packages:
brew install stow ripgrep fd ack ctags jesseduffield/lazygit/lazygit tig git-delta jq
-
Install Homebrew
-
Install oh-my-zsh
-
Install Clipy
-
Install oh-my-zsh plugin
-
Install iTerm2
-
Install tmux
-
Install Neovim
-
Install asdf
-
Install asdf-nodejs
-
Install Node.js:
asdf install nodejs 22.18.0 asdf global nodejs 22.18.0
-
brew install --cask font-jetbrains-mono-nerd-font brew install --cask font-fira-code-nerd-font
Configure in iTerm2 → Preferences → Profiles → Text → Font.
- Pick JetBrainsMono Nerd Font (or whichever you installed).
- Ensure it says Nerd Font, not just JetBrains Mono.
- Uncheck “Use a different font for non-ASCII text”.
- Restart iTerm2.
-
Install and configure vim-tmux-navigator
-
Install TPM (Tmux Plugin Manager):
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm tmux source ~/.tmux.conf
Press prefix + I (capital i) to fetch the plugin.
-
Instal go-dlv
go install github.com/go-delve/delve/cmd/dlv@latest
From the dotfiles/ repo root, run:
stow zsh
stow tmux
stow git
stow nvimIf you see warnings like:
cannot stow .../.zshrc over existing target ~/.zshrc
-
Adopt existing files into the repo (if
$HOMEhas the latest):stow --adopt zsh
-
Backup and remove old files (if repo is the source of truth):
mv ~/.zshrc ~/.zshrc.bak stow zsh
We keep a .stowrc in the repo root:
--target=~
--verbose
--restow
This makes stow default to home directory, be verbose, and update symlinks.
Add --adopt if you want stow to move conflicts automatically (
-
Clone repo:
git clone git@github.com:ardinusawan/dotfiles.git ~/Code/dotfiles cd ~/Code/dotfiles
-
Run stow:
stow zsh tmux git nvim
-
Done.
Configure ~/.ssh/config:
# Personal
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
# Work
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_workClone work repos with:
git clone git@github-work:org/repo.git- GNU Stow
- Thanks to Dreams of Autonomy