{pkgs, ...}: {
plugins = {
lsp = {
enable = true;
inlayHints = true;
servers = {
gopls.enable = true;
html.enable = true;
htmx.enable = true;
nixd.enable = true;
protols = {
enable = true;
package = pkgs.protols;
};
basedpyright.enable = true;
qmlls = {
enable = true;
cmd = ["qmlls" "-E"];
};
rust_analyzer = {
enable = true;
installCargo = false;
installRustc = false;
settings = {
cargo.loadOutDirsFromCheck = true;
check.command = "clippy";
completion.postfix.enable = false;
inlayHints = {
closureCaptureHints.enable = true;
closureReturnTypeHints.enable = "always";
implicitDrops.enable = true;
implicitSizedBoundHints.enable = true;
};
};
};
taplo.enable = true;
tailwindcss = {
enable = true;
filetypes = ["htmldjango" "html" "markdown" "rust" "templ"];
};
templ.enable = true;
yamlls.enable = true;
};
};
lsp-lines.enable = true;
lsp-signature = {
enable = true;
settings = {
doc_lines = 0;
handler_opts.border = "none";
hint_enable = false;
};
};
fidget.enable = true;
};
extraConfigLua = ''
-- disable inline diagnostic messages,
-- but enable virtual lines for lsp-lines
vim.diagnostic.config({ virtual_text = false, virtual_lines = true })
'';
keymaps = [
{
action = "<cmd>lua vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())<CR>";
key = "<leader>ti";
options.desc = "toggle inlay hints";
}
];
}