diff --git a/modules/generic/meta-maintainers.nix b/modules/generic/meta-maintainers.nix index f9e8a19aea82..75365d07ce7a 100644 --- a/modules/generic/meta-maintainers.nix +++ b/modules/generic/meta-maintainers.nix @@ -4,39 +4,12 @@ let inherit (lib) mkOption - mkOptionType types ; - maintainer = mkOptionType { - name = "maintainer"; - check = email: lib.elem email (lib.attrValues lib.maintainers); - merge = loc: defs: { - # lib.last: Perhaps this could be merged instead, if "at most once per module" - # is a problem (see option description). - ${(lib.last defs).file} = (lib.last defs).value; - }; - }; - - listOfMaintainers = types.listOf maintainer // { - merge = - loc: defs: - lib.zipAttrs ( - lib.flatten ( - lib.imap1 ( - n: def: - lib.imap1 ( - m: def': - maintainer.merge (loc ++ [ "[${toString n}-${toString m}]" ]) [ - { - inherit (def) file; - value = def'; - } - ] - ) def.value - ) defs - ) - ); + # The resulting value of this type shows where all values were defined + sourceList = types.listOf types.raw // { + merge = loc: defs: lib.listToAttrs (lib.map ({ file, value }: lib.nameValuePair file value) defs); }; in { @@ -44,7 +17,7 @@ in options = { meta = { maintainers = mkOption { - type = listOfMaintainers; + type = sourceList; default = [ ]; example = lib.literalExpression "[ lib.maintainers.alice lib.maintainers.bob ]"; description = ''