From 4d3a5039e9f10249cde13d2a32f616d73b1695d3 Mon Sep 17 00:00:00 2001 From: Evan Reichard Date: Thu, 16 Jul 2026 19:36:49 -0400 Subject: [PATCH] chore: move to kitty for mba --- .../default.nix | 4 +- .../home/programs/graphical/kitty/default.nix | 87 +++++++++++++++++++ 2 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 modules/home/programs/graphical/kitty/default.nix diff --git a/homes/x86_64-linux/evanreichard@lin-va-mba-personal/default.nix b/homes/x86_64-linux/evanreichard@lin-va-mba-personal/default.nix index 34e18b3..035f609 100755 --- a/homes/x86_64-linux/evanreichard@lin-va-mba-personal/default.nix +++ b/homes/x86_64-linux/evanreichard@lin-va-mba-personal/default.nix @@ -32,9 +32,9 @@ in graphical = { wms.hyprland = { enable = true; - menuMod = "ALT"; + mainMod = "ALT"; }; - ghostty = enabled; + kitty = enabled; strawberry = enabled; gimp = enabled; wireshark = enabled; diff --git a/modules/home/programs/graphical/kitty/default.nix b/modules/home/programs/graphical/kitty/default.nix new file mode 100644 index 0000000..9b599fa --- /dev/null +++ b/modules/home/programs/graphical/kitty/default.nix @@ -0,0 +1,87 @@ +{ pkgs, lib, config, namespace, ... }: +let + inherit (lib) mkIf mkEnableOption; + cfg = config.${namespace}.programs.graphical.kitty; +in +{ + options.${namespace}.programs.graphical.kitty = { + enable = mkEnableOption "Kitty"; + }; + + config = mkIf cfg.enable { + # Enable Bash + ${namespace}.programs.terminal.bash.enable = true; + + programs.kitty = { + enable = true; + + font.name = "MesloLGM Nerd Font Mono"; + + settings = { + shell = "${pkgs.bashInteractive}/bin/bash --login"; + confirm_os_window_close = -1; + + # Splits + zoom require the splits/stack layouts. + enabled_layouts = "splits,stack"; + + # Catppuccin Mocha - https://github.com/catppuccin/ghostty/blob/main/themes/catppuccin-mocha.conf + color0 = "#45475a"; + color1 = "#f38ba8"; + color2 = "#a6e3a1"; + color3 = "#f9e2af"; + color4 = "#89b4fa"; + color5 = "#f5c2e7"; + color6 = "#94e2d5"; + color7 = "#bac2de"; + color8 = "#585b70"; + color9 = "#f38ba8"; + color10 = "#a6e3a1"; + color11 = "#f9e2af"; + color12 = "#89b4fa"; + color13 = "#f5c2e7"; + color14 = "#94e2d5"; + color15 = "#a6adc8"; + background = "#1e1e2e"; + foreground = "#cdd6f4"; + cursor = "#f5e0dc"; + cursor_text_color = "#1e1e2e"; + selection_background = "#353749"; + selection_foreground = "#cdd6f4"; + }; + + # Mirrors the Ghostty bindings; cmd -> ctrl+shift on Linux. + keybindings = { + # Tabs & Splits + "ctrl+shift+t" = "new_tab"; + "ctrl+shift+w" = "close_window"; + # super+d mirrors Ghostty's cmd+d; Hyprland does not grab super+d. + "super+d" = "launch --location=vsplit"; + "super+shift+d" = "launch --location=hsplit"; + "super+shift+enter" = "toggle_layout stack"; + + # Navigation - Splits + "ctrl+shift+left" = "neighboring_window left"; + "ctrl+shift+right" = "neighboring_window right"; + "ctrl+shift+up" = "neighboring_window up"; + "ctrl+shift+down" = "neighboring_window down"; + "ctrl+shift+]" = "next_window"; + "ctrl+shift+[" = "previous_window"; + + # Navigation - Tabs + "ctrl+shift+1" = "goto_tab 1"; + "ctrl+shift+2" = "goto_tab 2"; + "ctrl+shift+3" = "goto_tab 3"; + "ctrl+shift+4" = "goto_tab 4"; + "ctrl+shift+5" = "goto_tab 5"; + "ctrl+shift+6" = "goto_tab 6"; + "ctrl+shift+7" = "goto_tab 7"; + "ctrl+shift+8" = "goto_tab 8"; + "ctrl+shift+9" = "goto_tab 9"; + + # Clipboard - copy passes ctrl+c through when there is no selection. + "ctrl+shift+c" = "copy_or_interrupt"; + "ctrl+shift+v" = "paste_from_clipboard"; + }; + }; + }; +}