{ 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 = { }; }; }