Skip to content

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 else
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

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.

dest must be under $HOME. No submodule recursion. No credential handling — it inherits whatever git setup you already have, exactly like sync.

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.