parent
5e1475d76d
commit
873ab39401
@ -0,0 +1,63 @@ |
||||
{ 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; |
||||
}; |
||||
} |
Loading…
Reference in new issue