From 7651e17b734a987753603156db833bf570c46a40 Mon Sep 17 00:00:00 2001 From: Luis Eduardo Bueso de Barrio Date: Wed, 25 Mar 2026 17:43:42 +0100 Subject: [PATCH] jls --- pkgs/default.nix | 1 + pkgs/jls/default.nix | 87 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 pkgs/jls/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 6230a68..d8c1121 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -11,6 +11,7 @@ let }; khal-export = pkgs.callPackage ./khal-export { }; org-zotero-export = pkgs.callPackage ./org-zotero-export { }; + jls = pkgs.callPackage ./jls { }; }; in self // { default = self.example-a; } diff --git a/pkgs/jls/default.nix b/pkgs/jls/default.nix new file mode 100644 index 0000000..1eb73d9 --- /dev/null +++ b/pkgs/jls/default.nix @@ -0,0 +1,87 @@ +{ + lib, + maven, + jdk21, + fetchFromGitHub, + writeShellScript, +}: +let + jdk = jdk21; +in +maven.buildMavenPackage rec { + pname = "jls"; + version = "0-unstable-2025-11-15"; + + src = fetchFromGitHub { + owner = "idelice"; + repo = "jls"; + rev = "82d341b55258113c6112e673518f92d84d1f7dd7"; + hash = "sha256-MCm0sYoHgSNHJgKWAXw67Qct4derqpy0uD+PtzNyDhc="; + }; + + mvnJdk = jdk; + mvnHash = "sha256-x1Je1mcvovs4brwNaROKOlnZ4YvqrZicuCCcGSCIFP8="; + + mvnParameters = "-DskipTests"; + + # The configure script just sets up git hooks, not needed for build + postPatch = '' + rm -f configure + ''; + + installPhase = + let + jvmFlags = lib.concatStringsSep " " [ + "--add-modules jdk.jdeps" + "--add-exports jdk.jdeps/com.sun.tools.classfile=ALL-UNNAMED" + "--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" + ]; + in + '' + runHook preInstall + + mkdir -p $out/share/jls $out/bin + + cp dist/classpath/*.jar $out/share/jls/ + + cat > $out/bin/jls <<'WRAPPER' +#!/bin/sh +exec @java@ ${jvmFlags} -classpath "@classpath@" org.javacs.Main "$@" +WRAPPER + chmod +x $out/bin/jls + substituteInPlace $out/bin/jls \ + --replace-fail "@java@" "${jdk}/bin/java" \ + --replace-fail "@classpath@" "$out/share/jls/*" + + runHook postInstall + ''; + + meta = { + description = "Java Language Server using the Java compiler API"; + homepage = "https://github.com/idelice/jls"; + license = lib.licenses.mit; + mainProgram = "jls"; + platforms = lib.platforms.unix; + }; +}