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

143 lines
3.7 KiB
Nix
Raw Normal View History

self: {
config,
2024-05-08 23:04:16 -04:00
lib,
pkgs,
...
}: let
2024-12-22 12:42:29 -05:00
inherit (self.inputs) nix-develop-nvim-src;
inherit (self.lib.${pkgs.system}) mkVersion;
2025-01-06 14:41:55 -05:00
inherit (lib) attrValues fileContents mkBefore mkIf;
cfg = config.programs.neovim;
2024-05-08 23:04:16 -04:00
in {
imports = [
./bash
./c-lang
./hyprlang
./java
./json
./lua
./python
./rust
2024-12-16 17:44:17 -05:00
(import ./csharp self)
(import ./markdown self)
(import ./nix-lang self)
(import ./web self)
];
2024-05-08 23:04:16 -04:00
config = mkIf cfg.enable {
programs.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
''
2024-12-22 03:12:45 -05:00
-- Init object to keep track of loaded devShells
local devShells = {};
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-11 15:07:24 -04:00
2025-01-06 14:41:55 -05:00
plugins = attrValues {
inherit
(pkgs.vimPlugins)
# lsp plugins
nvim-lspconfig
lsp-status-nvim
# completion plugins
cmp-buffer
cmp-nvim-lsp
cmp-path
cmp-spell
vim-vsnip
;
2024-12-22 12:42:29 -05:00
2025-01-06 14:41:55 -05:00
nix-develop-nvim = pkgs.vimPlugins.nix-develop-nvim.overrideAttrs (o: {
name = "vimplugin-${o.pname}-${mkVersion nix-develop-nvim-src}";
src = nix-develop-nvim-src;
});
2024-05-11 15:07:24 -04:00
2025-01-06 14:41:55 -05:00
nvim-cmp = {
plugin = pkgs.vimPlugins.nvim-cmp;
type = "lua";
config = fileContents ./config/cmp.lua;
};
2025-01-06 14:41:55 -05:00
nvim-autopairs = {
plugin = pkgs.vimPlugins.nvim-autopairs;
type = "lua";
config =
# lua
''
require('nvim-autopairs').setup({});
'';
};
tiny-inline-diagnostic = {
plugin = pkgs.vimPlugins.tiny-inline-diagnostic-nvim;
2025-01-06 14:41:55 -05:00
type = "lua";
config =
# lua
''
-- Disable virtual_text since it's redundant due to tiny-inline-diagnostic.
2025-01-06 14:41:55 -05:00
vim.diagnostic.config({
virtual_text = false,
});
require("tiny-inline-diagnostic").setup({
-- Available options:
-- "modern", "classic", "minimal", "powerline",
-- "ghost", "simple", "nonerdfont", "amongus"
preset = 'modern',
options = {
show_source = true,
use_icons_from_diagnostic = false,
-- Minimum message length before wrapping to a new line
softwrap = 30,
-- Show all diagnostics under the cursor if multiple diagnostics exist on the same line
-- If set to false, only the diagnostics under the cursor will be displayed
multiple_diag_under_cursor = true,
multilines = {
enabled = true,
always_show = true,
},
enable_on_insert = true,
throttle = 0,
},
});
2025-01-06 14:41:55 -05:00
'';
};
};
2024-05-08 23:04:16 -04:00
};
};
# For accurate stack trace
_file = ./default.nix;
}