26 lines
551 B
Nix
26 lines
551 B
Nix
{ lib, ... }:
|
|
let
|
|
duplicateUids =
|
|
entries:
|
|
lib.filterAttrs (_uid: entryNames: builtins.length entryNames > 1) (entryNamesByUid entries);
|
|
|
|
entryNamesByUid =
|
|
entries:
|
|
lib.mapAttrs (_uid: uidEntries: lib.unique (map (entry: entry.entry) uidEntries)) (
|
|
lib.groupBy (entry: toString entry.value) entries
|
|
);
|
|
|
|
in
|
|
{
|
|
# Next stable UID: 20005
|
|
|
|
type = lib.types.ints.positive;
|
|
|
|
checks = [
|
|
{
|
|
assertion = entries: duplicateUids entries == { };
|
|
message = "Multiple entries use the same stable UID.";
|
|
}
|
|
];
|
|
}
|