server/programs/kanata/default.nix

130 lines
3.3 KiB
Nix

{ machine, pkgs, ... }:
let
kanata-config = ''
(defcfg
process-unmapped-keys yes
danger-enable-cmd yes
)
(defsrc
esc
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
lctl lmet lalt spc ralt rctl
)
(deflayer qwerty
@esc
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
@cap a s d f g h j k l ; ' ret
lsft z x c v b n m , . / rsft
lctl @lmet lalt spc ralt @rctl
)
(deflayer control
@esc
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab @mcleft @mup @mcright @replay t y u i o p @wup @wdown \
@cap @mleft @mdown @mright f g left down up right ; ' bspc
lsft z x C-c v bspc n @macro , . C-f rsft
lctl lmet lalt spc ralt @rctl
)
(deflayermap (other)
w @mup
a @mleft
s @mdown
d @mright
q @mcleft
e @mcright
[ @wup
] @wdown
)
(defalias
;; hold esc
esc (tap-hold 200 200 C-k (macro C-f esc))
;; control
cap (tap-hold-release 200 200
(multi dynamic-macro-record-stop esc)
(layer-while-held control)
)
lmet (
tap-hold-press 200 200
(cmd ${pkgs.lib.getExe' pkgs.custom.niri "niri"} msg action toggle-overview)
lmet
)
mup (movemouse-up 1 1)
mleft (movemouse-left 1 1)
mdown (movemouse-down 1 1)
mright (movemouse-right 1 1)
mcleft mlft
mcright mrgt
macro (dynamic-macro-record 0)
replay (dynamic-macro-play 0)
wup (mwheel-up 50 120)
wdown (mwheel-down 50 120)
;; programming
rctl (
tap-hold-release
200 200
C-k (layer-while-held other)
)
)
'';
in
{
custom.program.kanata = machine.program {
requirements = [ "graphical" ];
home-config =
{ pkgs, ... }:
{
systemd.user.services.kanata = {
Unit = {
Description = "kanata";
};
Service = {
Restart = "always";
RestartSec = "3";
ExecStart = "${pkgs.kanata-with-cmd}/bin/kanata --cfg ${pkgs.writeText "kanata.kbd" kanata-config}";
Nice = "-20";
};
Install = {
WantedBy = [ "default.target" ];
};
};
home.file.kanata = {
target = ".config/kanata/kanata.kbd";
text = kanata-config;
};
};
};
# custom.program.kanata.system-config =
# { pkgs, ... }:
# {
# sudo groupadd uinput
# sudo usermod -aG input $USER
# sudo usermod -aG uinput $USER
# echo "KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"" >> /etc/udev/rules.d/99-input.rules
# reboot or sudo udevadm control --reload-rules && sudo udevadm trigger
# sudo modprobe uinput
# };
}