{ ... }: { imports = [ ./nixvim-base.nix ]; programs.nixvim = { plugins = { lsp = { enable = true; servers = { rust-analyzer = { enable = true; installCargo = true; installRustc = true; }; pylsp = { enable = true; autostart = true; installLanguageServer = true; settings = { plugins = { black = { enabled = true; preview = true; }; jedi_completion = { enabled = true; fuzzy = true; }; pylint.enabled = true; }; }; }; nil_ls.enable = true; html.enable = true; cssls.enable = true; bashls.enable = true; }; keymaps = { silent = true; diagnostic = { "lk" = { action = "goto_prev"; desc = "Go to prev"; }; "lj" = { action = "goto_next"; desc = "Go to next"; }; }; lspBuf = { K = { action = "hover"; desc = "Hover"; }; "lr" = { action = "references"; desc = "LSP [r]eferences"; }; "ld" = { action = "definition"; desc = "LSP [d]efinitions"; }; "li" = { action = "implementation"; desc = "LSP [i]implementations"; }; "lt" = { action = "type_definition"; desc = "LSP [t]ype definitions"; }; "la" = { action = "code_action"; desc = "LSP Code [A]ctions"; }; }; }; }; }; }; }