nixos-configs/homeManagerModules/neovim/langs/default.nix

101 lines
2.3 KiB
Nix
Raw Normal View History

self: {
2024-05-08 23:04:16 -04:00
config,
lib,
pkgs,
...
}: let
inherit (lib) fileContents mkBefore mkIf;
cfg = config.programs.neovim;
2024-05-08 23:04:16 -04:00
in {
imports = [
./bash.nix
./clang.nix
./hyprlang.nix
./java.nix
2024-05-16 22:49:46 -04:00
./json.nix
./lua.nix
./python.nix
2024-05-18 19:43:43 -04:00
./rust.nix
2024-12-16 17:44:17 -05:00
2024-12-18 16:44:21 -05:00
(import ./csharp.nix self)
(import ./markdown.nix self)
(import ./nix.nix self)
(import ./web.nix self)
];
2024-05-08 23:04:16 -04:00
2024-12-21 19:07:46 -05:00
# FIXME: try making LSPs and stuff only available through devShells
config.programs = mkIf cfg.enableIde {
2024-05-08 23:04:16 -04:00
neovim = {
2024-05-10 14:18:50 -04:00
extraLuaConfig =
mkBefore
2024-06-09 22:49:30 -04:00
# lua
2024-05-08 23:04:16 -04:00
''
-- Add formatting cmd
vim.api.nvim_create_user_command(
'Format',
function()
vim.lsp.buf.format({ async = true });
end,
{}
);
2024-05-08 23:56:56 -04:00
-- LSP-Status setup
local lsp_status = require('lsp-status');
lsp_status.register_progress();
2024-05-08 23:04:16 -04:00
-- Remove LSP highlighting to use Treesitter
vim.api.nvim_create_autocmd('LspAttach', {
2024-05-08 23:04:16 -04:00
callback = function(args)
2024-05-08 23:56:56 -04:00
local client = vim.lsp.get_client_by_id(args.data.client_id);
client.server_capabilities.semanticTokensProvider = nil;
lsp_status.on_attach(client);
2024-05-08 23:04:16 -04:00
end,
});
2024-05-09 09:12:01 -04:00
-- Disable virtual_text since it's redundant due to lsp_lines.
vim.diagnostic.config({
virtual_text = false,
});
require('lsp_lines').setup();
2024-05-08 23:04:16 -04:00
'';
2024-05-11 15:07:24 -04:00
plugins =
(builtins.attrValues {
inherit
(pkgs.vimPlugins)
nvim-lspconfig
lsp-status-nvim
lsp_lines-nvim
cmp-buffer
cmp-nvim-lsp
cmp-path
cmp-spell
vim-vsnip
;
})
++ [
{
plugin = pkgs.vimPlugins.nvim-cmp;
type = "lua";
config = fileContents ../plugins/cmp.lua;
}
2024-05-11 15:07:24 -04:00
{
plugin = pkgs.vimPlugins.nvim-autopairs;
type = "lua";
config =
# lua
''
require('nvim-autopairs').setup({});
'';
}
];
2024-05-08 23:04:16 -04:00
};
};
# For accurate stack trace
_file = ./default.nix;
}