diff --git a/configs/nixos/modules/desktop/apps/ghostty.nix b/configs/nixos/modules/desktop/apps/ghostty.nix index 0e1f97d..dd07245 100644 --- a/configs/nixos/modules/desktop/apps/ghostty.nix +++ b/configs/nixos/modules/desktop/apps/ghostty.nix @@ -12,7 +12,8 @@ in options.modules.desktop.apps.ghostty.enable = lib.mkEnableOption "Ghostty as the desktop terminal"; config = lib.mkIf config.modules.desktop.apps.ghostty.enable { - registry.keybind.${config.networking.hostName}."SUPER + Return" = { + registry.keybind.${config.networking.hostName}.ghostty = { + keys = "SUPER + Return"; action = { kind = "exec"; command = "${pkgs.ghostty}/bin/ghostty"; diff --git a/configs/nixos/modules/desktop/session/hyprland/default.nix b/configs/nixos/modules/desktop/session/hyprland/default.nix index 8942b3d..e73441e 100644 --- a/configs/nixos/modules/desktop/session/hyprland/default.nix +++ b/configs/nixos/modules/desktop/session/hyprland/default.nix @@ -35,9 +35,9 @@ settings = { config.general.layout = "dwindle"; - bind = lib.mapAttrsToList (keys: keybind: { + bind = lib.mapAttrsToList (_name: keybind: { _args = [ - keys + keybind.keys (lib.generators.mkLuaInline "hl.dsp.exec_cmd(${lib.generators.toLua { } keybind.action.command})") ]; }) (lib.attrByPath [ config.networking.hostName ] { } config.registry.keybind); diff --git a/configs/nixos/registry/keybind.nix b/configs/nixos/registry/keybind.nix index 6c56ec7..4fc516d 100644 --- a/configs/nixos/registry/keybind.nix +++ b/configs/nixos/registry/keybind.nix @@ -1,7 +1,20 @@ -{ lib, ... }: +{ lib, util, ... }: { + checks = [ + { + assertion = util.registry.predicates.uniqueValue (entry: entry.value.keys); + message = "Desktop keybinds must use unique key chords."; + } + ]; + type = lib.types.submodule { options = { + keys = lib.mkOption { + description = "Sets the key chord for this desktop keybind."; + type = lib.types.str; + example = "SUPER + Return"; + }; + action = lib.mkOption { description = "Declares the action this keybind runs."; type = lib.types.submodule {