* lib: introduce imap0, imap1
For historical reasons, imap starts counting at 1 and it's not
consistent with the rest of the lib.
So for now we split imap into imap0 that starts counting at zero and
imap1 that starts counting at 1. And imap is marked as deprecated.
See c71e2d4235 (commitcomment-21873221)
* replace uses of lib.imap
* lib: move imap to deprecated.nix
62 lines
1.5 KiB
Nix
62 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 (imap1 (n: def: imap1 (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.
|
|
'';
|
|
};
|
|
|
|
};
|
|
};
|
|
|
|
meta.maintainers = singleton lib.maintainers.pierron;
|
|
}
|