refactor(dotfiles): split registry responsibilities

This commit was merged in pull request #110.
This commit is contained in:
2026-09-27 23:31:44 -04:00
parent 0e5731145e
commit 5af563d70f
10 changed files with 242 additions and 201 deletions

View File

@@ -0,0 +1,44 @@
{
definitions,
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;
validationAssertions =
data:
lib.concatLists (
lib.mapAttrsToList (
registryName: registry:
let
entries = flattenRegistryEntries registryName data.${registryName};
in
map (check: {
assertion = check.assertion entries;
inherit (check) message;
}) registry.checks
) definitions
);
flattenRegistryEntries =
registryName: data:
lib.concatLists (
lib.mapAttrsToList (
host: entries:
lib.mapAttrsToList (entry: value: {
path = "registry.${registryName}.${host}.${entry}";
inherit host entry value;
}) entries
) data
);
in
assertValid