forked from FG42/FG42
1
0
Fork 0

Add the meta.maintainers and meta.doc options in the unit module

This commit is contained in:
Sameer Rahmani 2024-04-30 12:29:47 +01:00
parent 73f574795a
commit e67e3fbe1f
Signed by: lxsameer
GPG Key ID: 8741FACBF412FFA5
3 changed files with 58 additions and 0 deletions

View File

@ -16,6 +16,8 @@
{ pkgs, ... }:
final: prev:
rec {
maintainers = import ../../maintainers.nix;
/*
Create a value to be accessable on the Elisp side as a variable.
*/

View File

@ -0,0 +1 @@
# Unit Module

View File

@ -34,9 +34,60 @@ let
src = ./.;
};
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));
};
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 = literalExpression ''[ lib.maintainers.all ]'';
description = lib.mdDoc ''
List of maintainers of each module. This option should be defined at
most once per module.
'';
};
doc = mkOption {
type = docFile;
internal = true;
example = "./meta.chapter.md";
description = lib.mdDoc ''
Documentation prologue for the set of options of each module. This
option should be defined at most once per module.
'';
};
};
fg42.version = mkOption {
type = types.str;
visible = true;
@ -197,6 +248,10 @@ in
'')
];
meta = {
maintainers = [ maintainers.lxsameer ];
doc = ./README.md;
};
};
}