diff options
author | kirillrdy <kirillrdy@gmail.com> | 2024-01-25 06:30:38 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-25 06:30:38 +0900 |
commit | 06324f03cf8f4f0b2011e1b1f294307a3048de87 (patch) | |
tree | fd15ded5ad66073fe0072c40848172c80cbf2ca1 /pkgs/by-name/jd/jdt-language-server/package.nix | |
parent | 6ea3e577a9eb9485c24ff093b8c3d505fe38476d (diff) | |
parent | 6b19a1f3fe225c495bceeba8d2b773e3e2442e0c (diff) |
Merge pull request #280251 from eclairevoyant/jdtls
jdt-language-server: move to `pkgs/by-name`, set `passthru.updateScript`
Diffstat (limited to 'pkgs/by-name/jd/jdt-language-server/package.nix')
-rw-r--r-- | pkgs/by-name/jd/jdt-language-server/package.nix | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/pkgs/by-name/jd/jdt-language-server/package.nix b/pkgs/by-name/jd/jdt-language-server/package.nix new file mode 100644 index 0000000000000..2e25aa24f7898 --- /dev/null +++ b/pkgs/by-name/jd/jdt-language-server/package.nix @@ -0,0 +1,62 @@ +{ lib +, stdenv +, fetchurl +, python3 +, jdk +}: + +let + timestamp = "202401111522"; +in +stdenv.mkDerivation (finalAttrs: { + pname = "jdt-language-server"; + version = "1.31.0"; + + src = fetchurl { + url = "https://download.eclipse.org/jdtls/milestones/${finalAttrs.version}/jdt-language-server-${finalAttrs.version}-${timestamp}.tar.gz"; + hash = "sha256-bCX2LQt00d2SqxmvuvvlBB6wbCuFPqtX9/Qv5v6wH3w="; + }; + + sourceRoot = "."; + + buildInputs = [ + # Used for the included wrapper + python3 + ]; + + postPatch = '' + # We store the plugins, config, and features folder in different locations + # than in the original package. In addition, hard-code the path to the jdk + # in the wrapper, instead of searching for it in PATH at runtime. + substituteInPlace bin/jdtls.py \ + --replace "jdtls_base_path = Path(__file__).parent.parent" "jdtls_base_path = Path(\"$out/share/java/jdtls/\")" \ + --replace "java_executable = get_java_executable(known_args.validate_java_version)" "java_executable = '${lib.getExe jdk}'" + ''; + + installPhase = + let + # The application ships with different config directories for each platform. + # Note the application come with ARM variants as well, although the + # current included wrapper doesn't use them. + configDir = if stdenv.isDarwin then "config_mac" else "config_linux"; + in + '' + install -Dm444 -t $out/share/java/jdtls/plugins/ plugins/* + install -Dm444 -t $out/share/java/jdtls/features/ features/* + install -Dm444 -t $out/share/java/jdtls/${configDir} ${configDir}/* + install -Dm555 -t $out/bin bin/jdtls + install -Dm444 -t $out/bin bin/jdtls.py + ''; + + passthru.updateScript = ./update.sh; + + meta = { + homepage = "https://github.com/eclipse/eclipse.jdt.ls"; + description = "Java language server"; + sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; + license = lib.licenses.epl20; + maintainers = with lib.maintainers; [ matt-snider ]; + platforms = lib.platforms.all; + mainProgram = "jdtls"; + }; +}) |