{lib, ...}:
with lib; {
  options = {
    kubenix.project = mkOption {
      description = "Name of the project";
      type = types.str;
      default = "kubenix";
    };

    _m.features = mkOption {
      description = "List of features exposed by module";
      type = types.listOf types.str;
      default = [];
    };

    _m.propagate = mkOption {
      description = "Module propagation options";
      type = types.listOf (types.submodule (_: {
        options = {
          features = mkOption {
            description = "List of features that submodule has to have to propagate module";
            type = types.listOf types.str;
            default = [];
          };

          module = mkOption {
            description = "Module to propagate";
            type = types.unspecified;
            default = {};
          };
        };
      }));
      default = [];
    };
  };
}
