The Mental Model
Rather than build each machine from scratch, we compose a host from small, reusable pieces — much as Puppet does with its roles and profiles method. The result should make it intuitive to find, adjust and add settings for configuring your hosts.


- A host is configured via a role, or directly via system modules, and optionally user-specific configuration.
- User-specific configuration is managed by Home Manager, which can take advantage of shared user-level configuration injected via concepts, to avoid repetition.
- Concepts are abstractions that pair system facets (NixOS modules) with user facets (Home Manager modules) under one reusable name, so system and user stay independent libraries. A role bundles those concepts into intuitive units.
- Secrets supply sensitive information as encrypted values, so authentication and network access can be configured safely.