diff --git a/hosts/stellaris/default.nix b/hosts/stellaris/default.nix index d918c1a..eaa4ac8 100644 --- a/hosts/stellaris/default.nix +++ b/hosts/stellaris/default.nix @@ -15,6 +15,7 @@ libvirt.enable = true; languagetool.enable = true; work-proxy.enable = true; + kanata.enable = true; }; media = { mpd.enable = true; diff --git a/modules/services/kanata.nix b/modules/services/kanata.nix new file mode 100644 index 0000000..ec00949 --- /dev/null +++ b/modules/services/kanata.nix @@ -0,0 +1,57 @@ +{ + config, + lib, + ... +}: + +let + cfg = config.modules.services.kanata; +in +{ + options.modules.services.kanata = { + enable = lib.my.mkBoolOpt false; + }; + + config = lib.mkIf cfg.enable { + services.kanata = { + enable = true; + keyboards.laptop.config = '' + ;; QWERTY-shaped matrix; works for AZERTY because Kanata uses scancodes. + (defsrc + esc 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 rmet rctl + ) + + (defvar + tap-time 150 + hold-time 200 + ) + + ;; Home-row mod-taps (tap sends the letter; hold sends the modifier) + (defalias + a-alt (tap-hold $tap-time $hold-time a lalt) + s-ctl (tap-hold $tap-time $hold-time s lctl) + d-sft (tap-hold $tap-time $hold-time d lsft) + f-met (tap-hold $tap-time $hold-time f lmet) + + j-met (tap-hold $tap-time $hold-time j rmet) + k-sft (tap-hold $tap-time $hold-time k rsft) + l-ctl (tap-hold $tap-time $hold-time l rctl) + ;-alt (tap-hold $tap-time $hold-time ; ralt) + ) + + (deflayer main + esc 1 2 3 4 5 6 7 8 9 0 - = bspc + tab q w e r t y u i o p [ ] \ + caps @a-alt @s-ctl @d-sft @f-met g h @j-met @k-sft @l-ctl @;-alt ' ret + lsft z x c v b n m , . / rsft + lctl lmet lalt spc ralt rmet rctl + ) + ''; + }; + + }; +}