refactor(dotfiles): separate registry validation

This commit is contained in:
2026-10-03 20:01:26 -04:00
parent 1b4dc77627
commit c8d53e5e2d
2 changed files with 28 additions and 28 deletions

View File

@@ -20,14 +20,12 @@ let
];
}).config;
data = validate (
lib.mapAttrs (
registryName: _registry:
lib.mapAttrs (hostName: host: host.config.registry.${registryName}.${hostName} or { }) hosts
) definitions
);
validate = import ./registry/validation.nix { inherit definitions lib; };
data = lib.mapAttrs (
registryName: _registry:
lib.mapAttrs (hostName: host: host.config.registry.${registryName}.${hostName} or { }) hosts
) definitions;
in
{
types = lib.mapAttrs (_name: definition: definition.type) definitions;
@@ -46,13 +44,16 @@ in
) definitions;
};
collected = data // {
join =
host: entry:
lib.filterAttrs (_name: value: value != null) (
lib.mapAttrs (
registryName: _registry: (data.${registryName}.${host} or { }).${entry} or null
) definitions
);
};
collected =
assert validate data;
data
// {
join =
host: entry:
lib.filterAttrs (_name: value: value != null) (
lib.mapAttrs (
registryName: _registry: (data.${registryName}.${host} or { }).${entry} or null
) definitions
);
};
}

View File

@@ -3,17 +3,7 @@
lib,
}:
let
assertValid =
data:
let
assertions = validationAssertions data;
failures = lib.filter (assertion: !assertion.assertion) assertions;
in
assert lib.assertMsg (lib.all (assertion: assertion.assertion) assertions) (
lib.concatMapStringsSep "\n" (assertion: assertion.message) failures
);
data;
# NOLINT(single_use_binding)
validationAssertions =
data:
lib.concatLists (
@@ -29,6 +19,7 @@ let
) definitions
);
# NOLINT(single_use_binding)
flattenRegistryEntries =
registryName: data:
lib.concatLists (
@@ -41,4 +32,12 @@ let
) data
);
in
assertValid
data:
let
assertions = validationAssertions data;
in
lib.assertMsg (lib.all (assertion: assertion.assertion) assertions) (
lib.concatMapStringsSep "\n" (assertion: assertion.message) (
lib.filter (assertion: !assertion.assertion) assertions
)
)