This commit is contained in:
2025-02-06 17:45:39 +02:00
commit a3f3abb460
84 changed files with 5567 additions and 0 deletions

View File

@ -0,0 +1,22 @@
{
lib,
config,
...
}: {
imports = [
./treesitter-nvim.nix
./nvim-jdtls.nix
./nvim-lint.nix
./rainbow-delimeters.nix
];
options = {
languages.enable = lib.mkEnableOption "Enable languages module";
};
config = lib.mkIf config.languages.enable {
treesitter-nvim.enable = lib.mkDefault true;
nvim-jdtls.enable = lib.mkDefault false;
nvim-lint.enable = lib.mkDefault true;
rainbow-delimeters.enable = lib.mkDefault true;
};
}

View File

@ -0,0 +1,90 @@
{
lib,
config,
...
}: let
javaTestPath = "/nix/store/j3nvmhvj2pmnykw5pbm51dn0bz4cv6j3-vscode-extension-vscjava-vscode-java-test-0.38.2023032402/share/vscode/extensions/vscjava.vscode-java-test/server/com.microsoft.java.test.plugin-0.38.2.jar
";
in {
options = {
nvim-jdtls.enable = lib.mkEnableOption "Enable nvim-jdtls module";
};
config = lib.mkIf config.nvim-jdtls.enable {
plugins.nvim-jdtls = {
enable = true;
cmd = [
"/nix/store/20h2hjjm94gbskqhbwikbgxbblv1xpf2-jdt-language-server-1.31.0/bin/jdtls"
];
# configuration = "/path/to/configuration";
data = "~/.cache/jdtls/workspace";
settings = {
java = {
signatureHelp = true;
completion = true;
};
};
initOptions = {
bundles = [
"/nix/store/b9ib40q36wxjl4xs5lng263lflz1fsi7-vscode-extension-vscjava-vscode-java-debug-0.49.2023032407/share/vscode/extensions/vscjava.vscode-java-debug/server/com.microsoft.java.debug.plugin-0.44.0.jar"
"${javaTestPath}"
];
};
};
};
}
#
# extraConfigLua = ''
# local jdtls = require("jdtls")
# local cmp_nvim_lsp = require("cmp_nvim_lsp")
#
# local root_dir = require("jdtls.setup").find_root({ "packageInfo" }, "Config")
# local home = os.getenv("HOME")
# local eclipse_workspace = home .. "/.local/share/eclipse/" .. vim.fn.fnamemodify(root_dir, ":p:h:t")
#
# local ws_folders_jdtls = {}
# if root_dir then
# local file = io.open(root_dir .. "/.bemol/ws_root_folders")
# if file then
# for line in file:lines() do
# table.insert(ws_folders_jdtls, "file://" .. line)
# end
# file:close()
# end
# end
#
# -- for completions
# local client_capabilities = vim.lsp.protocol.make_client_capabilities()
# local capabilities = cmp_nvim_lsp.default_capabilities(client_capabilities)
#
# local config = {
# capabilities = capabilities,
# cmd = {
# "${pkgs.jdt-language-server}/bin/jdt-language-server",
# "--jvm-arg=-javaagent:" .. home .. "/Developer/lombok.jar",
# "-data",
# eclipse_workspace,
# "--add-modules=ALL-SYSTEM",
# },
# root_dir = root_dir,
# init_options = {
# workspaceFolders = ws_folders_jdtls,
# },
# settings = {
# java = {
# signatureHelp = { enabled = true},
# completion = { enabled = true },
# },
# },
# on_attach = function(client, bufnr)
# local opts = { silent = true, buffer = bufnr }
# vim.keymap.set('n', "<leader>lo", jdtls.organize_imports, { desc = 'Organize imports', buffer = bufnr })
# vim.keymap.set('n', "<leader>df", jdtls.test_class, opts)
# vim.keymap.set('n', "<leader>dn", jdtls.test_nearest_method, opts)
# vim.keymap.set('n', '<leader>rv', jdtls.extract_variable_all, { desc = 'Extract variable', buffer = bufnr })
# vim.keymap.set('n', '<leader>rc', jdtls.extract_constant, { desc = 'Extract constant', buffer = bufnr })
# end
# }
#
# jdtls.start_or_attach(config)
# '';

