I have no idea what I am doing :)
This flake follows the dendritic pattern:
every .nix file under modules/ and hosts/ (except paths starting with
_) is automatically imported as a top-level
flake-parts module via
import-tree. flake.nix is the only
entry point.
modules/moduleOptions.nixdeclares two merge points:nixos.modules.<name>— named, mergeable NixOS moduleshomeManager.modules.<name>— named, mergeable home-manager modules
modules/nixos/*.nixandmodules/home/*.nixeach contribute to a named bucket:base(universal settings/host-specific toggles),desktop(GUI-only features, gated ondino.gui.enable), orserver(server-only features, gated ondino.server.enable). Every host currently composesbase+desktop+server(identical to the old everything-in-basebehavior), but the split allows a host to later opt out of a bucket it never needs (e.g. a headless server skippingdesktop). Fine-grained gating within each file is still done via thedino.*options declared inmodules/_lib/dinoOptions.nix.modules/colmena.nixdeclarescolmena.hosts.<name>and assemblesflake.colmenafrom it.modules/nixosConfigurations.nixdeclaresnixos.hosts.<name>and assemblesflake.nixosConfigurationsfrom it, centralizing the_lib/nixosSystem.nixcall so host files only declare which modules to compose, not how to build anixosSystem.modules/specialArgs.nixdeclaresmeta.{username,userfullname,useremail, linuxSpecialArgs}— flake-wide identity/specialArgs shared by every Linux host. This is a deliberately distinct namespace from the nesteddino.*feature-toggle options (declared inmodules/_lib/dinoOptions.nix), which live inside separate NixOS/home-manager evaluations.hosts/<host>/default.nixdeclares host-specific NixOS settings undernixos.modules.<host>, and wires upnixos.hosts.<host>and/orcolmena.hosts.<host>fromnixos.modules.base+nixos.modules.desktop+nixos.modules.server+nixos.modules.<host>.hosts/<host>/home.nixdeclares that host's home-manager overrides underhomeManager.modules.<host>.modules/_lib/holds plain (non-flake-parts) helpers —nixosSystem.nix,colmenaSystem.nixanddinoOptions.nix— excluded from auto-import because their paths contain_. Files named_hardware-configuration.nixunderhosts/are excluded the same way, since they're plain NixOS hardware-scan output, not features to compose.
