f3d94cfc23
This reverts commit cad8957eabcbf73062226d28366fd446c15c8737. It breaks NixOps, but more importantly, such major changes to the module system really need to be reviewed.
64 lines
1.5 KiB
Nix
64 lines
1.5 KiB
Nix
{ config, lib, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
maintainer = mkOptionType {
|
|
name = "maintainer";
|
|
check = email: elem email (attrValues lib.maintainers);
|
|
merge = loc: defs: listToAttrs (singleton (nameValuePair (last defs).file (last defs).value));
|
|
};
|
|
|
|
listOfMaintainers = types.listOf maintainer // {
|
|
# Returns list of
|
|
# { "module-file" = [
|
|
# "maintainer1 <first@nixos.org>"
|
|
# "maintainer2 <second@nixos.org>" ];
|
|
# }
|
|
merge = loc: defs:
|
|
zipAttrs
|
|
(flatten (imap (n: def: imap (m: def':
|
|
maintainer.merge (loc ++ ["[${toString n}-${toString m}]"])
|
|
[{ inherit (def) file; value = def'; }]) def.value) defs));
|
|
};
|
|
|
|
docFile = types.path // {
|
|
# Returns tuples of
|
|
# { file = "module location"; value = <path/to/doc.xml>; }
|
|
merge = loc: defs: defs;
|
|
};
|
|
in
|
|
|
|
{
|
|
options = {
|
|
meta = {
|
|
|
|
maintainers = mkOption {
|
|
type = listOfMaintainers;
|
|
internal = true;
|
|
default = [];
|
|
example = [ lib.maintainers.all ];
|
|
description = ''
|
|
List of maintainers of each module. This option should be defined at
|
|
most once per module.
|
|
'';
|
|
};
|
|
|
|
doc = mkOption {
|
|
type = docFile;
|
|
internal = true;
|
|
example = "./meta.xml";
|
|
description = ''
|
|
Documentation prologe for the set of options of each module. This
|
|
option should be defined at most once per module.
|
|
'';
|
|
};
|
|
|
|
};
|
|
};
|
|
|
|
config = {
|
|
meta.maintainers = singleton lib.maintainers.pierron;
|
|
};
|
|
}
|