skip to content

History

gen grew out of den, a framework for NixOS, nix-darwin and home-manager configuration. In den, a quirk is a piece of data a scope emits, and a pipe moves quirk data between scopes: from a user up to its host, across the hosts of one environment, or across every machine in a deployment. gen’s graph model and its parametric aspects grew from quirks and pipes: the scopes became nodes, the movements of data became edges, and a feature that needs its host takes the host as an argument.

den was extracted from its author’s own configurations. A setup with several hosts and users repeats one pattern: a mapAttrs over the users, with each result installed into a host’s configuration. den began as an abstraction over that iteration, with a declarative surface language and general code that walks the topology of the infrastructure. Through den v0.10 the implementation was plain maps and traversals.

As den took on larger deployments, it needed new kinds of entity beyond hosts and homes (fleets, microVMs), values passed between entities, and typed schemas for them. den’s core moved onto nix-effects, keeping its public API. The next planned kernel was Ned, a stream library built on nix-effects. While designing that migration, den’s problem turned out to map onto attribute-grammar evaluation over a scope graph, which became gen-scope. The step after that described the whole problem as logic programs over a graph of facts, and gen is the set of libraries for that model. den is being rebuilt on gen with the same public API and domain language.

DateEvent
October 2025den’s first commit.
2026-05-10First commit of the schema library, the first piece of gen.
2026-05-20First commit of the scope library, the graph’s evaluator.
2026-05-26The gen hub is created, gathering the libraries under one flake.
2026-06-15den adopts gen’s schema library for its entities (den pull request #563).
2026-07-02First commit of gen’s module system, which merges modules without nixpkgs.

The Roadmap lists what gen ships now and what is planned.

palette
dark
light
↑↓ select↵ apply esc close

Palettes adapted from Catppuccin (Macchiato) (MIT), Tokyo Night (Apache-2.0), gruvbox (MIT), Catppuccin (Latte) (MIT), Rosé Pine (Dawn) (MIT).