{lib, ...}: { options.dendritic.hosts = lib.mkOption { type = lib.types.attrsOf ( lib.types.submodule ({name, ...}: { options = { name = lib.mkOption { type = lib.types.str; default = name; }; system = lib.mkOption { type = lib.types.str; }; type = lib.mkOption { type = lib.types.enum ["laptop" "desktop" "server"]; }; roles = lib.mkOption { type = lib.types.listOf lib.types.str; default = []; }; primaryUser = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; }; primaryUserExtraGroups = lib.mkOption { type = lib.types.listOf lib.types.str; default = ["wheel" "networkmanager"]; }; nixosModules = lib.mkOption { type = lib.types.listOf lib.types.deferredModule; default = []; }; }; }) ); default = {}; }; }