67 lines
1.4 KiB
Nix
67 lines
1.4 KiB
Nix
{ lib }:
|
|
let
|
|
checkType = lib.types.submodule {
|
|
options = {
|
|
assertion = lib.mkOption {
|
|
type = lib.types.functionTo lib.types.bool;
|
|
description = ''
|
|
Predicate run against this registry's flattened collected entries.
|
|
'';
|
|
};
|
|
|
|
message = lib.mkOption {
|
|
type = lib.types.str;
|
|
description = ''
|
|
Error message shown when this registry validation check fails.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
predicates = {
|
|
uniqueValue =
|
|
value: entries: builtins.length (lib.unique (map value entries)) == builtins.length entries;
|
|
};
|
|
|
|
registryLib = lib // {
|
|
registry = (lib.registry or { }) // {
|
|
inherit predicates;
|
|
};
|
|
};
|
|
|
|
registryDefinitionModule = {
|
|
options = {
|
|
type = lib.mkOption {
|
|
type = lib.types.raw;
|
|
description = ''
|
|
NixOS option type for one registry entry.
|
|
'';
|
|
};
|
|
|
|
replicate = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
description = ''
|
|
Whether collected entries are merged and published under every host key.
|
|
'';
|
|
};
|
|
|
|
checks = lib.mkOption {
|
|
type = lib.types.listOf checkType;
|
|
default = [ ];
|
|
description = ''
|
|
Validation checks for this registry's flattened collected entries.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
in
|
|
{
|
|
inherit
|
|
checkType
|
|
predicates
|
|
registryDefinitionModule
|
|
registryLib
|
|
;
|
|
}
|