From b0576debcab48c6c638582c39fa8bbd622617380 Mon Sep 17 00:00:00 2001 From: ulic-youthlic Date: Wed, 15 Oct 2025 17:25:33 +0800 Subject: [PATCH] feat(kanata): Include dorvak-programmer layer --- nixos/modules/programs/kanata.nix | 54 ----------------------- nixos/modules/programs/kanata/default.nix | 31 +++++++++++++ nixos/modules/programs/kanata/kanata.lisp | 51 +++++++++++++++++++++ 3 files changed, 82 insertions(+), 54 deletions(-) delete mode 100644 nixos/modules/programs/kanata.nix create mode 100644 nixos/modules/programs/kanata/default.nix create mode 100644 nixos/modules/programs/kanata/kanata.lisp diff --git a/nixos/modules/programs/kanata.nix b/nixos/modules/programs/kanata.nix deleted file mode 100644 index 603c9c3..0000000 --- a/nixos/modules/programs/kanata.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.youthlic.programs.kanata; -in -{ - options = { - youthlic.programs.kanata = { - enable = lib.mkEnableOption "kanata"; - }; - }; - config = lib.mkIf cfg.enable { - boot.kernelModules = [ "uinput" ]; - hardware.uinput.enable = true; - services.kanata = { - enable = true; - package = pkgs.kanata-with-cmd; - keyboards.default = { - extraDefCfg = '' - process-unmapped-keys no - ''; - config = - #scheme - '' - #| - Kanata - - CapsLock tap to Esc - CapsLock hold to Ctrl - |# - ;; default keyboard layout - (defsrc - caps ;; type → esc, hold caps → ctrl - esc ;; type esc → caps, hold esc → esc - ) - - (deflayer default - @cac - @esc-behavior - ) - - (defalias - cac (tap-hold 190 190 esc lctrl) ;; hold CapsLock → Esc, press CapsLock → LCtrl - esc-behavior (tap-hold 190 190 esc caps) ;; hold Esc → CapsLock, press Esc → Esc - ) - ''; - }; - }; - }; -} diff --git a/nixos/modules/programs/kanata/default.nix b/nixos/modules/programs/kanata/default.nix new file mode 100644 index 0000000..ca8d5de --- /dev/null +++ b/nixos/modules/programs/kanata/default.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.youthlic.programs.kanata; +in +{ + options = { + youthlic.programs.kanata = { + enable = lib.mkEnableOption "kanata"; + }; + }; + config = lib.mkIf cfg.enable { + boot.kernelModules = [ "uinput" ]; + hardware.uinput.enable = true; + services.kanata = { + enable = true; + package = pkgs.kanata-with-cmd; + keyboards.default = { + extraDefCfg = '' + process-unmapped-keys no + concurrent-tap-hold yes + ''; + config = builtins.readFile ./kanata.lisp; + }; + }; + }; +} diff --git a/nixos/modules/programs/kanata/kanata.lisp b/nixos/modules/programs/kanata/kanata.lisp new file mode 100644 index 0000000..a9b231b --- /dev/null +++ b/nixos/modules/programs/kanata/kanata.lisp @@ -0,0 +1,51 @@ +(defsrc + esc f1 f2 f3 + grv 1 2 3 4 5 6 7 8 9 0 min eql + q w e r t y u i o p lbrc rbrc bksl + caps a s d f g h j k l scln apos + lsft z x c v b n m comm Period Slash rsft) + +(deflayer qwerty + @esc-behavior @qf1 @df2 @qf3 + grv 1 2 3 4 5 6 7 8 9 0 min eql + q w e r t y u i o p lbrc rbrc bksl + @cac a s d f g h j k l scln apos + lsft z x c v b n m comm Period Slash rsft) + +(deflayer raw-qwerty + esc @qf1 @df2 @qf3 + grv 1 2 3 4 5 6 7 8 9 0 min eql + q w e r t y u i o p lbrc rbrc bksl + caps a s d f g h j k l scln apos + lsft z x c v b n m comm Period Slash rsft) + +(deflayer dorvak-programmer + @esc-behavior @qf1 @df2 @qf3 + @dv1-1 @dv1-2 @dv1-3 @dv1-4 @dv1-5 @dv1-6 @dv1-7 @dv1-8 @dv1-9 @dv1-10 @dv1-11 @dv1-12 @dv1-13 + scln comm Period p y f g c r l Slash @dv2-13 bksl + @cac a o e u i d h t n s min + lsft apos q j k x b m w v z rsft) + +(defalias + cac (tap-hold 190 190 esc lctrl) + esc-behavior (tap-hold 190 190 esc caps) + + qf1 (tap-dance 200 (f1 (layer-switch qwerty))) + df2 (tap-dance 200 (f2 (layer-switch dorvak-programmer))) + qf3 (tap-dance 200 (f3 (layer-switch raw-qwerty))) + + dv1-1 (fork S-4 S-grv (lsft rsft)) + dv1-2 (fork S-7 S-5 (lsft rsft)) + dv1-3 (fork (un⇧ lbrc) (un⇧ 7) (lsft rsft)) + dv1-4 (fork S-lbrc (un⇧ 5) (lsft rsft)) + dv1-5 (fork S-rbrc (un⇧ 3) (lsft rsft)) + dv1-6 (fork S-9 (un⇧ 1) (lsft rsft)) + dv1-7 (fork eql (un⇧ 9) (lsft rsft)) + dv1-8 (fork S-8 (un⇧ 0) (lsft rsft)) + dv1-9 (fork S-0 (un⇧ 2) (lsft rsft)) + dv1-10 (fork S-eql (un⇧ 4) (lsft rsft)) + dv1-11 (fork (un⇧ rbrc) (un⇧ 6) (lsft rsft)) + dv1-12 (fork S-1 (un⇧ 8) (lsft rsft)) + dv1-13 (fork S-3 (un⇧ grv) (lsft rsft)) + + dv2-13 (fork S-2 S-6 (lsft rsft)))