skip to content

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.

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.

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.

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.

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.

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.

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.

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).