{ user, home }: { config, lib, pkgs, ... }: let hmConfig = config.home-manager.users.${user}; in { environment.persistence."/persist/cache"."${home}/.cache/kitty" = { }; home-manager.users.${user} = { programs.kitty = { enable = true; font = { name = builtins.head hmConfig.theme.font.monospace.names; package = builtins.head hmConfig.theme.font.monospace.packages; inherit (hmConfig.theme.font) size; }; settings = { confirm_os_window_close = 0; enable_audio_bell = false; }; keybindings = { } // builtins.listToAttrs ( builtins.map (k: { name = k; value = "no_op"; }) [ # Window management "kitty_mod+enter" "kitty_mod+n" "kitty_mod+w" "kitty_mod+]" "kitty_mod+[" "kitty_mod+f" "kitty_mod+b" "kitty_mod+`" "kitty_mod+r" "kitty_mod+1" "kitty_mod+2" "kitty_mod+3" "kitty_mod+4" "kitty_mod+5" "kitty_mod+6" "kitty_mod+7" "kitty_mod+8" "kitty_mod+9" "kitty_mod+0" "kitty_mod+f7" "kitty_mod+f8" # Tab management "kitty_mod+right" "shift+cmd+]" "ctrl+tab" "kitty_mod+left" "shift+cmd+[" "ctrl+shift+tab" "kitty_mod+t" "kitty_mod+q" "kitty_mod+." "kitty_mod+," "kitty_mod+alt+t" # Layout management "kitty_mod+l" ] ); extraConfig = '' include theme.conf ''; }; theme = { template.".config/kitty/theme.conf".source = ./theme.conf; reloadExtraConfig = "${ lib.meta.getExe ( pkgs.writeShellApplication { name = "reload-kitty"; runtimeInputs = with pkgs; [ procps ]; text = "exec pkill kitty -SIGUSR1"; } ) } &"; }; }; }