{pkgs, ...}: { imports = [ ./cmp.nix ]; programs.nixvim.plugins = { crates.enable = true; # Does not work dressing.enable = true; }; programs.nixvim.extraConfigVim = '' augroup unrecognized_filetypes autocmd! autocmd BufRead,BufNewFile *.vert set filetype=glsl autocmd BufRead,BufNewFile *.tesc set filetype=glsl autocmd BufRead,BufNewFile *.tese set filetype=glsl autocmd BufRead,BufNewFile *.frag set filetype=glsl autocmd BufRead,BufNewFile *.geom set filetype=glsl autocmd BufRead,BufNewFile *.comp set filetype=glsl autocmd BufRead,BufNewFile *.qml set filetype=qml autocmd BufRead,BufNewFile *.slint set filetype=slint autocmd BufRead,BufNewFile *.typ set filetype=typst augroup END ''; programs.nixvim.plugins.lsp = { enable = true; capabilities = '' capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) capabilities.textDocument.completion.completionItem.snippetSupport = true''; preConfig = '' local border = { { "╭", "FloatBorder" }, { "─", "FloatBorder" }, { "╮", "FloatBorder" }, { "│", "FloatBorder" }, { "╯", "FloatBorder" }, { "─", "FloatBorder" }, { "╰", "FloatBorder" }, { "│", "FloatBorder" } } 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 }) ''; inlayHints = true; servers = { clangd = { enable = true; settings.arguments = [ "--clang-tidy" "--background-index" "--completion-style=detailed" "--cross-file-rename" "--header-insertion=iwyu" "--all-scopes-completion" ]; }; # jdtls.enable = true; emmet_ls.enable = true; ts_ls.enable = true; cssls.enable = true; # glsl_analyzer.enable = true; glslls.enable = true; pyright.enable = true; nixd.enable = true; lua_ls = { enable = true; settings = { telemetry.enable = false; workspace.checkThirdParty = false; }; }; svelte = { enable = true; settings.enable_ts_plugin = true; }; slint_lsp.enable = true; zls.enable = true; rust_analyzer = { enable = true; installRustc = false; installCargo = false; settings = { imports = { granularity.group = "crate"; prefix = "self"; preferNoStd = true; }; check = { command = "clippy"; allTargets = true; }; completion = { fullFunctionSignatures.enable = false; autoimport.enable = true; }; cargo = { allTargets = true; features = "all"; }; procMacro.enable = true; }; }; }; keymaps = { silent = true; extra = [ { mode = "n"; key = "rn"; action.__raw = "vim.lsp.buf.rename"; } { mode = "n"; key = "ca"; action.__raw = "vim.lsp.buf.code_action"; } { mode = "n"; key = "di"; action.__raw = "vim.diagnostic.open_float"; } { mode = "n"; key = "dv"; action.__raw = "require('telescope.builtin').diagnostics"; } { mode = "n"; key = "gd"; action.__raw = "vim.lsp.buf.definition"; } { mode = "n"; key = "gr"; action.__raw = "require('telescope.builtin').lsp_references"; } { mode = "n"; key = "gI"; action.__raw = "vim.lsp.buf.implementation"; } { mode = "n"; key = "D"; action.__raw = "vim.lsp.buf.type_definition"; } { mode = "n"; key = "ds"; action.__raw = "require('telescope.builtin').lsp_document_symbols"; } { mode = "n"; key = "ws"; action.__raw = "require('telescope.builtin').lsp_dynamic_workspace_symbols"; } { mode = "n"; key = "K"; action.__raw = "vim.lsp.buf.hover"; } { mode = "n"; key = "k"; action.__raw = "vim.lsp.buf.signature_help"; } { mode = "n"; key = "gD"; action.__raw = "vim.lsp.buf.declaration"; } { mode = "n"; key = "wa"; action.__raw = "vim.lsp.buf.add_workspace_folder"; } { mode = "n"; key = "wr"; action.__raw = "vim.lsp.buf.remove_workspace_folder"; } { mode = "n"; key = "wl"; action.__raw = "function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end"; } ]; }; }; }