Revert "ci: module maintainer review requests; nixos/modules: init meta.teams"

This commit is contained in:
Silvan Mosberger
2026-03-06 08:41:24 +01:00
committed by GitHub
parent 7afd6d60a0
commit 2cc2e0225f
100 changed files with 210 additions and 458 deletions

View File

@@ -4,12 +4,39 @@
let
inherit (lib)
mkOption
mkOptionType
types
;
# 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);
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
)
);
};
in
{
@@ -17,14 +44,7 @@ in
options = {
meta = {
maintainers = mkOption {
type =
let
allMaintainers = lib.attrValues lib.maintainers;
in
lib.types.addCheck sourceList (lib.all (v: lib.elem v allMaintainers))
// {
description = "list of lib.maintainers";
};
type = listOfMaintainers;
default = [ ];
example = lib.literalExpression "[ lib.maintainers.alice lib.maintainers.bob ]";
description = ''
@@ -34,22 +54,6 @@ in
The option value is not a list of maintainers, but an attribute set that maps module file names to lists of maintainers.
'';
};
teams = mkOption {
type =
let
allTeams = lib.attrValues lib.teams;
in
lib.types.addCheck sourceList (lib.all (v: lib.elem v allTeams))
// {
description = "list of lib.teams";
};
default = [ ];
example = lib.literalExpression "[ lib.teams.acme lib.teams.haskell ]";
description = ''
List of team maintainers of each module.
This option should be defined at most once per module.
'';
};
};
};
meta.maintainers = with lib.maintainers; [

View File

@@ -14,17 +14,9 @@ let
};
in
rec {
# Inject ghost into lib.maintainers so it passes the addCheck validation
lib = (import ../../../lib).extend (
final: prev: {
maintainers = prev.maintainers // {
inherit ghost;
};
}
);
lib = import ../../../lib;
example = lib.evalModules {
specialArgs.lib = lib;
modules = [
../meta-maintainers.nix
{