Skip to content

grim

A grimoire for your machines. Declarative, cross-platform environment management in one Rust CLI.

grim reads a grimoire — a repository of declarative configuration (a dotfiles repo is one) — and casts it onto the current machine: installing packages across every package manager, rendering config files from templates, and isolating per-platform install trees. The engine (grim) and your data (a grimoire) stay separate, so the tool is reusable and your configuration is portable.

what grim does today
grim facts # probe the machine into typed Facts
grim stack # resolve the platform precedence stack
grim apply # render templates -> diff -> atomically place files
grim packages # every package -> its resolved provider for this machine

Every load-bearing choice is written down. See the decision records — separating the engine from the data, owning the file layer, banded platform precedence, and more.