{ 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; clipboard = { register = "unnamedplus"; providers.wl-copy.enable = 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 = { "fg" = "live_grep"; "ff" = "find_files"; "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 = { "" = "cmp.mapping.confirm({ select = true })"; "" = '' 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' }) ''; }; }; }; }; }; }