den.aspects
den.aspects
Section titled “den.aspects”An attribute set of aspects. Each aspect key names an aspect; its value is
an aspect set containing per-class deferred modules and optional includes and provides:
den.aspects = { dns = { nixos.services.resolved.enable = true; darwin.networking.dns = [ "1.1.1.1" ]; includes = [ ./dns ]; };};Auto-generation
Section titled “Auto-generation”Den auto-generates den.aspects entries from den.hosts, den.homes,
and den.users. For every declared host/home/user, an aspect is created
with the appropriate class configurations. You do not need to declare
den.aspects manually unless adding shared aspects.
den.ful
Section titled “den.ful”Type: attrsOf aspectsType
Namespaced aspect collections. Each key is a namespace name, each value
is a full aspectsType. Populated by den.namespace or by merging
upstream denful flake outputs.
den.ful.myns = { some-aspect = { nixos.services.foo.enable = true; };};flake.denful
Section titled “flake.denful”Type: attrsOf raw
Raw flake output for publishing namespaces. Set automatically by
den.namespace; consumed by downstream flakes that import your aspects.
Aspect structure
Section titled “Aspect structure”An aspect is an attribute set with:
| Key | Purpose |
|---|---|
<class> | Config merged into hosts/homes of that class |
includes | List of modules or functions dispatched by context |
__functor | Auto-generated by parametric; drives dispatch |
Static vs parametric includes
Section titled “Static vs parametric includes”Functions in includes receiving { class, aspect-chain } are static —
evaluated once during aspect resolution. Functions receiving context
arguments ({ host }, { user }, etc.) are parametric — evaluated
per context during ctxApply.
den.provides (aliased as den._)
Section titled “den.provides (aliased as den._)”This is the place for Den built-in batteries, reusable aspects that serve as basic utilities and examples.
See Batteries Reference.
Class resolution
Section titled “Class resolution”When aspects are resolved for a host, Den:
- Collects all aspects referenced by the host
- Extracts the class-specific config (e.g.,
nixosfor NixOS hosts) - Evaluates static includes with
{ class, aspect-chain } - Builds context pairs from
den.ctx - Applies parametric includes via
ctxApply - Merges everything into the host’s
evalModulescall