skip to content

Roadmap

This page groups gen’s work by theme. It carries no dates. Everything under Next and Later is planned, not shipped.

gen is pre-release. Everything below ships today and is tested on every push under upstream Nix, Determinate Nix and Lix, and the APIs are still changing. The first framework built on the full toolkit is in progress, under Next.

  • Graphs and queries. Reachability, ordering, cycles, path queries over edge labels, node selectors and product graphs. See Graphs and Queries.
  • Typed configuration without nixpkgs. A module system with priorities, conditions, submodules and freeform types, which records which file set every value. See Typed Configuration.
  • Kinds and identity. Typed registries of hosts, users or anything else, each instance with an identity derived from its content. See Kinds, Registries and Identity.
  • Aspects. Reusable features with content per class, includes between them, and aspect graphs combined from several flakes. See Aspects.
  • Rules. Rules with positive and negative conditions, solved together as one logic program, with conflicting rules reported as undefined. See Rules.
  • Evaluation and incremental rebuild. Values computed on demand, and rebuilds that reuse unchanged work with output identical to a full rebuild. See Evaluation and Incremental Rebuild.
  • Delivery. Each node’s configuration handed to builders you supply, such as a NixOS system builder, plus a flake-parts module for the whole route. See Delivery.
  • Inspection. SQL queries over the graph, answers to why an edge exists, and diagrams. See Inspection.
  • One grammar across the libraries. Consistent names, argument shapes and options on every public function, so that knowing one library tells you how to call the next.
  • A shorter path from rules to systems. The results of rules become edges in the graph directly, delivery follows the includes between aspects, and one evaluator runs the whole path.
  • Errors that name their cause. Failures reported against the node and feature that caused them, built on stable identity.
  • Ready-made terminals for the cloud and for Kubernetes. Today you supply the terminal that carries a class to its builder. Two will ship with gen. One is for terranix, which writes Terraform in Nix, so firewall rules and cloud resources flow straight from the graph. The other is for nixidy, which turns Nix into Kubernetes deployments for Argo CD, so a service’s manifests come from the same graph that places it on its machines.
  • The first framework on the full toolkit. A configuration framework built on all of gen’s libraries from the start, exposing them to its power users.
  • A second framework. A second configuration framework built on gen’s libraries.
  • gen’s extensions for every module system. Identity, argument injection, provenance and rules offered to modules written for any framework.
  • Interactive graph tools. Rendering and exploring a configuration’s graph as you work on it.
  • Layered settings. Settings resolved against ordered override layers, with the full chain of where each value came from, promoted from experimental.
  • A first stable release. A versioned API with a compatibility promise.
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).