101 lines
2.5 KiB
Nix
101 lines
2.5 KiB
Nix
{ pkgs, kak }:
|
|
with pkgs; let
|
|
kakoune-mirror = kakouneUtils.buildKakounePluginFrom2Nix {
|
|
pname = "kakoune-mirror";
|
|
version = "latest";
|
|
src = fetchFromGitHub {
|
|
owner = "Delapouite";
|
|
repo = "kakoune-mirror";
|
|
rev = "5710635f440bcca914d55ff2ec1bfcba9efe0f15";
|
|
sha256 = "sha256-uslx4zZhvjUylrPWvTOugsKYKKpF0EEz1drc1Ckrpjk=";
|
|
};
|
|
meta.homepage = "https://github.com/Delapouite/kakoune-mirror";
|
|
};
|
|
|
|
ad-hoc-org-mode = kakouneUtils.buildKakounePluginFrom2Nix {
|
|
pname = "ad-hoc-org-mode";
|
|
version = "latest";
|
|
src = fetchFromGitHub {
|
|
owner = "loovjo";
|
|
repo = "ad-hoc-org-mode";
|
|
rev = "e32a5d18cbe9eec244695f9e39277c90d2960147";
|
|
sha256 = "sha256-BhyrOVJxbnB0NI3BBLwNTuPc3WgeuJKjuL2CPLqX8jA=";
|
|
};
|
|
meta.homepage = "https://github.com/loovjo/ad-hoc-org-mode";
|
|
};
|
|
|
|
# NOTE: kak-lsp must be in packages
|
|
kakoune-lsp = kakouneUtils.buildKakounePluginFrom2Nix {
|
|
pname = "kak-lsp";
|
|
version = "latest";
|
|
src = fetchFromGitHub {
|
|
owner = "kak-lsp";
|
|
repo = "kak-lsp";
|
|
rev = "v14.2.0";
|
|
sha256 = "sha256-U4eqIzvYzUfwprVpPHV/OFPKiBXK4/5z2p8kknX2iME=";
|
|
};
|
|
meta.homepage = "https://github.com/kak-lsp/kak-lsp/";
|
|
};
|
|
|
|
kak-lsp-config-file = writeText "kak-lsp.toml" ''
|
|
snippet_support = true
|
|
verbosity = 2
|
|
|
|
[language.haskell]
|
|
filetypes = ["haskell"]
|
|
roots = ["Setup.hs", "stack.yaml", "*.cabal"]
|
|
command = "haskell-language-server-wrapper"
|
|
|
|
[language.python]
|
|
filetypes = ["python"]
|
|
roots = ["requirements.txt", "setup.py", ".git", ".hg"]
|
|
command = "pylsp"
|
|
offset_encoding = "utf-8"
|
|
|
|
[language.rust]
|
|
filetypes = ["rust"]
|
|
roots = ["Cargo.toml"]
|
|
command = "rust-analyzer"
|
|
|
|
[language.c]
|
|
filetypes = ["c"]
|
|
roots = ["compile_commands.json"]
|
|
command = "clangd"
|
|
'';
|
|
|
|
kak-lsp-config-line = "set global lsp_cmd \"kak-lsp -s %val{session} --config ${kak-lsp-config-file} --log /tmp/kak-lsp.log\"";
|
|
in
|
|
{
|
|
enable = true;
|
|
package = kak;
|
|
defaultEditor = true;
|
|
plugins = with kakounePlugins; [
|
|
kakoune-buffers
|
|
kakoune-extra-filetypes
|
|
|
|
kakoune-mirror
|
|
ad-hoc-org-mode
|
|
|
|
kakoune-lsp
|
|
];
|
|
|
|
config = {
|
|
colorScheme = "gruvbox-dark";
|
|
|
|
indentWidth = 4;
|
|
|
|
ui.assistant = "cat"; # mjau
|
|
ui.statusLine = "top";
|
|
ui.useBuiltinKeyParser = true;
|
|
ui.enableMouse = true;
|
|
|
|
wrapLines = {
|
|
enable = true;
|
|
indent = true;
|
|
word = true;
|
|
};
|
|
};
|
|
|
|
extraConfig = kak-lsp-config-line + "\n" + builtins.readFile ./dotfiles/kakrc ;
|
|
}
|