From c8d53e5e2d14d2b4beab7c4c29ee08d6bd470d95 Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 3 Oct 2026 20:01:26 -0400 Subject: [PATCH] refactor(dotfiles): separate registry validation --- src/dotfiles/registry.nix | 33 ++++++++++++++-------------- src/dotfiles/registry/validation.nix | 23 ++++++++++--------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/dotfiles/registry.nix b/src/dotfiles/registry.nix index 2582ce4..94bfa21 100644 --- a/src/dotfiles/registry.nix +++ b/src/dotfiles/registry.nix @@ -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 + ); + }; } diff --git a/src/dotfiles/registry/validation.nix b/src/dotfiles/registry/validation.nix index 1840ff5..5670b5d 100644 --- a/src/dotfiles/registry/validation.nix +++ b/src/dotfiles/registry/validation.nix @@ -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 + ) +)