{ ... }: { imports = [ ./nixvim/base.nix ]; programs.nixvim = { extraConfigLuaPost = '' 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} } vim.cmd [[nnoremap :lua vim.lsp.diagnostic.show_line_diagnostics({ border = "single" })]] vim.cmd [[nnoremap ]g :lua vim.lsp.diagnostic.goto_next({ popup_opts = { border = "single" }})]] vim.cmd [[nnoremap [g :lua vim.lsp.diagnostic.goto_prev({ popup_opts = { border = "single" }})]] vim.diagnostic.config { float={border=_border} } require('lspconfig.ui.windows').default_options = { border = _border } local signs = { Error = "󰅚 ", Warn = "󰀪 ", Hint = "󰌶 ", Info = " " } for type, icon in pairs(signs) do local hl = "DiagnosticSign" .. type vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) end local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...) opts = opts or {} opts.border = opts.border or border return orig_util_open_floating_preview(contents, syntax, opts, ...) end vim.diagnostic.config({ virtual_text = { prefix = '●', } }) LspDiagnosticsFloatingError = {fg=color1,bg=none,style='bold'}; LspDiagnosticsFloatingWarning = {fg=color2,bg=none,style='bold'}; LspDiagnosticsFloatingInformation = {fg=color3,bg=none,style='italic'}; LspDiagnosticsFloatingHint = {fg=color4,bg=none,style='italic'}; ''; plugins = { lsp-lines.enable = false; lsp-lines.currentLine = true; crates-nvim.enable = true; 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; pylsp_mypy.enabled = true; }; }; }; nil_ls.enable = true; html.enable = true; cssls.enable = true; bashls.enable = true; tailwindcss.enable = true; svelte.enable = true; }; onAttach = '' vim.api.nvim_create_autocmd("CursorHold", { buffer = bufnr, callback = function() local opts = { focusable = false, close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, border = 'rounded', source = 'always', prefix = ' ', scope = 'cursor', } vim.diagnostic.open_float(nil, opts) end }) ''; keymaps = { silent = false; 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"; }; }; }; }; }; }; }