Skip to content

Instantly share code, notes, and snippets.

@matyklug18
Created September 3, 2021 18:00
Show Gist options
  • Save matyklug18/062f76fc6bc4e13064f559b1bada083c to your computer and use it in GitHub Desktop.
Save matyklug18/062f76fc6bc4e13064f559b1bada083c to your computer and use it in GitHub Desktop.
processing4 = pkgs.stdenv.mkDerivation rec {
pname = "processing4";
version = "1276-4.0b1";
src = pkgs.fetchFromGitHub {
owner = "processing";
repo = "${pname}";
rev = "processing-${version}";
sha256 = "9AUHT8lEkYQ+TcpHJ7D24QZf6DjTPmthd/oVg/+Pt2Q=";
};
vaqua = pkgs.fetchurl {
name = "VAqua9.jar";
url = "https://violetlib.org/release/vaqua/9/VAqua9.jar";
sha256 = "cd0b82df8e7434c902ec873364bf3e9a3e6bef8b59cbf42433130d71bf1a779c";
};
jna = pkgs.fetchurl {
name = "jna-5.8.0.zip";
url = "https://github.com/java-native-access/jna/archive/5.8.0.zip";
sha256 = "7cRkkxyo2Ld19Nif8oWceITt7dYMUnQlrs0R5e0AmPE=";
};
gluon = pkgs.fetchurl {
name = "javafx-16-sdk-linux.zip";
url = "https://gluonhq.com/download/javafx-16-sdk-linux";
sha256 = "W9Q5LQ0tak3cEr7fjZEtSvF/hiLwVg2+AoH1bE+e0Uw=";
};
batik = pkgs.fetchurl {
name = "batik-bin-1.14.zip";
url = "https://archive.apache.org/dist/xmlgraphics/batik/binaries/batik-bin-1.14.zip";
sha256 = "vNYa4jW7QSPucGHKFWmLI2eTOnRYfmzDNzUiwmzCX28=";
};
ffmpeg = pkgs.fetchurl {
url = "https://download.processing.org/ffmpeg/4.4/ffmpeg-linux-amd64.gz";
name = "ffmpeg-4.4.gz";
sha256 = "45M5oArfpTuGONyeem9+a2bXCrfw7TEILoZ4znXrcPo=";
};
nativeBuildInputs = [pkgs.ant pkgs.unzip pkgs.makeWrapper];
buildInputs = [pkgs.jdk11 pkgs.javaPackages.jogl_2_3_2 pkgs.ant pkgs.rsync];
buildPhase = ''
tar --checkpoint=10000 -czf build/linux/jdk-11.0.12.tgz ${pkgs.jdk11}
cp ${pkgs.ant}/lib/ant/lib/{ant.jar,ant-launcher.jar} app/lib/
mkdir -p core/library
cp ${pkgs.javaPackages.jogl_2_3_2}/share/java/* core/library/
cp $vaqua app/lib/VAqua9.jar
#ls -l ./app/lib/VAqua9.jar
unzip -qo $jna -d app/lib/
mv app/lib/{jna-5.8.0/dist/jna.jar,}
mv app/lib/{jna-5.8.0/dist/jna-platform.jar,}
GLUON="java/libraries/javafx/library"
mkdir -p $GLUON/linux64/modules/
mkdir -p $GLUON/macosx/modules/
unzip -qo $gluon -d $GLUON/
cp $GLUON/javafx-sdk-16/lib/*.jar $GLUON/macosx/modules/
cp $GLUON/javafx-sdk-16/lib/*.so $GLUON/linux64/
unzip -qo $batik -d java/libraries/svg/library/
cp java/libraries/svg/library/{batik-1.14/lib/,}batik-all-1.14.jar
cp $ffmpeg build/shared/tools/MovieMaker/ffmpeg-4.4.gz
sed -i 's/depends="download-javafx"//g' java/libraries/javafx/build.xml
sed -i '888,889d' java/libraries/javafx/src/processing/javafx/PSurfaceFX.java
cd build
ant build
cd ..
'';
installPhase = ''
mkdir $out
cp -dpr build/linux/work $out/${pname}
rmdir $out/${pname}/java
ln -s ${pkgs.jdk11} $out/${pname}/java
makeWrapper $out/${pname}/processing $out/bin/processing \
--prefix XDG_DATA_DIRS : ${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name} \
--prefix _JAVA_OPTIONS " " -Dawt.useSystemAAFontSettings=lcd \
--prefix LD_LIBRARY_PATH : ${pkgs.xorg.libXxf86vm}/lib
makeWrapper $out/${pname}/processing-java $out/bin/processing-java \
--prefix XDG_DATA_DIRS : ${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name} \
--prefix _JAVA_OPTIONS " " -Dawt.useSystemAAFontSettings=lcd \
--prefix LD_LIBRARY_PATH : ${pkgs.xorg.libXxf86vm}/lib
'';
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment