diff --git a/configs/nixos/registry/keybind.nix b/configs/nixos/registry/keybind.nix index d166ede..be55051 100644 --- a/configs/nixos/registry/keybind.nix +++ b/configs/nixos/registry/keybind.nix @@ -2,10 +2,7 @@ { checks = [ { - assertion = util.registry.predicates.uniqueValue (entry: { - inherit (entry) host; - inherit (entry.value) keys; - }); + assertion = util.registry.predicates.uniquePerHost (entry: entry.value.keys); message = "Desktop keybinds must use unique key chords per host."; } ]; diff --git a/src/dotfiles/util.nix b/src/dotfiles/util.nix index 5f87cff..b461c7c 100644 --- a/src/dotfiles/util.nix +++ b/src/dotfiles/util.nix @@ -16,14 +16,23 @@ let [ ] ) (builtins.readDir dir) ); + + uniqueValue = + value: entries: builtins.length (lib.unique (map value entries)) == builtins.length entries; in { inherit collectNixFiles; removeNixSuffix = path: lib.removeSuffix ".nix" (builtins.baseNameOf path); - registry.predicates.uniqueValue = - value: entries: builtins.length (lib.unique (map value entries)) == builtins.length entries; + registry.predicates.uniqueValue = uniqueValue; + + registry.predicates.uniquePerHost = + value: + uniqueValue (entry: { + inherit (entry) host; + value = value entry; + }); bridgeName = id: "br-vlan${toString id}";