mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-06-05 21:03:40 +00:00
Revert "ci: module maintainer review requests; nixos/modules: init meta.teams"
This commit is contained in:
@@ -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; [
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user