Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib 2, stdenv 3, maven 4}: 5 6{ src 7, patches ? [] 8, pname 9, version 10, mvnSha256 ? "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" 11, mvnHash ? "sha256-${mvnSha256}" 12, mvnFetchExtraArgs ? {} 13, mvnParameters ? "" 14, ... 15} @args: 16 17# originally extracted from dbeaver 18# created to allow using maven packages in the same style as rust 19 20stdenv.mkDerivation (rec { 21 fetchedMavenDeps = stdenv.mkDerivation ({ 22 name = "${pname}-${version}-maven-deps"; 23 inherit src; 24 25 buildInputs = [ 26 maven 27 ]; 28 29 buildPhase = '' 30 mvn package -Dmaven.repo.local=$out/.m2 ${mvnParameters} 31 ''; 32 33 # keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside 34 installPhase = '' 35 find $out -type f \ 36 -name \*.lastUpdated -or \ 37 -name resolver-status.properties -or \ 38 -name _remote.repositories \ 39 -delete 40 ''; 41 42 # don't do any fixup 43 dontFixup = true; 44 outputHashMode = "recursive"; 45 outputHash = mvnHash; 46 } // mvnFetchExtraArgs); 47 48 buildPhase = '' 49 runHook preBuild 50 51 mvnDeps=$(cp -dpR ${fetchedMavenDeps}/.m2 ./ && chmod +w -R .m2 && pwd) 52 mvn package --offline "-Dmaven.repo.local=$mvnDeps/.m2" ${mvnParameters} 53 54 runHook postBuild 55 ''; 56} // builtins.removeAttrs args [ "mvnFetchExtraArgs" ])