From bf34b505a5422453e5a78fb4d367622f8c8cd65b Mon Sep 17 00:00:00 2001 From: Etienne Robert Date: Wed, 1 Apr 2026 18:35:28 +0200 Subject: [PATCH 01/11] kanata: add kanata-main overlay and config updates --- nix/flake.nix | 1 + nix/modules/hosts/tower/default.nix | 1 + nix/modules/nixos-base.nix | 18 +++++++++++++++--- nix/modules/overlays/kanata-main.nix | 26 ++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 nix/modules/overlays/kanata-main.nix diff --git a/nix/flake.nix b/nix/flake.nix index eeb82ed2..5e2ec807 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -45,6 +45,7 @@ ./modules/hosts/aaron ./modules/hosts/leod ./modules/hosts/pi + ./modules/overlays/kanata-main.nix ./modules/home ./modules/home/linux.nix ./modules/home/common.nix diff --git a/nix/modules/hosts/tower/default.nix b/nix/modules/hosts/tower/default.nix index 6c8c8c86..46f1277a 100644 --- a/nix/modules/hosts/tower/default.nix +++ b/nix/modules/hosts/tower/default.nix @@ -17,6 +17,7 @@ in specialArgs = { inherit self pronto agenix; }; modules = [ ./configuration.nix + { nixpkgs.overlays = [ self.overlays.kanata-main ]; } nix-index-database.nixosModules.default home-manager.nixosModules.home-manager agenix.nixosModules.default diff --git a/nix/modules/nixos-base.nix b/nix/modules/nixos-base.nix index e635e605..b3187f36 100644 --- a/nix/modules/nixos-base.nix +++ b/nix/modules/nixos-base.nix @@ -22,12 +22,24 @@ _: { enable = true; keyboards.default = { config = /* scheme */ '' - (defsrc - caps - ) + (defsrc caps a s d f j k l ;) + + (defhands + (left q w e r t a s d f g z x c v b) + (right y u i o p h j k l ; n m , . / )) (deflayer base (tap-hold-press 0 200 esc lctl) + + (tap-hold-opposite-hand 150 a lmet) + (tap-hold-opposite-hand 150 s lalt) + (tap-hold-opposite-hand 150 d lctl) + (tap-hold-opposite-hand 150 f lsft) + + (tap-hold-opposite-hand 150 j rsft) + (tap-hold-opposite-hand 150 k rctl) + (tap-hold-opposite-hand 150 l lalt) + (tap-hold-opposite-hand 150 ; rmet) ) ''; extraDefCfg = "process-unmapped-keys yes"; diff --git a/nix/modules/overlays/kanata-main.nix b/nix/modules/overlays/kanata-main.nix new file mode 100644 index 00000000..2799ebd7 --- /dev/null +++ b/nix/modules/overlays/kanata-main.nix @@ -0,0 +1,26 @@ +_: { + flake.overlays.kanata-main = ( + final: prev: { + kanata = prev.kanata.overrideAttrs (_: { + doCheck = false; + version = "main"; + src = final.fetchFromGitHub { + owner = "jtroo"; + repo = "kanata"; + rev = "484368f406584255208dfd59359130f3769baf52"; + hash = "sha256-IXnYds2pHLS0dOh2vDSP/0bA/8YmCuprJXAOgI0TDn4="; + }; + cargoDeps = prev.rustPlatform.fetchCargoVendor { + src = final.fetchFromGitHub { + owner = "jtroo"; + repo = "kanata"; + rev = "484368f406584255208dfd59359130f3769baf52"; + hash = "sha256-IXnYds2pHLS0dOh2vDSP/0bA/8YmCuprJXAOgI0TDn4="; + }; + name = "kanata-main"; + hash = "sha256-YToSUYf3vKpIym/xokGCZjbreeKZAFBUN1o6cPuuwV8="; + }; + }); + } + ); +} From 23e4352318cb8f8bd06397f86707edeeb54b09fc Mon Sep 17 00:00:00 2001 From: Etienne Robert Date: Wed, 1 Apr 2026 18:44:20 +0200 Subject: [PATCH 02/11] kanata-main: use importCargoLock for cargoDeps --- nix/modules/overlays/kanata-main.nix | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/nix/modules/overlays/kanata-main.nix b/nix/modules/overlays/kanata-main.nix index 2799ebd7..c4cc32a5 100644 --- a/nix/modules/overlays/kanata-main.nix +++ b/nix/modules/overlays/kanata-main.nix @@ -1,7 +1,7 @@ _: { flake.overlays.kanata-main = ( final: prev: { - kanata = prev.kanata.overrideAttrs (_: { + kanata = prev.kanata.overrideAttrs (_: rec { doCheck = false; version = "main"; src = final.fetchFromGitHub { @@ -10,15 +10,8 @@ _: { rev = "484368f406584255208dfd59359130f3769baf52"; hash = "sha256-IXnYds2pHLS0dOh2vDSP/0bA/8YmCuprJXAOgI0TDn4="; }; - cargoDeps = prev.rustPlatform.fetchCargoVendor { - src = final.fetchFromGitHub { - owner = "jtroo"; - repo = "kanata"; - rev = "484368f406584255208dfd59359130f3769baf52"; - hash = "sha256-IXnYds2pHLS0dOh2vDSP/0bA/8YmCuprJXAOgI0TDn4="; - }; - name = "kanata-main"; - hash = "sha256-YToSUYf3vKpIym/xokGCZjbreeKZAFBUN1o6cPuuwV8="; + cargoDeps = prev.rustPlatform.importCargoLock { + lockFile = "${src}/Cargo.lock"; }; }); } From 1eb2e3c69e2c8dd35a48450ac25fb224146aa974 Mon Sep 17 00:00:00 2001 From: Etienne Robert Date: Wed, 1 Apr 2026 18:50:35 +0200 Subject: [PATCH 03/11] leod: add kanata-main overlay to nixpkgs.overlays --- nix/modules/hosts/leod/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nix/modules/hosts/leod/default.nix b/nix/modules/hosts/leod/default.nix index 66f9ddb9..225ded00 100644 --- a/nix/modules/hosts/leod/default.nix +++ b/nix/modules/hosts/leod/default.nix @@ -17,6 +17,7 @@ in specialArgs = { inherit self pronto agenix; }; modules = [ ./configuration.nix + { nixpkgs.overlays = [ self.overlays.kanata-main ]; } nix-index-database.nixosModules.default home-manager.nixosModules.home-manager agenix.nixosModules.default From 0622cef25b97190f85fe400ddd64e365b6d187aa Mon Sep 17 00:00:00 2001 From: Etienne Robert Date: Wed, 1 Apr 2026 18:53:58 +0200 Subject: [PATCH 04/11] kanata-main: flatten overlay function for clarity --- nix/modules/overlays/kanata-main.nix | 32 +++++++++++++--------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/nix/modules/overlays/kanata-main.nix b/nix/modules/overlays/kanata-main.nix index c4cc32a5..7edf1561 100644 --- a/nix/modules/overlays/kanata-main.nix +++ b/nix/modules/overlays/kanata-main.nix @@ -1,19 +1,17 @@ _: { - flake.overlays.kanata-main = ( - final: prev: { - kanata = prev.kanata.overrideAttrs (_: rec { - doCheck = false; - version = "main"; - src = final.fetchFromGitHub { - owner = "jtroo"; - repo = "kanata"; - rev = "484368f406584255208dfd59359130f3769baf52"; - hash = "sha256-IXnYds2pHLS0dOh2vDSP/0bA/8YmCuprJXAOgI0TDn4="; - }; - cargoDeps = prev.rustPlatform.importCargoLock { - lockFile = "${src}/Cargo.lock"; - }; - }); - } - ); + flake.overlays.kanata-main = final: prev: { + kanata = prev.kanata.overrideAttrs (_: rec { + doCheck = false; + version = "main"; + src = final.fetchFromGitHub { + owner = "jtroo"; + repo = "kanata"; + rev = "484368f406584255208dfd59359130f3769baf52"; + hash = "sha256-IXnYds2pHLS0dOh2vDSP/0bA/8YmCuprJXAOgI0TDn4="; + }; + cargoDeps = prev.rustPlatform.importCargoLock { + lockFile = "${src}/Cargo.lock"; + }; + }); + }; } From 007c6b01ee0714f6b01fa48b775e1e4d786bec96 Mon Sep 17 00:00:00 2001 From: Etienne Robert Date: Wed, 1 Apr 2026 19:19:43 +0200 Subject: [PATCH 05/11] kanata: use timeout var for tap-hold bindings --- nix/modules/nixos-base.nix | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/nix/modules/nixos-base.nix b/nix/modules/nixos-base.nix index b3187f36..c0c7836f 100644 --- a/nix/modules/nixos-base.nix +++ b/nix/modules/nixos-base.nix @@ -28,18 +28,22 @@ _: { (left q w e r t a s d f g z x c v b) (right y u i o p h j k l ; n m , . / )) + (defvar + timeout 150 + ) + (deflayer base (tap-hold-press 0 200 esc lctl) - (tap-hold-opposite-hand 150 a lmet) - (tap-hold-opposite-hand 150 s lalt) - (tap-hold-opposite-hand 150 d lctl) - (tap-hold-opposite-hand 150 f lsft) + (tap-hold-opposite-hand $timeout a lmet) + (tap-hold-opposite-hand $timeout s lalt) + (tap-hold-opposite-hand $timeout d lctl) + (tap-hold-opposite-hand $timeout f lsft) - (tap-hold-opposite-hand 150 j rsft) - (tap-hold-opposite-hand 150 k rctl) - (tap-hold-opposite-hand 150 l lalt) - (tap-hold-opposite-hand 150 ; rmet) + (tap-hold-opposite-hand $timeout j rsft) + (tap-hold-opposite-hand $timeout k rctl) + (tap-hold-opposite-hand $timeout l lalt) + (tap-hold-opposite-hand $timeout ; rmet) ) ''; extraDefCfg = "process-unmapped-keys yes"; From eb06f1b0043763258203f2f3954aef68a3db670e Mon Sep 17 00:00:00 2001 From: Etienne Robert Date: Wed, 1 Apr 2026 20:24:20 +0200 Subject: [PATCH 06/11] pi: add kanata-main overlay to nixpkgs.overlays --- nix/modules/hosts/pi/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nix/modules/hosts/pi/default.nix b/nix/modules/hosts/pi/default.nix index f2bd3838..0f31eead 100644 --- a/nix/modules/hosts/pi/default.nix +++ b/nix/modules/hosts/pi/default.nix @@ -5,6 +5,7 @@ system = "aarch64-linux"; modules = [ ./configuration.nix + { nixpkgs.overlays = [ self.overlays.kanata-main ]; } self.nixosModules.nixosBase self.nixosModules.base inputs.agenix.nixosModules.default From f850da7dde8dfb5f3749859cfe8bd79d1a80e963 Mon Sep 17 00:00:00 2001 From: Etienne Robert Date: Wed, 1 Apr 2026 21:02:17 +0200 Subject: [PATCH 07/11] kanata: inline overlay, remove kanata-main overlay file --- nix/flake.nix | 1 - nix/modules/hosts/leod/default.nix | 1 - nix/modules/hosts/pi/default.nix | 1 - nix/modules/hosts/tower/default.nix | 1 - nix/modules/nixos-base.nix | 13 +++++++++++++ nix/modules/overlays/kanata-main.nix | 17 ----------------- 6 files changed, 13 insertions(+), 21 deletions(-) delete mode 100644 nix/modules/overlays/kanata-main.nix diff --git a/nix/flake.nix b/nix/flake.nix index 5e2ec807..eeb82ed2 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -45,7 +45,6 @@ ./modules/hosts/aaron ./modules/hosts/leod ./modules/hosts/pi - ./modules/overlays/kanata-main.nix ./modules/home ./modules/home/linux.nix ./modules/home/common.nix diff --git a/nix/modules/hosts/leod/default.nix b/nix/modules/hosts/leod/default.nix index 225ded00..66f9ddb9 100644 --- a/nix/modules/hosts/leod/default.nix +++ b/nix/modules/hosts/leod/default.nix @@ -17,7 +17,6 @@ in specialArgs = { inherit self pronto agenix; }; modules = [ ./configuration.nix - { nixpkgs.overlays = [ self.overlays.kanata-main ]; } nix-index-database.nixosModules.default home-manager.nixosModules.home-manager agenix.nixosModules.default diff --git a/nix/modules/hosts/pi/default.nix b/nix/modules/hosts/pi/default.nix index 0f31eead..f2bd3838 100644 --- a/nix/modules/hosts/pi/default.nix +++ b/nix/modules/hosts/pi/default.nix @@ -5,7 +5,6 @@ system = "aarch64-linux"; modules = [ ./configuration.nix - { nixpkgs.overlays = [ self.overlays.kanata-main ]; } self.nixosModules.nixosBase self.nixosModules.base inputs.agenix.nixosModules.default diff --git a/nix/modules/hosts/tower/default.nix b/nix/modules/hosts/tower/default.nix index 46f1277a..6c8c8c86 100644 --- a/nix/modules/hosts/tower/default.nix +++ b/nix/modules/hosts/tower/default.nix @@ -17,7 +17,6 @@ in specialArgs = { inherit self pronto agenix; }; modules = [ ./configuration.nix - { nixpkgs.overlays = [ self.overlays.kanata-main ]; } nix-index-database.nixosModules.default home-manager.nixosModules.home-manager agenix.nixosModules.default diff --git a/nix/modules/nixos-base.nix b/nix/modules/nixos-base.nix index c0c7836f..bd88205c 100644 --- a/nix/modules/nixos-base.nix +++ b/nix/modules/nixos-base.nix @@ -20,6 +20,19 @@ _: { services = { kanata = { enable = true; + package = pkgs.kanata.overrideAttrs (_: rec { + doCheck = false; + version = "main"; + src = pkgs.fetchFromGitHub { + owner = "jtroo"; + repo = "kanata"; + rev = "484368f406584255208dfd59359130f3769baf52"; + hash = "sha256-IXnYds2pHLS0dOh2vDSP/0bA/8YmCuprJXAOgI0TDn4="; + }; + cargoDeps = pkgs.rustPlatform.importCargoLock { + lockFile = "${src}/Cargo.lock"; + }; + }); keyboards.default = { config = /* scheme */ '' (defsrc caps a s d f j k l ;) diff --git a/nix/modules/overlays/kanata-main.nix b/nix/modules/overlays/kanata-main.nix deleted file mode 100644 index 7edf1561..00000000 --- a/nix/modules/overlays/kanata-main.nix +++ /dev/null @@ -1,17 +0,0 @@ -_: { - flake.overlays.kanata-main = final: prev: { - kanata = prev.kanata.overrideAttrs (_: rec { - doCheck = false; - version = "main"; - src = final.fetchFromGitHub { - owner = "jtroo"; - repo = "kanata"; - rev = "484368f406584255208dfd59359130f3769baf52"; - hash = "sha256-IXnYds2pHLS0dOh2vDSP/0bA/8YmCuprJXAOgI0TDn4="; - }; - cargoDeps = prev.rustPlatform.importCargoLock { - lockFile = "${src}/Cargo.lock"; - }; - }); - }; -} From 98a8b4dd7849ffd8566dc9517b90d391e2f20367 Mon Sep 17 00:00:00 2001 From: Etienne Robert Date: Thu, 2 Apr 2026 01:11:47 +0200 Subject: [PATCH 08/11] kanata: expand defhands with number row keys --- nix/modules/nixos-base.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nix/modules/nixos-base.nix b/nix/modules/nixos-base.nix index bd88205c..778b947f 100644 --- a/nix/modules/nixos-base.nix +++ b/nix/modules/nixos-base.nix @@ -38,8 +38,9 @@ _: { (defsrc caps a s d f j k l ;) (defhands - (left q w e r t a s d f g z x c v b) - (right y u i o p h j k l ; n m , . / )) + (left q w e r t a s d f g z x c v b 1 2 3 4 5) + (right y u i o p h j k l ; n m , . / 6 7 8 9 0) + ) (defvar timeout 150 From 1f3c65de5f838ac46c06dea2492b5e7b4bd97933 Mon Sep 17 00:00:00 2001 From: Etienne Robert Date: Thu, 2 Apr 2026 19:46:56 +0200 Subject: [PATCH 09/11] kanata: use -release variant for tap-hold-opposite-hand --- nix/modules/nixos-base.nix | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/nix/modules/nixos-base.nix b/nix/modules/nixos-base.nix index 778b947f..beb5569f 100644 --- a/nix/modules/nixos-base.nix +++ b/nix/modules/nixos-base.nix @@ -49,15 +49,15 @@ _: { (deflayer base (tap-hold-press 0 200 esc lctl) - (tap-hold-opposite-hand $timeout a lmet) - (tap-hold-opposite-hand $timeout s lalt) - (tap-hold-opposite-hand $timeout d lctl) - (tap-hold-opposite-hand $timeout f lsft) - - (tap-hold-opposite-hand $timeout j rsft) - (tap-hold-opposite-hand $timeout k rctl) - (tap-hold-opposite-hand $timeout l lalt) - (tap-hold-opposite-hand $timeout ; rmet) + (tap-hold-opposite-hand-release $timeout a lmet) + (tap-hold-opposite-hand-release $timeout s lalt) + (tap-hold-opposite-hand-release $timeout d lctl) + (tap-hold-opposite-hand-release $timeout f lsft) + + (tap-hold-opposite-hand-release $timeout j rsft) + (tap-hold-opposite-hand-release $timeout k rctl) + (tap-hold-opposite-hand-release $timeout l lalt) + (tap-hold-opposite-hand-release $timeout ; rmet) ) ''; extraDefCfg = "process-unmapped-keys yes"; From 717cd47f37de2a27a183f5bd96537778ff040728 Mon Sep 17 00:00:00 2001 From: Etienne Robert Date: Tue, 7 Apr 2026 21:08:04 +0200 Subject: [PATCH 10/11] kanata: increase tap-hold timeout to 200 --- nix/modules/nixos-base.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/modules/nixos-base.nix b/nix/modules/nixos-base.nix index beb5569f..381b8dd7 100644 --- a/nix/modules/nixos-base.nix +++ b/nix/modules/nixos-base.nix @@ -43,7 +43,7 @@ _: { ) (defvar - timeout 150 + timeout 200 ) (deflayer base From 7a2900da28f9d204ed0d03e800c0fdb47f2a3119 Mon Sep 17 00:00:00 2001 From: Etienne Robert Date: Tue, 7 Apr 2026 21:31:18 +0200 Subject: [PATCH 11/11] nixos-base: add TODO for kanata package attr removal --- nix/modules/nixos-base.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nix/modules/nixos-base.nix b/nix/modules/nixos-base.nix index 381b8dd7..b3e2bbc0 100644 --- a/nix/modules/nixos-base.nix +++ b/nix/modules/nixos-base.nix @@ -20,6 +20,7 @@ _: { services = { kanata = { enable = true; + # TODO: remove attribute once tap-hold-opposite-hand-release is in nixos-unstable package = pkgs.kanata.overrideAttrs (_: rec { doCheck = false; version = "main";