nixos-config/modules/system/kanata.nix
2025-05-19 10:13:14 -04:00

158 lines
6.3 KiB
Nix

{ inputs, pkgs, ... }:
let
k-vars = ''
(defvar
tap-timeout 150
hold-timeout 150)
'';
in
{
environment.systemPackages = [
pkgs.kanata
];
# Add the Kanata service user to necessary groups
systemd.services.kanata-razer.serviceConfig = {
SupplementaryGroups = [
"input"
"uinput"
"openrazer"
];
};
services.kanata = {
enable = true;
keyboards = {
sinc = {
devices = [ "/dev/input/by-id/usb-Keebio_Sinc_Rev._4-event-kbd"
"/dev/input/by-id/usb-Keebio_Sinc_Rev._4-event-if02"
"/dev/input/by-id/usb-Keebio_Sinc_Rev._4-if02-event-joystick" ];
extraDefCfg = ''
process-unmapped-keys yes
concurrent-tap-hold yes
allow-hardware-repeat false
'';
config = ''
(defsrc
esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prtsc
grv 1 2 3 4 5 6 7 8 9 0 - = \ del home
tab q w e r t y u i o p [ ] bspc end
caps a s d f g h j k l ; ' ret pgup
lsft z x c v b n m , . / rsft up pgdn
lctl slck lmet lalt spc ralt rmet rctrl left down right)
${k-vars}
(defalias
supesc (tap-hold-press $tap-timeout $hold-timeout esc lmet)
sp-lsft (tap-hold-press $tap-timeout $hold-timeout S-9 lsft)
sp-rsft (tap-hold-press $tap-timeout $hold-timeout S-0 lsft)
controls (layer-while-held media-controls)
nav (tap-hold-press $tap-timeout $hold-timeout a (layer-while-held navigation)))
(deflayer qwerty
esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prtsc
grv 1 2 3 4 5 6 7 8 9 0 - = \ del home
tab q w e r t y u i o p [ ] bspc end
@supesc a s d f g h j k l ; ' ret pgup
@sp-lsft z x c v b n m , . / @sp-rsft up pgdn
lmet @controls lalt lctrl spc rctrl ralt rmet left down right)
(deflayer navigation
esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prtsc
grv 1 2 3 4 5 6 7 8 9 0 - = \ del home
tab q w e r t y u i o p [ ] bspc end
@supesc a s d f g left down up right ; ' ret pgup
@sp-lsft z x c v b n m , . / @sp-rsft up pgdn
lmet @controls lalt lctrl spc rctrl ralt rmet left down right)
(deflayer media-controls
esc VolumeMute VolumeDown VolumeUp f4 MediaTrackPrevious MediaPlayPause MediaTrackNext f8 f9 f10 f11 f12 prtsc
grv 1 2 3 4 5 6 7 8 9 0 - = \ del home
tab q w e r t y u i o MediaPlayPause [ ] bspc end
@supesc a s d f g MediaTrackNext VolumeDown VolumeUp MediaTrackPrevious ; ' ret pgup
@sp-lsft z x c v b n VolumeMute , . / @sp-rsft pgup _
lmet lmet lalt lctrl spc rctrl ralt rmet home pgdn end)
'';
};
# quefrency = {
# devices = [ "/dev/input/by-id/usb-Keebio_Sinc_Rev._4-event-kbd"
# "/dev/input/by-id/usb-Keebio_Sinc_Rev._4-event-if02"
# "/dev/input/by-id/usb-Keebio_Sinc_Rev._4-if02-event-joystick" ];
# extraDefCfg = ''
# process-unmapped-keys yes
# concurrent-tap-hold yes
# '';
# config = ''
# (defsrc
# grv 1 2 3 4 5 6 7 8 9 0 - = \ del home
# tab q w e r t y u i o p [ ] bspc end
# caps a s d f g h j k l ; ' ret pgup
# lsft z x c v b n m , . / rsft up pgdn
# lctl slck lmet lalt spc ralt rmet rctrl left down right)
# ${k-vars}
# (defalias
# supesc (tap-hold-press $tap-timeout $hold-timeout esc lmet)
# sp-lsft (tap-hold-press $tap-timeout $hold-timeout S-9 lsft)
# sp-rsft (tap-hold-press $tap-timeout $hold-timeout S-0 lsft)
# controls (layer-while-held controls))
# (deflayer qwerty
# grv 1 2 3 4 5 6 7 8 9 0 - = \ del home
# tab q w e r t y u i o p [ ] bspc end
# @supesc a s d f g h j k l ; ' ret pgup
# @sp-lsft z x c v b n m , . / @sp-rsft up pgdn
# lmet @controls lalt lctrl spc rctrl ralt rmet left down right)
# (deflayer controls
# grv 1 2 3 4 5 6 7 8 9 0 - = \ del home
# tab q w e r t y u i o MediaPlayPause [ ] bspc end
# @supesc a s d f g MediaTrackNext VolumeDown VolumeUp MediaTrackPrevious l ; ' ret pgup
# @sp-lsft z x c v b n VolumeMute , . / @sp-rsft pgup _
# lmet lmet lalt lctrl spc rctrl ralt rmet home pgdn end)
# '';
# }
razer = {
devices = [ "/dev/input/by-id/usb-Razer_Razer_Blade-event-kbd"
"/dev/input/by-id/usb-Razer_Razer_Blade-if01-event-kbd" ];
extraDefCfg = ''
process-unmapped-keys yes
concurrent-tap-hold yes
allow-hardware-repeat false
'';
config = ''
(defsrc
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
caps a s d f g h j k l ; ' ret
lsft z x c v b n m , . / rsft
lctrl lmet lalt spc ralt rctrl)
${k-vars}
(defalias
supesc (tap-hold-press $tap-timeout $hold-timeout esc lmet)
sp-lsft (tap-hold-press $tap-timeout $hold-timeout S-9 lsft)
sp-rsft (tap-hold-press $tap-timeout $hold-timeout S-0 lsft))
(deflayer qwerty
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
@supesc a s d f g h j k l ; ' ret
@sp-lsft z x c v b n m , . / @sp-rsft
lmet lalt lctrl spc rctrl ralt)
'';
};
};
};
}