README.md

# 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`.