{ lib, options, ... }: with lib; { options = { custom.program = mkOption { type = types.attrsOf ( types.submodule ( { config, ... }: { options = { name = mkOption { type = types.string; }; requirements = mkOption { type = types.listOf (types.enum (import ./capabilities.nix)); default = [ "cli" ]; }; home-config = mkOption { type = types.deferredModule; }; system-config = mkOption { # type = types.attrs; type = types.deferredModule; default = { }; }; }; } ) ); }; }; }