nvim-config/config/default.nix
2024-03-18 10:22:02 +01:00

140 lines
3 KiB
Nix

{ config, lib, pkgs, ... }:
{
config = {
colorschemes.gruvbox = {
enable = true;
settings = {
transparent_mode = true;
italics = {
strings = false;
emphasis = true;
comments = true;
operators = true;
folds = true;
};
underline = true;
undercurl = true;
bold = true;
contrast = "hard";
terminal_colors = true;
};
};
highlight = {
Normal.bg = "NONE";
Normal.ctermbg = "NONE";
};
vimAlias = true;
viAlias = true;
options = {
number = true;
relativenumber = true;
shiftwidth = 4;
softtabstop = 4;
tabstop = 4;
expandtab = true;
smartindent = true;
};
globals = {
mapleader = ",";
};
extraPlugins = [ pkgs.vimPlugins.vim-airline-themes ];
plugins = {
nvim-autopairs.enable = true;
undotree.enable = true;
which-key.enable = true;
fugitive.enable = true;
luasnip.enable = true;
surround.enable = true;
gitsigns.enable = true;
treesitter = {
enable = true;
indent = true;
folding = false;
};
telescope = {
enable = true;
extensions = {
frecency.enable = true;
};
keymaps = {
"<leader>fg" = "live_grep";
"<leader>ff" = "find_files";
"<leader>fb" = "buffers";
};
};
airline = {
enable = true;
settings = {
powerline_fonts = true;
theme = "base16_gruvbox_dark_hard";
};
};
lsp = {
enable = true;
servers = {
tsserver.enable = true;
jsonls.enable = true;
html.enable = true;
eslint.enable = true;
dockerls.enable = true;
pyright.enable = true;
lua-ls = {
enable = true;
settings.telemetry.enable = false;
};
rust-analyzer = {
enable = true;
installCargo = true;
installRustc = true;
};
};
};
cmp = {
enable = true;
autoEnableSources = true;
settings = {
sources = [
{name = "nvim_lsp";}
{name = "path";}
{name = "buffer";}
{name = "luasnip";}
];
mapping = {
"<CR>" = "cmp.mapping.confirm({ select = true })";
"<Tab>" = ''
cmp.mapping(
function(fallback)
local luasnip = require('luasnip')
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expandable() then
luasnip.expand()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 'c' })
'';
};
};
};
};
};
}