@ -1,69 +1,20 @@
{ lib , stdenv , fetchFromGitHub , maven , jdk17_headless }:
{ lib , stdenv , fetchurl }:
let
version = " 1 . 2 0 2 2 . 2 " ;
src = fetchFromGitHub {
owner = " p l a n t u m l " ;
repo = " p l a n t u m l - s e r v e r " ;
rev = " v ${ version } " ;
sha256 = " s h a 2 5 6 - 5 5 I B h u l F o 4 2 j s c B F r H M 3 9 q A 0 G R g K B o Y N y e 4 q 9 Q k m j s M = " ;
} ;
# perform fake build to make a fixed-output derivation out of the files downloaded from maven central
deps = stdenv . mkDerivation {
name = " p l a n t u m l - s e r v e r - ${ version } - d e p s " ;
inherit src ;
nativeBuildInputs = [ jdk17_headless maven ] ;
buildPhase = ''
runHook preBuild
while mvn package - Dmaven . repo . local = $ out/.m2 ; [ $ ? = 1 ] ; do
echo " t i m e o u t , r e s t a r t m a v e n t o c o n t i n u e d o w n l o a d i n g "
done
runHook postBuild
'' ;
# keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside
installPhase = ''
find $ out/.m2 - type f - regex ' . + \ ( \ . lastUpdated \ | resolver-status \ . properties \ | _remote \ . repositories \ ) ' - delete
'' ;
outputHashAlgo = " s h a 2 5 6 " ;
outputHashMode = " r e c u r s i v e " ;
outputHash = " s h a 2 5 6 - A h e C B X 5 j F z D H q T I 2 p C W B I i D E S E K M C l X l v W I c F v u 0 g o A = " ;
} ;
in
stdenv . mkDerivation rec {
pname = " p l a n t u m l - s e r v e r " ;
inherit version ;
inherit src ;
nativeBuildInputs = [ jdk17_headless maven ] ;
buildPhase = ''
runHook preBuild
# maven can output reproducible files after setting project.build.outputTimestamp property
# see https://maven.apache.org/guides/mini/guide-reproducible-builds.html#how-do-i-configure-my-maven-build
# 'maven.repo.local' must be writable so copy it out of nix store
cp - R $ src repo
chmod + w - R repo
cd repo
mvn package - - offline \
- Dproject . build . outputTimestamp = 0 \
- Dmaven . repo . local = $ ( cp - dpR $ { deps } /.m2 . / && chmod + w - R . m2 && pwd ) /.m2
runHook postBuild
'' ;
src = fetchurl {
url = " h t t p s : / / g i t h u b . c o m / p l a n t u m l / p l a n t u m l - s e r v e r / r e l e a s e s / d o w n l o a d / v ${ version } / p l a n t u m l - v ${ version } . w a r " ;
sha256 = " s h a 2 5 6 - h 4 u l X z Z 5 L + V P h k 2 C n Z Q N x f n E J z W T 3 B 9 T N v D E W t 4 o 9 H k = " ;
} ;
dontUnpack = true ;
installPhase = ''
runHook preInstall
mkdir - p " $ o u t / w e b a p p s "
cp " t a r g e t / p l a n t u m l . w a r " " $ o u t / w e b a p p s / p l a n t u m l . w a r "
runHook postInstall
cp " $ s r c " " $ o u t / w e b a p p s / p l a n t u m l . w a r "
'' ;
meta = with lib ; {