diff --git a/registry/stable-uid.nix b/registry/stable-uid.nix index 3549850..cb6faaf 100644 --- a/registry/stable-uid.nix +++ b/registry/stable-uid.nix @@ -1,28 +1,19 @@ { lib, ... }: let inherit (lib) - foldl' + filterAttrs groupBy + mapAttrs unique ; + serviceNamesByUid = entries: + mapAttrs (_uid: uidEntries: unique (map (entry: entry.entry) uidEntries)) ( + groupBy (entry: toString entry.value) entries + ); + duplicateUids = entries: - let - 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); + filterAttrs (_uid: serviceNames: builtins.length serviceNames > 1) (serviceNamesByUid entries); in { @@ -37,7 +28,7 @@ in in [ { - assertion = uidConflicts == [ ]; + assertion = uidConflicts == { }; message = "Stable UID allocations must be unique."; } ];