Bedouin
One YAML config in git, and any machine — Ubuntu, SUSE, macOS — becomes yours. A single static binary that runs on a box with nothing installed on it.
curl -fsSL https://samishal1998.github.io/bedouin/install.sh | sh Bedouin will make the following changes:
+ manager brew not installed + language rust 1.80 rustup! ~ package zellij 0.39.2 -> 0.40.1 cargo + file ~/.gitconfig from templates/gitconfig.j2 + rc ~/.zshrc.d/70-zellij.zsh owned by zellij - package ripgrep was: apt, owner: bedouin
Plan: 4 to add, 1 to change, 1 to remove.Nothing to install first
A static binary with zero runtime dependencies. Ansible needs a working Python, which is the one thing a fresh machine cannot promise.
One run, in order
Install a toolchain and something that needs it in the same run. Bedouin tracks where it put things and builds each step’s environment itself instead of inheriting your shell’s.
It tells you first
plan is a faithful prediction of apply. Where
it cannot be, it says so rather than guessing.
Your edits survive
Tweak an alias in your shell, then absorb it back into the
config. Bedouin owns blocks inside your rc files, never the files.
Conditionals that cannot rot
A mapping means branches, and arm names come from a closed set — so a typo is an error, not a branch that never matches on a machine you are not sitting at.
It only removes what it installed
Anything already there when Bedouin first ran is adopted, never owned, and survives being dropped from the config.
Your shell, not just your tools
Install oh-my-zsh, set its theme and plugins — written above the line that reads them, because below it would do nothing at all.
Configs that live in git
Clone a repository, link a subdirectory of it into place. How oh-my-tmux
installs, and how a neovim config reaches ~/.config/nvim with
its history intact.