From a94e2ae5786f97875e4f142611df8cba34c5d6fe Mon Sep 17 00:00:00 2001 From: jdonszelmann Date: Fri, 2 Aug 2024 13:19:05 +0200 Subject: [PATCH] kitty --- flake.lock | 17 ++++++++++++++++ flake.nix | 11 +++++++--- hosts/kili/home.nix | 15 +++++++++++++- programs/kanata/cfg.kbd | 30 ++++++++++++++++++++++++++++ programs/kanata/default.nix | 30 ++++++++++++++++++++++++++++ programs/kitty/default.nix | 40 +++++++++++++++++++++++++++++++++++++ result | 1 + 7 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 programs/kanata/cfg.kbd create mode 100644 programs/kanata/default.nix create mode 100644 programs/kitty/default.nix create mode 120000 result diff --git a/flake.lock b/flake.lock index 2cebc94..b9792b8 100644 --- a/flake.lock +++ b/flake.lock @@ -217,6 +217,22 @@ "type": "github" } }, + "kitty-search": { + "flake": false, + "locked": { + "lastModified": 1675366825, + "narHash": "sha256-egisza7V5dWplRYHIYt4bEQdqXa4E7UhibyWJAup8as=", + "owner": "trygveaa", + "repo": "kitty-kitten-search", + "rev": "0760138fad617c5e4159403cbfce8421ccdfe571", + "type": "github" + }, + "original": { + "owner": "trygveaa", + "repo": "kitty-kitten-search", + "type": "github" + } + }, "nix-darwin": { "inputs": { "nixpkgs": [ @@ -299,6 +315,7 @@ "inputs": { "flake-utils": "flake-utils", "home-manager": "home-manager", + "kitty-search": "kitty-search", "nixpkgs": "nixpkgs", "nixvim": "nixvim", "t": "t" diff --git a/flake.nix b/flake.nix index c10c6c8..0b1ee37 100644 --- a/flake.nix +++ b/flake.nix @@ -13,9 +13,14 @@ }; t.url = "github:jdonszelmann/t-rs"; + + kitty-search = { + url = "github:trygveaa/kitty-kitten-search"; + flake = false; + }; }; - outputs = { self, home-manager, nixpkgs, flake-utils, nixvim, t }: + outputs = { self, home-manager, nixpkgs, flake-utils, nixvim, t, ... }@inputs: let homeManagerModules = [ nixvim.homeManagerModules.nixvim ]; @@ -58,10 +63,10 @@ homeConfigurations = { kili = mkHomeConfiguration (import ./hosts/kili/home.nix) { - extraSpecialArgs = { }; + extraSpecialArgs = { inherit inputs; }; }; ori = mkHomeConfiguration (import ./hosts/ori/home.nix) { - extraSpecialArgs = { }; + extraSpecialArgs = { inherit inputs; }; }; }; diff --git a/hosts/kili/home.nix b/hosts/kili/home.nix index ac5fff4..a0dcd35 100644 --- a/hosts/kili/home.nix +++ b/hosts/kili/home.nix @@ -1,4 +1,4 @@ -{ ... }: { +{ pkgs, ... }: { home.stateVersion = "24.05"; home.username = "jonathan"; home.homeDirectory = "/home/jonathan"; @@ -6,5 +6,18 @@ imports = [ ../../programs/nvim ../../programs/zsh + ../../programs/kanata + ../../programs/kitty ]; + + # use the system-installed version of kitty on arch + # something graphics related crashes otherwise + programs.kitty.package = pkgs.stdenv.mkDerivation { + name = "kitty"; + src = ./.; + installPhase = '' + mkdir -p $out/bin + echo "#!/usr/bin/env bash\nexec /usr/bin/kitty" > $out/bin/kitty; + ''; + }; } diff --git a/programs/kanata/cfg.kbd b/programs/kanata/cfg.kbd new file mode 100644 index 0000000..fbd998c --- /dev/null +++ b/programs/kanata/cfg.kbd @@ -0,0 +1,30 @@ +(defcfg + process-unmapped-keys 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 +) + +(defalias + esc (tap-hold 200 800 esc caps) + cap (tap-dance 300 (esc C-k esc)) + + qwr (layer-switch qwerty) +) + + diff --git a/programs/kanata/default.nix b/programs/kanata/default.nix new file mode 100644 index 0000000..383e8e5 --- /dev/null +++ b/programs/kanata/default.nix @@ -0,0 +1,30 @@ +{pkgs, config, ...}: { + # 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 + systemd.user.services.kanata ={ + Unit = { + Description = "kanata"; + }; + + Service = { + Restart = "always"; + RestartSec = "3"; + ExecStart = "${pkgs.kanata}/bin/kanata --cfg ${config.home.file.kanata.target}"; + Nice = "-20"; + }; + + Install = { + WantedBy = ["default.target"]; + }; + }; + + + home.file.kanata = { + target = ".config/kanata/kanata.kbd"; + text = builtins.readFile ./cfg.kbd; + }; +} diff --git a/programs/kitty/default.nix b/programs/kitty/default.nix new file mode 100644 index 0000000..ed8fc41 --- /dev/null +++ b/programs/kitty/default.nix @@ -0,0 +1,40 @@ +{pkgs, inputs, ...}: { + programs.kitty = { + enable = true; + font.name = "Jetbrains Mono"; + font.size = 13.0; + font.package = pkgs.jetbrains-mono; + + settings = { + scrollback_lines = 20000; + + repaint_delay = 10; + input_delay = 3; + + enable_audio_bell = false; + update_check_interval = 0; + + initial_window_width = "95c"; + initial_window_height = "30c"; + remember_window_size = "no"; + + draw_minimal_borders = false; + hide_window_decorations = true; + + shell = "${pkgs.tmux}/bin/tmux"; + clipboard_control = "write-clipboard write-primary read-clipboard read-primary"; + + foreground = "#fcfcfc"; + background = "#232627"; + linux_display_server = "auto"; + }; + + keybindings = { + "ctrl+f" = "launch --location=hsplit --allow-remote-control kitty +kitten ${inputs.kitty-search}/search.py @active-kitty-window-id"; + "ctrl+r" = "load_config_file"; + "ctrl+EQUAL" = "change_font_size all +2.0"; + "ctrl+minus" = "change_font_size all -2.0"; + "ctrl+0" = "change_font_size all 0"; + }; + }; +} diff --git a/result b/result new file mode 120000 index 0000000..33cb718 --- /dev/null +++ b/result @@ -0,0 +1 @@ +/nix/store/r6mc0binq1svz4p2d0h6cb4a0nrx5ygw-home-manager \ No newline at end of file