nixfiles/home/common/wm/keybinds.nix

52 lines
1.4 KiB
Nix

{
pkgs,
config,
lib,
outputs,
...
}: let
df = lib.mkDefault;
mkxf = with lib; mapAttrs' (name: value: nameValuePair ("XF86" + name) value);
# not rewriting this rn
keysetting = "${outputs.packages.${pkgs.system}.wm-helpers}/bin/keysetting";
in {
options.nixfiles.common.wm = {
keybinds = lib.mkOption {
description = ''
Attribute set containing wm-independent XF86 keysyms and associated
commands (without the XF86 prefix)
'';
type = with lib.types; attrsOf str;
default = {};
example = {
XF86AudioPlay = "playerctl play-pause";
};
};
finalKeybinds = lib.mkOption {
description = "Keysyms with XF86 prefix";
type = with lib.types; attrsOf str;
default = mkxf config.nixfiles.common.wm.keybinds;
readOnly = true;
};
};
config = {
nixfiles.common.wm.keybinds = {
AudioRaiseVolume = df "${keysetting} volumeup";
AudioLowerVolume = df "${keysetting} volumedown";
AudioMute = df "${keysetting} mute";
AudioMicMute = df "${keysetting} micmute";
KbdBrightnessDown = df "${keysetting} keydown";
KbdBrightnessUp = df "${keysetting} keyup";
MonBrightnessDown = df "${keysetting} mondown";
MonBrightnessUp = df "${keysetting} monup";
AudioPlay = df "playerctl play-pause";
AudioPrev = df "playerctl previous";
AudioNext = df "playerctl next";
};
};
}