Files
nixos-config/modules/home/programs/nixvim/plugins/lsp.nix

82 lines
2.6 KiB
Nix
Executable File

{
programs.nixvim = {
plugins = {
cmp-snippy.enable = true;
cmp = {
enable = true;
settings = {
mapping = {
__raw = ''
cmp.mapping.preset.insert({
['<C-o>'] = cmp.mapping.close_docs(),
['<C-i>'] = cmp.mapping.open_docs(),
['<C-j>'] = cmp.mapping.scroll_docs(-4),
['<C-k>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = function(fallback)
if cmp.visible() then
cmp.confirm()
else
fallback()
end
end, -- Added a comma here
['<Tab>'] = function(fallback)
if cmp.visible() then
cmp.select_next_item()
else
fallback()
end
end, -- Added a comma here
['<S-Tab>'] = function(fallback)
if cmp.visible() then
cmp.select_prev_item()
else
fallback()
end
end -- No comma needed for the last item
})
'';
};
window = {
completion.border = "rounded";
};
};
};
lsp = {
enable = true;
servers = {
bashls.enable = true;
ccls.enable = true;
clangd.enable = true;
cmake.enable = true;
html.enable = true;
jsonls.enable = true;
lua_ls.enable = true;
marksman.enable = true;
nixd = {
enable = true;
settings = {
nixd = {
nixpkgs.expr = "import <nixpkgs> { }";
formatting.command = "nixfmt";
};
options = {
# uses Xenon config because it has every option exposed to it
nixos.expr = "(builtins.getFlake \"github:pagedMov/nixos-config\").nixosConfigurations.xenon.options";
home.expr = "(builtins.getFlake \"github:pagedMov/nixos-config\").homeConfigurations.xenonHome.options";
};
};
};
pyright.enable = true;
sqls.enable = true;
hls = {
enable = true;
installGhc = true;
};
};
};
};
};
}