{ pkgs, lib, ... }: { programs.nixvim = { extraPackages = with pkgs; [ basedpyright ruff nil nixfmt-rfc-style (callPackage ../../../packages/luau-lsp.nix { inherit pkgs; }) dockerfile-language-server-nodejs docker-compose-language-service csharp-ls deno bash-language-server powershell powershell-editor-services vscode-langservers-extracted tailwindcss-language-server typos-lsp ]; plugins = { luasnip = { enable = true; }; lsp-status = { enable = true; }; lsp = { enable = true; postConfig = # lua '' vim.api.nvim_create_autocmd("LspAttach", { group = vim.api.nvim_create_augroup('lsp_attach_disable_ruff_hover', { clear = true }), callback = function(args) local client = vim.lsp.get_client_by_id(args.data.client_id) if client == nil then return end if client.name == 'ruff' then -- Disable hover in favor of Pyright client.server_capabilities.hoverProvider = false end end, desc = 'LSP: Disable hover capability from Ruff', }) local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities.textDocument.completion.completionItem.snippetSupport = true require('lspconfig').basedpyright.setup { settings = { pyright = { disableOrganizeImports = true } } } require('lspconfig').ruff.setup { } require('lspconfig').csharp_ls.setup { } require('lspconfig').nil_ls.setup { cmd = { "${lib.getExe pkgs.nil}" }, settings = { ['nil'] = { formatting = { command = { "${lib.getExe pkgs.nixfmt-rfc-style}" }, }, }, }, } require('lspconfig').luau_lsp.setup { } require('lspconfig').denols.setup { } require('lspconfig').eslint.setup { } require('lspconfig').html.setup { capabilities = capabilities, } require('lspconfig').cssls.setup { capabilities = capabilities, } require('lspconfig').jsonls.setup { capabilities = capabilities, } require('lspconfig').tailwindcss.setup { } require('lspconfig').dockerls.setup { } require('lspconfig').docker_compose_language_service.setup { } require('lspconfig').bashls.setup { } require('lspconfig').powershell_es.setup { bundle_path = "${lib.getExe pkgs.powershell-editor-services}", shell = "${lib.getExe pkgs.powershell}", } require('lspconfig').typos_lsp.setup { } ''; }; trouble = { enable = true; settings = { auto_refresh = true; }; }; }; keymaps = [ { mode = "n"; key = "x"; action = ":Trouble"; options = { desc = "Trouble"; silent = true; }; } { mode = "n"; key = "xx"; action = ":Trouble diagnostics toggle"; options = { desc = "Diagnostics (Trouble)"; silent = true; }; } { mode = "n"; key = "xX"; action = ":Trouble diagnostics toggle filter.buf=0"; options = { desc = "Buffer Diagnostics (Trouble)"; silent = true; }; } { mode = "n"; key = "xs"; action = ":Trouble symbols toggle focus=false"; options = { desc = "Symbols (Trouble)"; silent = true; }; } { mode = "n"; key = "xd"; action = ":Trouble lsp_definitions toggle"; options = { desc = "LSP Definitions / references / ... (Trouble)"; silent = true; }; } { mode = "n"; key = "xl"; action = ":Trouble loclist toggle"; options = { desc = "Location List (Trouble)"; silent = true; }; } { mode = "n"; key = "xq"; action = ":Trouble qflist toggle"; options = { desc = "Quickfix (Trouble)"; silent = true; }; } ]; }; }