2024-11-22 02:48:41 -05:00
|
|
|
self: {
|
2024-05-08 23:04:16 -04:00
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
pkgs,
|
|
|
|
...
|
|
|
|
}: let
|
2024-08-31 19:16:06 -04:00
|
|
|
inherit (lib) fileContents mkBefore mkIf;
|
2024-11-22 02:48:41 -05:00
|
|
|
|
|
|
|
cfg = config.programs.neovim;
|
2024-05-08 23:04:16 -04:00
|
|
|
in {
|
2024-05-07 22:49:00 -04:00
|
|
|
imports = [
|
|
|
|
./bash.nix
|
|
|
|
./clang.nix
|
2024-10-05 15:17:16 -04:00
|
|
|
./csharp.nix
|
2024-05-08 20:26:57 -04:00
|
|
|
./hyprlang.nix
|
2024-05-07 22:49:00 -04:00
|
|
|
./java.nix
|
2024-05-16 22:49:46 -04:00
|
|
|
./json.nix
|
2024-05-07 22:49:00 -04:00
|
|
|
./lua.nix
|
|
|
|
./python.nix
|
2024-05-18 19:43:43 -04:00
|
|
|
./rust.nix
|
2024-11-22 02:48:41 -05:00
|
|
|
(import ./markdown.nix self)
|
|
|
|
(import ./nix.nix self)
|
|
|
|
(import ./web.nix self)
|
2024-05-07 22:49:00 -04:00
|
|
|
];
|
2024-05-08 23:04:16 -04:00
|
|
|
|
2024-11-22 02:48:41 -05:00
|
|
|
config.programs = mkIf cfg.enableIde {
|
2024-05-08 23:04:16 -04:00
|
|
|
neovim = {
|
2024-05-10 14:18:50 -04:00
|
|
|
extraLuaConfig =
|
2024-08-31 19:16:06 -04:00
|
|
|
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
|
2024-07-28 02:54:34 -04:00
|
|
|
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
|
|
|
|
2024-07-28 02:54:34 -04:00
|
|
|
plugins =
|
2024-08-31 19:16:06 -04:00
|
|
|
(builtins.attrValues {
|
|
|
|
inherit
|
|
|
|
(pkgs.vimPlugins)
|
|
|
|
nvim-lspconfig
|
|
|
|
lsp-status-nvim
|
|
|
|
lsp_lines-nvim
|
|
|
|
cmp-buffer
|
|
|
|
cmp-nvim-lsp
|
|
|
|
cmp-path
|
|
|
|
cmp-spell
|
|
|
|
vim-vsnip
|
|
|
|
;
|
|
|
|
})
|
2024-07-28 02:54:34 -04:00
|
|
|
++ [
|
|
|
|
{
|
2024-08-31 19:16:06 -04:00
|
|
|
plugin = pkgs.vimPlugins.nvim-cmp;
|
2024-07-28 02:54:34 -04:00
|
|
|
type = "lua";
|
|
|
|
config = fileContents ../plugins/cmp.lua;
|
|
|
|
}
|
2024-05-11 15:07:24 -04:00
|
|
|
|
2024-07-28 02:54:34 -04:00
|
|
|
{
|
2024-08-31 19:16:06 -04:00
|
|
|
plugin = pkgs.vimPlugins.nvim-autopairs;
|
2024-07-28 02:54:34 -04:00
|
|
|
type = "lua";
|
|
|
|
config =
|
|
|
|
# lua
|
2024-08-31 19:16:06 -04:00
|
|
|
''
|
|
|
|
require('nvim-autopairs').setup({});
|
|
|
|
'';
|
2024-07-28 02:54:34 -04:00
|
|
|
}
|
|
|
|
];
|
2024-05-08 23:04:16 -04:00
|
|
|
};
|
|
|
|
};
|
2024-11-22 02:48:41 -05:00
|
|
|
|
|
|
|
# For accurate stack trace
|
|
|
|
_file = ./default.nix;
|
2024-05-07 22:49:00 -04:00
|
|
|
}
|