clan/modules/moritz/programs/nvim/plugins/lsp.nix

88 lines
2.6 KiB
Nix

{pkgs, ...}: {
home-manager.users.moritz.programs.nixvim = {
extraPlugins = with pkgs.vimPlugins; [
elixir-tools-nvim
];
extraConfigLuaPost = ''
local elixir = require("elixir")
local elixirls = require("elixir.elixirls")
elixir.setup {
nextls = {
enable = true,
cmd = vim.fn.exepath("nextls"),
},
elixirls = {
enable = true,
cmd = vim.fn.exepath("elixir-ls"),
settings = elixirls.settings {
dialyzerEnabled = true,
enableTestLenses = true,
},
on_attach = function(client, bufnr)
vim.keymap.set("n", "<localleader>fp", ":ElixirFromPipe<cr>", { buffer = true, noremap = true })
vim.keymap.set("n", "<localleader>tp", ":ElixirToPipe<cr>", { buffer = true, noremap = true })
vim.keymap.set("v", "<localleader>em", ":ElixirExpandMacro<cr>", { buffer = true, noremap = true })
end,
},
}
'';
plugins.actions-preview.enable = true;
plugins.lsp = {
enable = true;
inlayHints = true;
servers = {
rust_analyzer = {
enable = true;
installRustc = false;
installCargo = false;
settings.files.watcher = "server";
};
lexical.enable = true;
lua_ls.enable = true;
nil_ls.enable = true;
nixd.enable = true;
nixd.extraOptions.settings.nixd = {
nixpkgs = {
expr = "import <nixpkgs> { }";
};
options = {
nixos = {
expr = ''builtins.head (builtins.attrValues ((builtins.getFlake ("git+file://" + toString ./.)).nixosConfigurations).options'';
};
"flake-parts" = {
expr = ''(builtins.getFlake ("git+file://" + toString ./.)).debug.options'';
};
"flake-parts2" = {
expr = ''(builtins.getFlake ("git+file://" + toString ./.)).currentSystem.options'';
};
};
};
tinymist.enable = true;
};
keymaps = {
diagnostic = {
"]j" = "goto_next";
"[k" = "goto_prev";
};
lspBuf = {
K = "hover";
gD = "references";
gd = "definition";
gi = "implementation";
gt = "type_definition";
"<leader>r" = "rename";
};
extra = [
{
key = "<leader>q";
action.__raw = ''require("actions-preview").code_actions'';
options.desc = "Quick/code action";
}
];
};
};
};
}