{ lib, stdenv, fetchFromGitHub, fetchurl, gradle, jdk, perl, }: let meta = builtins.fromJSON (builtins.readFile ../meta.json); extraDeps = [ { filename = "okio-3.2.0.jar"; path = "com/squareup/okio/okio/3.2.0"; url = "https://repo1.maven.org/maven2/com/squareup/okio/okio/3.2.0/okio-3.2.0.jar"; sha256 = "sha256-3KkyyyAptsniZ3D4fbCLFNSB/+gTGlnzaaI4XBG+Ti0="; } ]; in stdenv.mkDerivation { pname = "piped-backend-deps"; version = "latest-${meta.backend.rev}"; src = fetchFromGitHub { owner = "TeamPiped"; repo = "Piped-Backend"; rev = "${meta.backend.rev}"; sha256 = "${meta.backend.sha256}"; }; nativeBuildInputs = [gradle jdk perl]; buildPhase = '' export JAVA_HOME=${jdk} export GRADLE_USER_HOME=$(mktemp -d); gradle -P org.gradle.java.installations.fromEnv=JAVA_HOME --no-daemon assemble shadowJar ''; # perl code mavenizes paths (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar) installPhase = '' find $GRADLE_USER_HOME/caches/modules-2 -type f -regex '.*\.\(jar\|pom\)' \ | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \ | sh '' + lib.concatStringsSep "\n" (lib.forEach extraDeps (dep: '' mkdir -p $out/${dep.path} cp ${fetchurl { url = dep.url; sha256 = dep.sha256; }} $out/${dep.path}/${dep.filename} '')); dontStrip = true; outputHashAlgo = "sha256"; outputHashMode = "recursive"; outputHash = "${meta.backend.deps-sha256}"; }