nixfiles/overlay/piped/backend/default.nix

75 lines
1.7 KiB
Nix
Raw Normal View History

{ stdenv, runtimeShell, fetchFromGitHub, makeWrapper, jdk, jre, gradle, perl
, writeText, callPackage }:
let
meta = builtins.fromJSON (builtins.readFile ../meta.json);
deps = callPackage ./deps.nix { inherit stdenv fetchFromGitHub jdk gradle perl; };
gradleInit = writeText "init.gradle" ''
logger.lifecycle 'Replacing Maven repositories with ${deps}...'
gradle.projectsLoaded {
rootProject.allprojects {
buildscript {
repositories {
clear()
maven { url '${deps}' }
}
}
repositories {
clear()
maven { url '${deps}' }
}
}
}
settingsEvaluated { settings ->
settings.pluginManagement {
repositories {
maven { url '${deps}' }
}
}
}
'';
in stdenv.mkDerivation rec {
pname = "piped-backend";
version = "latest-${meta.backend.rev}";
src = fetchFromGitHub {
owner = "TeamPiped";
repo = "Piped-Backend";
rev = "${meta.backend.rev}";
sha256 = "${meta.backend.sha256}";
};
nativeBuildInputs = [ gradle jdk ];
buildPhase = ''
runHook preBuild
export GRADLE_USER_HOME=$(mktemp -d)
gradle --offline --init-script ${gradleInit} shadowJar
runHook postBuild
'';
installPhase = ''
runHook preInstall
ls -R build
mkdir -p "$out/share/piped-backend"
cp build/libs/piped-1.0-all.jar "$out/share/piped-backend"
mkdir -p "$out/bin"
cat <<EOF >$out/bin/piped-backend
#!${runtimeShell}
export JAVA_HOME=${jre}
exec ${jre}/bin/java -jar "$out/share/piped-backend/piped-1.0-all.jar" "\$@"
EOF
chmod a+x "$out/bin/piped-backend"
runHook postInstall
'';
}