{ lib, config, ... }: let inherit (lib) types; inherit (lib.nixvim) defaultNullOpts; in lib.nixvim.plugins.mkNeovimPlugin { name = "java"; packPathName = "nvim-java"; package = "nvim-java"; maintainers = [ lib.maintainers.GaetanLepage ]; # `require("java").setup()` must run **BEFORE** lspconfig configLocation = lib.mkOrder 900 "extraConfigLua"; settingsOptions = { root_markers = defaultNullOpts.mkListOf types.str [ "settings.gradle" "settings.gradle.kts" "pom.xml" "build.gradle" "mvnw" "gradlew" "build.gradle" "build.gradle.kts" ".git" ] '' List of files that exist in root of the project. ''; }; extraConfig = cfg: { assertions = lib.nixvim.mkAssertions "plugins.nvim-java" { assertion = cfg.enable -> !config.plugins.jdtls.enable; message = '' You cannot use nvim-java alongside nvim-jdtls. Please, disable `plugins.jdtls` if you wish to use this plugin. ''; }; }; }