nixvim/config/plugins.nix
2024-12-14 12:51:51 -07:00

102 lines
2.3 KiB
Nix

{pkgs, ...}: {
plugins = {
lualine.enable = true;
undotree.enable = true;
bufferline.enable = true;
web-devicons.enable = true;
cmp-nvim-lsp.enable = true;
cmp-path.enable = true;
};
plugins.gitsigns = {
enable = true;
settings.current_line_blame = true;
};
plugins.lsp = {
enable = true;
servers = {
rust_analyzer = {
enable = true;
installRustc = false;
installCargo = false;
};
nil_ls.enable = true;
};
};
plugins.treesitter = {
enable = true;
settings.highlight.enable = true;
};
plugins.friendly-snippets = {
enable = true;
};
plugins.luasnip = {
enable = true;
settings = {
enable_autosnippets = true;
store_selection_keys = "<Tab>";
};
};
plugins.cmp = {
enable = true;
settings = {
autoEnableSources = true;
snippet = {
expand = ''
function(args)
require('luasnip').lsp_expand(args.body)
end
'';
};
sources = [
{ name = "nvim_lsp"; }
{
name = "path"; # file system paths
keywordLength = 2 ;
}
{
name = "luasnip"; # snippets
keywordLength = 2;
}
];
mapping = {
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
"<C-j>" = "cmp.mapping.select_next_item()";
"<C-k>" = "cmp.mapping.select_prev_item()";
"<C-e>" = "cmp.mapping.abort()";
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
"<C-f>" = "cmp.mapping.scroll_docs(4)";
"<C-Space>" = "cmp.mapping.complete()";
"<CR>" = "cmp.mapping.confirm({ select = true })";
"<S-CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })";
"<C-l>" = ''
cmp.mapping(function()
if luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
end
end, { 'i', 's' })
'';
"<C-h>" = ''
cmp.mapping(function()
if luasnip.locally_jumpable(-1) then
luasnip.jump(-1)
end
end, { 'i', 's' })
'';
};
};
};
colorschemes.catppuccin = {
enable = true;
settings.flavor = "frappe";
};
extraPlugins = ( with pkgs.vimPlugins; [
vim-be-good
]);
}