A build graph that rolls dice
a day ago
- Dynamic derivations transform Nix from an applicative build system (graph known upfront) to a monadic one (graph defined during build).
- Traditional Nix requires the entire build graph to be known ahead of time, enabling tools like dry-run and nix-diff.
- Import from derivation already provided monadic behavior in the evaluator, but dynamic derivations move bind to the scheduler, allowing parallelism, caching, and remote builds.
- A practical example: rolling a six-sided die to decide whether to continue building a chain, showing graph depth varying randomly.
- Dynamic derivations open possibilities beyond lang2nix, such as game emulation, state-space search, crawling, and fuzzing.
- Current tooling cannot introspect dynamic build graphs before execution, limiting ecosystem adaptation.