Repos
files: renders one file from one template. A neovim configuration is a
directory with a hundred files and its own history, and templating it would be
absurd. It wants cloning.
repos: - url: https://github.com/you/nvim-config dest: ~/.config/nvim ref: main # optional -- a branch or tag only: linux # optional, like everywhere elseWhat apply does
Section titled “What apply does”| State | Action |
|---|---|
| Not there | git clone --depth 1 [--branch ref] |
| There, and bedouin cloned it | nothing |
| There, and bedouin did not | adopted — never touched |
| Dropped from the config | the clone is deleted, if bedouin made it |
url: changed |
the old clone comes out, the new one goes in |
Present is done
Section titled “Present is done”A repo bedouin cloned is a no-op on later runs, the same rule as
version: latest. Pulling on every apply would
make plan claim a change it cannot know about without going to the network,
and it would never converge.
bedouin sync is what pulls — the config repository and every declared
repo, with --ff-only. What happens to your commits is your call, so a pull
that cannot fast-forward is reported and the rest continue.
Bounds
Section titled “Bounds”dest must be under $HOME. No submodule recursion. No credential handling —
it inherits whatever git setup you already have, exactly like sync.
Coexisting with chezmoi or stow
Section titled “Coexisting with chezmoi or stow”This is the seam. Move one directory at a time: point a repos: entry at it,
let bedouin adopt what is already there, and delete it from the other tool when
you are ready. Nothing has to happen at once.