Your first config
-
Start one.
Terminal window bedouin initWrites a commented
bedouin.yamland atemplates/directory beside it. Keep this in git — it is the whole point. -
Say what you want.
version: 0shell: zshvars:editor: nvimaliases:ll: ls -alhpackages:- name: fdfrom: { macos: brew, default: [apt, zypper] }- name: zellijfrom: cargopath: ["{{ home }}/.cargo/bin"]files:- src: templates/gitconfig.j2dest: ~/.gitconfig -
See what it would do. This changes nothing.
Terminal window bedouin planBedouin will make the following changes:+ language rust latest rustup+ package fd latest apt+ package zellij latest cargo+ file ~/.gitconfig from templates/gitconfig.j2+ path ~/.zshrc.d/00-bedouin-path.zsh 1 entry from zellijPlan: 5 to add, 0 to change, 0 to remove.zellijisfrom: cargo, so Bedouin added therusttoolchain for you and said so rather than doing it silently. -
Do it.
Terminal window bedouin applyIt shows the plan again and asks before touching anything.
The parts worth knowing
Section titled “The parts worth knowing”shell: is declared, not detected. On a fresh machine you are usually
running bash while installing and configuring zsh, so the shell Bedouin detects
is the one you are about to stop using.
A mapping means branches. from: { macos: brew, default: apt } is a
conditional; from: apt is a value. There is no when: or select: — the
shape carries the meaning. See conditional
values.
{{ home }} and friends are facts, resolved by Bedouin rather than
declared by you. The facts reference lists them.
- Something already on the machine? Bedouin adopts it: recorded as pre-existing, never removed, even if you later drop it from the config.
- Edited a managed file by hand?
doctorandabsorb. - Want it to keep itself in line?
reconcileanddaemon.