From eb01c9561feca491bf510dd58ce68b522d117095 Mon Sep 17 00:00:00 2001 From: lulusilly Date: Wed, 24 Dec 2025 23:50:40 -0400 Subject: [PATCH] moved kanata config into its own directory with kanata.nix --- .config/nix/hosts/cantor/configuration.nix | 2 +- .config/nix/hosts/common.nix | 3 - .config/nix/hosts/home.nix | 2 +- .config/nix/modules/kanata/conf.kbd | 164 ++++++++++++++++++++ .config/nix/modules/{ => kanata}/kanata.nix | 5 +- 5 files changed, 167 insertions(+), 9 deletions(-) create mode 100644 .config/nix/modules/kanata/conf.kbd rename .config/nix/modules/{ => kanata}/kanata.nix (78%) diff --git a/.config/nix/hosts/cantor/configuration.nix b/.config/nix/hosts/cantor/configuration.nix index 228125c..6a167b1 100644 --- a/.config/nix/hosts/cantor/configuration.nix +++ b/.config/nix/hosts/cantor/configuration.nix @@ -4,7 +4,7 @@ imports = [ ./hardware-configuration.nix - ../../modules/kanata.nix + ../../modules/kanata/kanata.nix ../../modules/laptop.nix ../../modules/efi.nix ../../modules/hypr.nix diff --git a/.config/nix/hosts/common.nix b/.config/nix/hosts/common.nix index 6139b84..e30a877 100644 --- a/.config/nix/hosts/common.nix +++ b/.config/nix/hosts/common.nix @@ -52,9 +52,6 @@ layout = "us"; variant = ""; }; - environment.systemPackages = with pkgs; [ - git - ]; # Zsh programs.zsh.enable = true; # Browser diff --git a/.config/nix/hosts/home.nix b/.config/nix/hosts/home.nix index 4361c6b..8269530 100644 --- a/.config/nix/hosts/home.nix +++ b/.config/nix/hosts/home.nix @@ -68,7 +68,7 @@ co = "checkout"; s = "status"; pu = "push origin master"; - po = "push origin main" + po = "push origin main"; rmc = "rm -r --cached"; }; }; diff --git a/.config/nix/modules/kanata/conf.kbd b/.config/nix/modules/kanata/conf.kbd new file mode 100644 index 0000000..6b13055 --- /dev/null +++ b/.config/nix/modules/kanata/conf.kbd @@ -0,0 +1,164 @@ +#| + Kanata Config + ○ Ergonomic (kinda?) 34-key QWERTY layout + ○ GACS home-row mods + ○ Layers for function, number, media, and symbol keys + ○ Dedicated (and non-intrusive!) standard layout toggle for reliant tasks + ○ Decently commented for beginners and seasoned veterans alike. + + FEEL FREE TO FORK!!! +|# +(defcfg + concurrent-tap-hold yes + movemouse-smooth-diagonals yes +) +#| + Trying to be minimal in order to reduce constant editing + of layer keys, not to mention how ugly having a 60% layout + is when you have mapped keys in the grid. +|# +(defsrc + caps + q w e r t y u i o p + a s d f g h j k l scln + z x c v b n m , . / + lalt spc ralt +) +;; Variables for clean code +(defvar + tap-time 200 + hold-time 250 + chord-time 50 +) +;; Bindings +(defalias + ;; Normal keyboard layer for gaming/other normie usage + normie (layer-switch norm) + ;; Key chord definitions + chw (chord ch w) + che (chord ch e) + chi (chord ch i) + cho (chord ch o) + chs (chord ch s) + chd (chord ch d) + chk (chord ch k) + chl (chord ch l) + ch_lalt (chord ch lalt) + ch_ralt (chord ch ralt) + ;; Remap Caps to Escape/Nav layer + navlayer (layer-while-held nav) + caps (tap-hold $tap-time $hold-time (tap-dance 200 (esc caps)) @navlayer) + ;; Home row mods + a (tap-hold $tap-time $hold-time a lmet) + s (tap-hold $tap-time $hold-time s lalt) + d (tap-hold $tap-time $hold-time d lctl) + f (tap-hold $tap-time $hold-time f lsft) + j (tap-hold $tap-time $hold-time j rsft) + k (tap-hold $tap-time $hold-time k lctl) + l (tap-hold $tap-time $hold-time l lalt) + scln (tap-hold $tap-time $hold-time scln rmet) + ;; Numpad layer + numpad (layer-while-held num) + g (tap-hold $tap-time $hold-time g @numpad) + ;; Function key layer + fnkeys (layer-while-held fn) + h (tap-hold $tap-time $hold-time h @fnkeys) + #| + Hyper key when V or M are held down to allow for either hand to + use hyper key for AHK/Raycast shortcuts. + |# + v (tap-hold $tap-time $hold-time v (multi lsft lctl lalt)) + m (tap-hold $tap-time $hold-time m (multi lsft lctl lalt)) + ;; Holding Spacebar activates symbol layer + symbols (layer-while-held symbol) + spc (tap-hold $tap-time $hold-time spc @symbols) + ;; Media layer when Z or / are held. + medialy (layer-while-held md) + z (tap-hold $tap-time $hold-time z @medialy) + / (tap-hold $tap-time $hold-time / @medialy) +) +;; Chord definitions. Kind of weird to read as a layperson +;; so I provided sufficient comments for general understanding. +(defchords ch $chord-time + (w ) w ;; W => W + ( e) e ;; E => E + (w e) ret ;; W + E => Enter + (i ) i ;; I => I + ( o) o ;; O => O + (i o) bspc ;; I + O => Backspace + (s ) @s ;; S => S + ( d) @d ;; D => D + (s d) tab ;; S + D => Tab + (k ) @k ;; K => K (See defalias) + ( l) @l ;; L => L (See defalias) + (k l) esc ;; K + L => Escape + (lalt ) (tap-dance $tap-time ((multi lsft lctl lalt lmet) lalt)) ;; LAlt => Hyper Key, LAlt × 2 => LAlt + ( ralt) (tap-dance $tap-time ((multi lsft lctl lalt lmet) lalt)) ;; RAlt => Hyper Key, RAlt × 2 => RAlt + #| + Put simply, the below line allows for toggling a no-bind + layer for when you may require a standard layout (such as + playing Street Fighter, Counter Strike, etc.) by pressing + both alt keys at the same time. You can toggle back to the + base layer by holding both alts at the same time, as to allow + for normal functionality when holding either key down for a shortcut. + |# + (lalt ralt) (tap-hold $tap-time $hold-time @normie (layer-switch base)) +) +;; Base layer with all binds enabled +(deflayer base + @caps + q @chw @che r t y u @chi @cho p + @a @chs @chd @f @g @h @j @chk @chl @scln + @z x c @v b n @m , . @/ + @ch_lalt @spc @ch_ralt +) +;; Navigation layer +(deflayer nav + _ + mbck (movemouse-up 3 3) mfwd _ _ _ mlft mrgt pgup pgdn + (movemouse-left 3 3) (movemouse-down 3 3) (movemouse-right 3 3) _ home left down up right end + _ _ _ _ _ _ _ _ _ _ + _ _ _ +) +;; Numpad Layer +(deflayer num + _ + _ _ _ _ _ _ 7 8 9 _ + _ _ _ _ _ _ 4 5 6 0 _ + _ _ _ _ _ 1 2 3 _ + _ _ _ +) +;; Function key layer +(deflayer fn + _ + f1 f2 f3 f4 _ _ _ _ _ _ + f5 f6 f7 f8 _ _ _ _ _ _ _ + f9 f10 f11 f12 _ _ _ _ _ + _ _ _ +) +;; Symbol layer +(deflayer symbol + _ + S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 S-9 S-0 + - S-= S-[ S-] [ ] S-` S-scln S-\ \ + = _ _ ` _ S-- _ _ ' S-' + _ _ _ +) +;; Aformentioned standard layer with combo binds for toggling back +;; to base layer. +(deflayer norm + esc + q w e r t y u i o p + a s d f g h j k l scln + z x c v b n m , . / + @ch_lalt spc @ch_ralt +) +;; Media layer +;; NOTE: On Windows the brdn and brup keys cause Kanata to crash for some reason as of kanata_gui 1.8.1 +(deflayer md + _ + _ _ _ _ _ _ _ _ _ _ + prev pp next mute vold volu brdn brup ins del + _ _ _ _ _ _ _ _ _ _ + _ _ _ +) \ No newline at end of file diff --git a/.config/nix/modules/kanata.nix b/.config/nix/modules/kanata/kanata.nix similarity index 78% rename from .config/nix/modules/kanata.nix rename to .config/nix/modules/kanata/kanata.nix index e902745..c07d4ea 100644 --- a/.config/nix/modules/kanata.nix +++ b/.config/nix/modules/kanata/kanata.nix @@ -25,10 +25,7 @@ devices = [ "/dev/input/by-path/platform-i8042-serio-0-event-kbd" ]; - configFile = builtins.fetchurl { - url = https://git.luluslly.xyz/lulusilly/dotfiles/raw/branch/master/.config/kanata/conf.kbd; - sha256 = "97947618d01cc8bd553c2d305537b9db6962a3a9205cda43abadc1b87eed901f"; - }; + configFile = builtins.readFile = ./conf.kbd; }; }; };