View File

@ -0,0 +1,30 @@
{
lib,
config,
...
}: {
options = {
nvim-lint.enable = lib.mkEnableOption "Enable nvim-lint module";
};
config = lib.mkIf config.nvim-lint.enable {
plugins.lint = {
enable = true;
lintersByFt = {
c = ["cpplint"];
cpp = ["cpplint"];
go = ["golangci-lint"];
nix = ["statix"];
lua = ["selene"];
python = ["flake8"];
javascript = ["eslint_d"];
javascriptreact = ["eslint_d"];
typescript = ["eslint_d"];
typescriptreact = ["eslint_d"];
json = ["jsonlint"];
java = ["checkstyle"];
haskell = ["hlint"];
bash = ["shellcheck"];
};
};
};
}

View File

@ -0,0 +1,14 @@
{
lib,
config,
...
}: {
options = {
rainbow-delimeters.enable = lib.mkEnableOption "Enable rainbow-delimeters module";
};
config = lib.mkIf config.rainbow-delimeters.enable {
plugins.rainbow-delimiters = {
enable = true;
};
};
}

View File

@ -0,0 +1,128 @@
{
lib,
config,
...
}: {
options = {
treesitter-nvim.enable = lib.mkEnableOption "Enable treesitter-nvim module";
};
config = lib.mkIf config.treesitter-nvim.enable {
plugins.treesitter = {
enable = true;
settings = {
highlight = {
enable = true;
};
indent = {
enable = true;
};
autopairs = {
enable = true;
};
folding = {
enable = true;
};
ensure_installed = [
"bash"
"c"
# "html"
# "css"
# "javascript"
# "jsdoc"
"json"
"lua"
"luadoc"
# "luap"
"nix"
"rust"
# "java"
"markdown"
# "markdown_inline"
"python"
# "query"
# "regex"
# "tsx"
# "typescript"
"typst"
"vim"
"vimdoc"
"toml"
"yaml"
];
auto_install = true;
incremental_selection = {
enable = true;
keymaps = {
init_selection = "<C-space>";
node_incremental = "<C-space>";
scope_incremental = false;
node_decremental = "<bs>";
};
};
};
nixvimInjections = true;
};
plugins.treesitter-textobjects = {
enable = true;
select = {
enable = true;
lookahead = true;
keymaps = {
"aa" = "@parameter.outer";
"ia" = "@parameter.inner";
"af" = "@function.outer";
"if" = "@function.inner";
"ac" = "@class.outer";
"ic" = "@class.inner";
"ii" = "@conditional.inner";
"ai" = "@conditional.outer";
"il" = "@loop.inner";
"al" = "@loop.outer";
"at" = "@comment.outer";
};
};
move = {
enable = true;
gotoNextStart = {
"]m" = "@function.outer";
"]]" = "@class.outer";
};
gotoNextEnd = {
"]M" = "@function.outer";
"][" = "@class.outer";
};
gotoPreviousStart = {
"[m" = "@function.outer";
"[[" = "@class.outer";
};
gotoPreviousEnd = {
"[M" = "@function.outer";
"[]" = "@class.outer";
};
};
swap = {
enable = true;
swapNext = {
"<leader>a" = "@parameters.inner";
};
swapPrevious = {
"<leader>A" = "@parameter.outer";
};
};
};
plugins.ts-autotag = {
enable = true;
};
plugins.treesitter-context = {
enable = true;
};
plugins.ts-context-commentstring = {
enable = true;
disableAutoInitialization = false;
};
};
}