1{ lib, stdenv, fetchurl, jre, makeWrapper }: 2 3stdenv.mkDerivation rec { 4 pname = "google-java-format"; 5 version = "1.18.1"; 6 7 src = fetchurl { 8 url = "https://github.com/google/google-java-format/releases/download/v${version}/google-java-format-${version}-all-deps.jar"; 9 sha256 = "sha256-vtO61DP330J3AGSPJLeY2zwzjW3LLMXAi8VCtVYQ+RA="; 10 }; 11 12 dontUnpack = true; 13 14 nativeBuildInputs = [ makeWrapper ]; 15 buildInputs = [ jre ]; 16 17 installPhase = '' 18 runHook preInstall 19 20 mkdir -p $out/{bin,share/${pname}} 21 install -D ${src} $out/share/${pname}/google-java-format-${version}-all-deps.jar 22 23 makeWrapper ${jre}/bin/java $out/bin/${pname} \ 24 --argv0 ${pname} \ 25 --add-flags "--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED" \ 26 --add-flags "--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED" \ 27 --add-flags "--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED" \ 28 --add-flags "--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED" \ 29 --add-flags "--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED" \ 30 --add-flags "-jar $out/share/${pname}/google-java-format-${version}-all-deps.jar" 31 32 runHook postInstall 33 ''; 34 35 meta = with lib; { 36 description = "Java source formatter by Google"; 37 longDescription = '' 38 A program that reformats Java source code to comply with Google Java Style. 39 ''; 40 homepage = "https://github.com/google/google-java-format"; 41 sourceProvenance = with sourceTypes; [ binaryBytecode ]; 42 license = licenses.asl20; 43 maintainers = [ maintainers.emptyflask ]; 44 platforms = platforms.all; 45 mainProgram = "google-java-format"; 46 }; 47}