# dotfiles
My config for zsh, tmux, neovim and git. Managed with [GNU stow][stow], so
every subdirectory in this repo mirrors `$HOME` and `stow <subdir>`
symlinks the files in.
Nothing here is exotic. I keep it short so I can read the whole thing on a
coffee break when I land on a new machine.
[stow]: https://www.gnu.org/software/stow/
## Install
git clone https://mercemay.top/src/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.sh
`install.sh` just runs `stow` for each package, and refuses to clobber an
existing non-symlink file. Re-running it is safe.
## Packages
zsh/ .zshrc, .aliases.zsh, completion cache in ~/.cache/zsh
tmux/ .tmux.conf
git/ .gitconfig
nvim/ .config/nvim/ (init.lua + lua/plugins.lua)
## Assumptions
- zsh 5.8+, with fzf and starship installed system-wide
- tmux 3.3+ so the modern copy-mode bindings work
- neovim 0.10+; lazy.nvim bootstraps itself on first launch
- git 2.40+ for `git switch`/`git restore` and `pull.ff = only`
Install those however you like; I use Homebrew on macOS and `apt` on the
Debian boxes.
## Per-host overrides
Anything I want on one machine only goes in `~/.zshrc.local`,
`~/.gitconfig.local` or `~/.config/nvim/lua/local.lua`, none of which are
tracked by stow. The main configs source them if they exist.
## Uninstall
stow -D zsh tmux git nvim
...from inside `~/.dotfiles`. Removes the symlinks; your home dir is back
to stock.
## License
MIT. See `LICENSE`.