{ programs.nixvim.plugins = { lsp-format = { enable = true; }; lsp = { enable = true; inlayHints = true; servers = { html = { enable = true; }; lua_ls = { enable = true; }; # nil-ls = { # enable = true; # }; nixd = { enable = true; extraOptions = { nixos = { expr = "(builtins.getFlake \"/etc/nixos\").nixosConfigurations.aurelionite.options"; }; home_manager = { expr = "(builtins.getFlake \"/etc/nixos\").homeConfigurations.aurelionite.options"; }; }; }; marksman = { enable = true; }; pyright = { enable = true; }; gopls = { enable = true; }; terraformls = { enable = true; }; yamlls = { enable = true; }; }; keymaps = { silent = true; lspBuf = { gd = { action = "definition"; desc = "Goto Definition"; }; gr = { action = "references"; desc = "Goto References"; }; gD = { action = "declaration"; desc = "Goto Declaration"; }; gI = { action = "implementation"; desc = "Goto Implementation"; }; gT = { action = "type_definition"; desc = "Type Definition"; }; # Use LSP saga keybinding instead # K = { # action = "hover"; # desc = "Hover"; # }; # "cw" = { # action = "workspace_symbol"; # desc = "Workspace Symbol"; # }; "cr" = { action = "rename"; desc = "Rename"; }; }; # diagnostic = { # "cd" = { # action = "open_float"; # desc = "Line Diagnostics"; # }; # "[d" = { # action = "goto_next"; # desc = "Next Diagnostic"; # }; # "]d" = { # action = "goto_prev"; # desc = "Previous Diagnostic"; # }; # }; }; }; }; extraConfigLua = '' local _border = "rounded" vim.lsp.handlers["textDocument/hover"] = vim.lsp.with( vim.lsp.handlers.hover, { border = _border } ) vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( vim.lsp.handlers.signature_help, { border = _border } ) vim.diagnostic.config{ float={border=_border} }; require('lspconfig.ui.windows').default_options = { border = _border } ''; }