{ config, pkgs, ... }: { programs.kakoune = { enable = true; colorSchemePackage = pkgs.kakounePlugins.kakoune-catppuccin; config = { colorScheme = "catppuccin_mocha"; hooks = [ { commands = "set window indentwidth 2"; group = "indentwidth"; name = "WinSetOption"; option = "filetype=(nix)"; } { commands = "lsp-enable-window"; name = "WinSetOption"; option = "filetype=(javascript|kotlin|qml|typescript|zig)"; } { commands = '' set-option buffer lsp_servers %{ [kotlin-language-server] root_globs = ["build.gradle.kts"] } ''; name = "BufSetOption"; option = "filetype=kotlin"; } { commands = '' set-option buffer lsp_servers %{ [qmlls] root_globs = ["shell.qml"] } ''; name = "BufSetOption"; option = "filetype=qml"; } ]; keyMappings = [ { docstring = "Opens a new editor window"; effect = ":new"; key = ""; mode = "normal"; } ]; numberLines = { enable = true; highlightCursor = true; }; ui = { assistant = "cat"; setTitle = true; }; }; defaultEditor = true; extraConfig = builtins.readFile ./kakrc; plugins = with pkgs.kakounePlugins; [ auto-pairs-kak kakoune-extra-filetypes kakoune-lsp ]; }; xdg.configFile."kak/qml.kak".source = ./qml.kak; }