refactor(registry): compose stable uid validation

This commit is contained in:
2026-08-25 21:30:15 -04:00
parent ca3a6ba62a
commit 8731896811

View File

@@ -1,28 +1,19 @@
{ lib, ... }: { lib, ... }:
let let
inherit (lib) inherit (lib)
foldl' filterAttrs
groupBy groupBy
mapAttrs
unique unique
; ;
serviceNamesByUid = entries:
mapAttrs (_uid: uidEntries: unique (map (entry: entry.entry) uidEntries)) (
groupBy (entry: toString entry.value) entries
);
duplicateUids = entries: duplicateUids = entries:
let filterAttrs (_uid: serviceNames: builtins.length serviceNames > 1) (serviceNamesByUid entries);
byUid = groupBy (entry: toString entry.value) entries;
in
foldl' (
acc: uid:
let
serviceNames = unique (map (entry: entry.entry) byUid.${uid});
in
if builtins.length serviceNames > 1 then
acc ++ [ {
uid = lib.toInt uid;
inherit serviceNames;
} ]
else
acc
) [ ] (builtins.attrNames byUid);
in in
{ {
@@ -37,7 +28,7 @@ in
in in
[ [
{ {
assertion = uidConflicts == [ ]; assertion = uidConflicts == { };
message = "Stable UID allocations must be unique."; message = "Stable UID allocations must be unique.";
} }
]; ];