dotfiles/home/common/kakoune.nix

68 lines
2.1 KiB
Nix
Raw Normal View History

2023-06-29 07:45:34 +07:00
{ pkgs, lib, ... }:
2023-01-24 02:24:40 +07:00
let
wrapKakoune = { extraPackages ? [] , withPython3 ? true, extraPython3Packages ? (_: []) }:
pkgs.symlinkJoin {
postBuild = ''
rm $out/bin/kak
2023-06-29 07:45:34 +07:00
makeWrapper ${lib.escapeShellArgs
[ "${pkgs.kakoune-unwrapped}/bin/kak" "${placeholder "out"}/bin/kak"
"--suffix" "PATH" ":" (lib.makeBinPath (extraPackages ++ [ (pkgs.python3.withPackages extraPython3Packages) ])) ]}
2023-01-24 02:24:40 +07:00
'';
buildInputs = [ pkgs.makeWrapper ]; preferLocalBuild = true;
name = "kakoune${pkgs.kakoune-unwrapped.version}"; paths = [ pkgs.kakoune-unwrapped ];
2023-06-29 07:45:34 +07:00
passthru.unwrapped = pkgs.kakoune-unwrapped; inherit (pkgs.kakoune-unwrapped) meta version;
2023-01-24 02:24:40 +07:00
};
in {
programs.kakoune = {
enable = true;
package = wrapKakoune {
extraPackages = with pkgs; [
rust-analyzer
nodePackages.bash-language-server shellcheck
nodePackages.typescript-language-server
clang-tools_latest
2023-01-24 02:24:40 +07:00
nodePackages.vscode-langservers-extracted
nil
marksman
taplo
];
extraPython3Packages = (pypkgs: with pypkgs; [ python-lsp-server ]);
};
config = {
# colorScheme
ui.changeColors = false;
};
extraConfig = ''
eval %sh{kak-lsp --kakoune -s $kak_session}
lsp-enable
hook global BufOpenFile .* autoconfigtab
hook global BufNewFile .* autoconfigtab
2023-01-24 02:24:40 +07:00
'';
plugins = with pkgs.kakounePlugins; [ kak-lsp smarttab-kak tabs-kak ];
2023-01-24 02:24:40 +07:00
};
2023-01-25 01:33:07 +07:00
xdg.configFile."kak-lsp/kak-lsp.toml".text = ''
2023-01-24 02:24:40 +07:00
# bash, clangd, json, html, css, python work out of the box
[language.rust]
filetypes = ["rust"]
roots = ["rust-toolchain.toml", "rust-toolchain", "Cargo.toml"]
command = "rust-analyzer"
[language.typescript]
filetypes = ["typescript"]
roots = ["package.json"]
command = "typescript-language-server"
args = ["--stdio"]
[language.nix]
filetypes = ["nix"]
roots = ["flake.nix"]
command = "nil"
[language.markdown]
filetypes = ["markdown"]
roots = []
command = "marksman"
[language.toml]
filetypes = ["toml"]
roots = []
command = "taplo"
'';
}