{ pkgs, lib, ... }: { programs.nixvim = { extraPackages = with pkgs; [ nixfmt-rfc-style ]; plugins = { luasnip = { enable = true; }; lsp-status = { enable = true; }; schemastore = { enable = true; json.enable = true; yaml.enable = true; }; lsp = { enable = true; capabilities = # lua ''capabilities.textDocument.completion.completionItem.snippetSupport = true''; inlayHints = true; servers = { basedpyright = { enable = true; # Python settings = { pyright.disableOrganizeImports = true; }; }; ruff.enable = true; # Python omnisharp = { enable = true; # C# package = pkgs.omnisharp-roslyn; cmd = [ "${lib.getExe pkgs.omnisharp-roslyn}" ]; }; nil_ls = { enable = true; # Nix settings.formatting.command = [ "${lib.getExe pkgs.nixfmt-rfc-style}" ]; }; luau_lsp = { enable = true; package = pkgs.callPackage ../../../packages/luau-lsp.nix { inherit pkgs; }; }; lua_ls.enable = true; html.enable = true; jsonls.enable = true; yamlls.enable = true; taplo.enable = true; # TOML cssls.enable = true; tailwindcss.enable = true; dockerls.enable = true; docker_compose_language_service.enable = true; bashls.enable = true; ts_ls.enable = true; denols.enable = true; # JavaScript / TypeScript (Deno) eslint.enable = true; # JavaScript / TypeScript slint_lsp.enable = true; typos_lsp.enable = true; }; preConfig = # 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 basedpyright client.server_capabilities.hoverProvider = false end end, desc = 'LSP: Disable hover capability from Ruff', }) ''; }; trouble = { enable = true; settings = { auto_refresh = true; }; }; }; extraPlugins = with pkgs.vimPlugins; [ vim-csharp # (pkgs.vimUtils.buildVimPlugin { # # https://github.com/OrangeT/vim-csharp # name = "vim-csharp"; # src = pkgs.fetchFromGitHub { # owner = "OrangeT"; # repo = "vim-csharp"; # rev = "b5982fc69bba7d507638a308d6875b031054280d"; # sha256 = ""; # }; # }) ]; 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; }; } ]; }; }