The premise
A development machine accumulates state. Six months of apt install, a dotfile
edited at 1am, a PATH entry nobody remembers adding. Then the laptop dies, or a
new person joins, and the setup is archaeology.
Griffin makes the workstation reproducible: the machine is described in version control, and rebuilding it is a command rather than a weekend.
Why it earns its place here
It is tested on three platforms in continuous integration. Ubuntu, WSL, and macOS each have their own workflow that runs the playbook on a clean runner. An Ansible role that works on the author's machine is a script; one that provisions a fresh Ubuntu runner, a WSL environment, and both Intel and Apple Silicon macOS is infrastructure.
That is also the hard part. The same intent - install this tool, set this
preference - is apt here, homebrew there, and a registry-adjacent quirk in
WSL. The playbooks abstract the intent and branch on the platform, rather than
forking into three copies that drift.
Structure
- 65 YAML task files, organized by concern, each idempotent, so re-running converges rather than duplicating
- Separate playbooks for Linux and macOS sharing common roles
- Configuration import for KDE and editor settings
- Linting via reviewdog in CI, documentation built and published automatically, releases managed by release-please