summaryrefslogtreecommitdiff
path: root/modules/meta.nix
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2021-03-07 15:46:08 +0100
committerRobert Hensing <robert@roberthensing.nl>2022-12-22 20:18:53 +0100
commit617604488e0b45ce7d156962828f1c69d973930d (patch)
treec00db12630c862dcefbbe100939eab3f75b30d28 /modules/meta.nix
parentadb8ac0453c8b2c40f5bffb578453dbaee838952 (diff)
Add meta.maintainers option
Diffstat (limited to 'modules/meta.nix')
-rw-r--r--modules/meta.nix54
1 files changed, 54 insertions, 0 deletions
diff --git a/modules/meta.nix b/modules/meta.nix
new file mode 100644
index 0000000..4ce0efc
--- /dev/null
+++ b/modules/meta.nix
@@ -0,0 +1,54 @@
+# This module was derived from
+# https://github.com/NixOS/nixpkgs/blob/000387627d26f245a6d9a0a7a60b7feddecaeec0/nixos/modules/misc/meta.nix
+{ 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));
+ };
+
+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.
+
+ NOTE: <literal>lib</literal> comes from Nixpkgs, which can go out of
+ sync with nix-darwin. For this reason, use definitions like
+ <literal>maintainers.alice or "alice"</literal>.
+ '';
+ };
+
+ };
+ };
+
+ meta.maintainers = [
+ maintainers.roberth or "roberth"
+ ];
+}