{ config, pkgs, ... }: {
  home.packages = with pkgs; [
    bat
    fzf
  ];
  xdg.configFile."kak-lsp/kak-lsp.toml".source = "${config.dots}/kak-lsp.toml";
  programs.kakoune = {
    enable = true;
    plugins = [
      pkgs.kakounePlugins.kak-lsp
    ];
    config = {
      colorScheme = "gruvbox";
      tabStop = 4;
      autoInfo = [ "command" "onkey" ];
      scrollOff = {
        lines = 1;
      };
      ui = {
        enableMouse = true;
        assistant = "none";
      };
      showMatching = true;

    };
    extraConfig = ''

      hook global WinSetOption filetype=rust %{
        lsp-enable-window
        lsp-auto-signature-help-enable
        hook window -group semantic-tokens BufReload .* lsp-semantic-tokens
        hook window -group semantic-tokens NormalIdle .* lsp-semantic-tokens
        hook window -group semantic-tokens InsertIdle .* lsp-semantic-tokens
        hook -once -always window WinSetOption filetype=.* %{
          remove-hooks window semantic-tokens
        }
      }
      eval %sh{kak-lsp --kakoune -s $kak_session}
      lsp-enable
   '';
  };

}