Terminology
Each term below means the same thing on every page. The hub’s TERMINOLOGY.md has the full
vocabulary of each library, with a citation for every term.
The graph
Section titled “The graph”Node. One thing in your configuration, such as a host, a user or an aspect. A node has an identity, attributes and the edges that touch it. See Your Configuration as a Graph.
Edge. A relation from one node to another. An edge carries a label and no other content.
Label. The name of the relation an edge stands for, such as calls or includes. A path query
is a regular expression over the labels along a path. See Graphs and Queries.
Binding node. A node that stands for a relation which needs to carry content. It is identified by the relation it stands for and the nodes it relates. See Stable Identity for Everything.
Scope graph. The graph names are resolved against. A name is looked up through a node’s parents and imports, and the most specific match wins. See Delivery.
Selector. A pattern that matches nodes by kind, attribute or position in the graph, in the style of CSS selectors. See Graphs and Queries.
Graph product. A graph built from two others, such as hosts × users, whose nodes are pairs. See Graphs and Queries.
Kinds and identity
Section titled “Kinds and identity”Kind. A declared shape for a family of nodes: its options, their types and their defaults. A host and an aspect are both kinds. See Kinds, Registries and Identity.
Instance. A node of a given kind, with the kind’s defaults filled in.
Registry. The set of instances of one kind, keyed by name.
Identity. A hash derived from a node’s kind and content. Equal content always gives the same
identity. hashIdentity computes every identity in gen. See Stable Identity for
Everything.
Configuration
Section titled “Configuration”Module. A unit of configuration that declares options, sets values, or both. gen-merge merges a tree of modules without nixpkgs. See An Enhanced Module Type System.
Priority. A number attached to a definition. When two definitions set the same option, the one
with the lower number wins. mkDefault and mkForce set it.
Provenance. The record of which file set a value, and at what priority. gen records it for every merged value. See Inspection.
Argument injection. Passing a module function the arguments it names, such as the host it configures. See Automatic Argument Injection.
Settings layer. One of an ordered list of overrides, from least to most specific, that a setting is resolved against. The result records which layer set each field. See Typed Configuration.
Aspects
Section titled “Aspects”Aspect. A named, reusable bundle of configuration, such as ssh or monitoring. An aspect can
include other aspects, and those includes are edges. See Reusable Features.
Key category. The declared meaning of a key inside an aspect. A key can name a class such as
nixos, or other content the framework defines. See Aspects.
Guard. A condition, written as data, that decides whether an aspect is included.
Rule. A statement of the form “this relation holds between these nodes when these conditions hold and these others do not”. gen solves all rules together as one logic program. See Rules That Add Relationships.
Atom. One fact a rule can conclude, such as link:a:b.
Program. The set of rules gen-program builds from a framework’s declarations. Each rule has a head, positive conditions, negative conditions, and the nodes it relates. See Rules.
Model. The solution of a program: the verdict for every atom.
Well-founded model. The model gen computes. Each atom is true, false or undefined. An atom is undefined when its truth depends on its own negation.
Undefined. The third verdict. Reading an undefined atom as true or false fails with an error naming the atom.
Stratification. Ordering rules so that a rule which negates a relation runs after the rules that produce it.
Dispatch rule. A condition paired with an action, applied step by step by gen-dispatch. It is a separate mechanism from the rules of a logic program. See Rules.
Evaluation
Section titled “Evaluation”Attribute. A value computed on a node when something reads it, as in an attribute grammar. It is computed at most once per node. See Values Computed on Demand.
Assembly. Combining many layered contributions into one node set before evaluation. See Evaluation.
Warm run. A re-evaluation after an edit that reuses results from an earlier run. Its output is always equal to a cold run’s. See Rebuilding Only What Changed.
Class share. Computing one shared core for a group of nodes with the same shape, then applying it to each member. See Incremental Rebuild.
Delivery
Section titled “Delivery”View. A named query that moves content along chosen edge labels. When several sources contribute, the nearest one wins, and the view reports the rest as shadowed. See Delivery.
Class. An output target for content, such as nixos, darwin or homeManager.
Terminal. The function a class’s content is finally handed to, such as a NixOS system builder. You supply it. See From an Aspect to a NixOS System.
Palettes adapted from Catppuccin (Macchiato) (MIT), Tokyo Night (Apache-2.0), gruvbox (MIT), Catppuccin (Latte) (MIT), Rosé Pine (Dawn) (MIT).