{ pkgs, ... }: { programs.nixvim = { extraPackages = with pkgs; [ basedpyright ruff nil nixfmt-rfc-style (callPackage ../../../packages/luau-lsp.nix { inherit pkgs; }) ]; plugins = { lsp = { enable = true; postConfig = '' 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', }) require('lspconfig').basedpyright.setup { settings = { pyright = { disableOrganizeImports = true } } } require('lspconfig').ruff.setup { } require('lspconfig').nil_ls.setup { cmd = { "${pkgs.nil}/bin/nil" }, settings = { ['nil'] = { formatting = { command = { "${pkgs.nixfmt-rfc-style}/bin/nixfmt" }, }, }, }, } --require('luau-lsp').setup { } ''; }; trouble = { enable = true; settings = { auto_refresh = true; }; }; }; extraPlugins = [ (pkgs.vimUtils.buildVimPlugin { # https://github.com/lopi-py/luau-lsp.nvim name = "luau-lsp.nvim"; src = pkgs.fetchFromGitHub { owner = "lopi-py"; repo = "luau-lsp.nvim"; rev = "v1.6.0"; sha256 = "sha256-8+ax8n1fA4jgJugvWtRXkad4YM7TmAAsAopzalmGu/4="; }; }) ]; 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; }; } ]; }; }