This repository contains configuration files for tools like nvim, tmux, zsh, etc., managed using GNU Stow.
Each directory corresponds to a tool or app and contains its config files in the correct relative path.
Example:
dotfiles/
├── nvim/
│ └── .config/
│ └── nvim/
├── tmux/
│ └── .tmux.conf
├── zsh/
│ └── .zshrc
brew install stowsudo apt install stowgit clone https://github.com/your-username/dotfiles.git ~/dotfiles
cd ~/dotfilesUse --target=$HOME to ensure correct symlink paths.
stow --target=$HOME nvim
stow --target=$HOME tmux
stow --target=$HOME zshstow -D --target=$HOME nvim-
If you see errors like:
WARNING! stowing xyz would cause conflicts...it means a file (like
.DS_Store) already exists in the target location. Either:- Remove the conflicting file manually
- Use
--adoptto move it into your stow repo:stow --target=$HOME --adopt nvim
-
Ignore
.DS_Storeand similar clutter in.gitignore:.DS_Store
- Use one folder per app (
nvim,tmux,zsh,git, etc.) - Keep file paths relative to
$HOME - Use
--target=$HOMEconsistently for simplicity - Track everything in Git so you can clone and stow on a new machine quickly
- Write a
bootstrap.shscript to restore everything in one go (optional)
#!/bin/bash
set -e
cd ~/dotfiles
for dir in */ ; do
stow --target=$HOME "$dir"
done- Source-controlled
- Symlinked for atomic updates
- Reproducible across machines