mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-11-11 10:16:01 +01:00
This reverts commit cad8957eab. 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;
|
|
};
|
|
}
|