From 98c3a04f93456ec2831848bb2373a4f410a8848a Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Mon, 1 Jun 2026 23:17:31 +0200 Subject: [PATCH] jls: package in flake --- flake/pkgs/by-name/jls/package.nix | 101 +++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 flake/pkgs/by-name/jls/package.nix diff --git a/flake/pkgs/by-name/jls/package.nix b/flake/pkgs/by-name/jls/package.nix new file mode 100644 index 00000000..a2253b59 --- /dev/null +++ b/flake/pkgs/by-name/jls/package.nix @@ -0,0 +1,101 @@ +# based on +{ + lib, + jdk25_headless, + maven, + lombok, + protobuf_25, + lombokSupport ? true, + makeWrapper, + fetchFromGitHub, +}: let + inherit (lib.meta) getExe; + + jdk = jdk25_headless; + java = getExe jdk; + jlinkVmOptions = + map + (option: '' + --add-flags "${option}" \ + '') + [ + "--add-modules jdk.jdeps" + "--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED" + "--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED" + "--add-exports jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED" + "--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED" + "--add-exports jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED" + "--add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED" + "--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED" + "--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED" + "--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED" + "--add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED" + "--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED" + "--add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED" + "--add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED" + "--add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED" + "--add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED" + "--add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED" + "--add-opens jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED" + "--add-opens jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED" + "--add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED" + "--add-opens jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED" + "--add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED" + "--add-opens jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED" + ]; + wrapperFlags = '' + ${lib.concatStringsSep " " jlinkVmOptions} \ + --add-flags "\$JLS_JVM_OPTS" \ + --add-flags "-Djava.util.logging.config.file=$out/share/jls/logging.properties" \ + ${lib.optionalString lombokSupport ''--add-flags "-Dorg.javacs.lombokPath=${lombok}/share/lombok.jar"''} \ + --add-flags "-classpath '$out/share/jls/classpath/*'" \ + --set-default JLS_JVM_OPTS "-Xmx2g -Xms512m -XX:MaxHeapFreeRatio=50 -XX:MinHeapFreeRatio=20 -XX:+UseStringDeduplication" \ + ''; +in + maven.buildMavenPackage (finalAttrs: { + pname = "jls"; + version = "0.6.1"; + + src = fetchFromGitHub { + owner = "idelice"; + repo = "jls"; + tag = "v${finalAttrs.version}"; + hash = "sha256-kZ96OsCMtpS3diUT/4+TEnzNb2G4LfDdrrSKuhIM9NU="; + }; + + mvnJdk = jdk; + mvnHash = "sha256-E/ZNOGIB/00dfhPsagwJUV6TWHCY7Jb5Ewlvyxs3sRI="; + mvnParameters = "-DskipTests"; + + nativeBuildInputs = [ + makeWrapper + protobuf_25 + ]; + + preBuild = '' + bash ./scripts/gen_proto.sh + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin $out/share/jls/ + cp -r dist/classpath $out/share/jls/ + install -Dm644 scripts/logging.properties $out/share/jls + + makeWrapper ${java} $out/bin/jls \ + ${wrapperFlags} \ + --add-flags "org.javacs.Main" + makeWrapper ${java} $out/bin/jls-dap \ + ${wrapperFlags} \ + --add-flags "org.javacs.debug.JavaDebugServer" + + runHook postInstall + ''; + + meta = { + description = "Java Language Server for Neovim"; + license = lib.licenses.mit; + mainProgram = "jls"; + }; + })