Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ 2 lib, 3 jdk21, 4 maven, 5 fetchFromGitHub, 6 makeDesktopItem, 7 copyDesktopItems, 8 glib, 9 makeWrapper, 10 wrapGAppsHook3, 11}: 12 13let 14 jdk = jdk21.override { 15 enableJavaFX = true; 16 }; 17in 18maven.buildMavenPackage rec { 19 pname = "scenebuilder"; 20 version = "21.0.1"; 21 22 src = fetchFromGitHub { 23 owner = "gluonhq"; 24 repo = "scenebuilder"; 25 rev = version; 26 hash = "sha256-YEcW1yQK6RKDqSstsrpdOqMt972ZagenGDxcJ/gP+SA="; 27 }; 28 29 patches = [ 30 # makes the mvnHash platform-independent 31 ./pom-remove-javafx.patch 32 33 # makes sure that maven upgrades don't change the mvnHash 34 ./fix-default-maven-plugin-versions.patch 35 ]; 36 37 postPatch = '' 38 # set the build timestamp to $SOURCE_DATE_EPOCH 39 substituteInPlace app/pom.xml \ 40 --replace-fail "\''${maven.build.timestamp}" "$(date -d "@$SOURCE_DATE_EPOCH" '+%Y-%m-%d %H:%M:%S')" 41 ''; 42 43 mvnJdk = jdk; 44 mvnParameters = toString [ 45 "-Dmaven.test.skip" 46 "-Dproject.build.outputTimestamp=1980-01-01T00:00:02Z" 47 ]; 48 49 mvnHash = "sha256-fS7dS2Q4ORThLBwDOzJJnRboNNRmhp0RG6Dae9fl+pw="; 50 51 nativeBuildInputs = [ 52 copyDesktopItems 53 glib 54 makeWrapper 55 wrapGAppsHook3 56 ]; 57 58 dontWrapGApps = true; # prevent double wrapping 59 60 installPhase = '' 61 runHook preInstall 62 63 install -Dm644 app/target/lib/scenebuilder-${version}-SNAPSHOT-all.jar $out/share/scenebuilder/scenebuilder.jar 64 install -Dm644 app/src/main/resources/com/oracle/javafx/scenebuilder/app/SB_Logo.png $out/share/icons/hicolor/128x128/apps/scenebuilder.png 65 66 runHook postInstall 67 ''; 68 69 postFixup = '' 70 makeWrapper ${jdk}/bin/java $out/bin/scenebuilder \ 71 --add-flags "--add-modules javafx.web,javafx.fxml,javafx.swing,javafx.media" \ 72 --add-flags "--add-opens=javafx.fxml/javafx.fxml=ALL-UNNAMED" \ 73 --add-flags "-jar $out/share/scenebuilder/scenebuilder.jar" \ 74 "''${gappsWrapperArgs[@]}" 75 ''; 76 77 desktopItems = [ 78 (makeDesktopItem { 79 name = "scenebuilder"; 80 exec = "scenebuilder"; 81 icon = "scenebuilder"; 82 comment = "A visual, drag'n'drop, layout tool for designing JavaFX application user interfaces."; 83 desktopName = "Scene Builder"; 84 mimeTypes = [ 85 "application/java" 86 "application/java-vm" 87 "application/java-archive" 88 ]; 89 categories = [ "Development" ]; 90 }) 91 ]; 92 93 meta = with lib; { 94 changelog = "https://github.com/gluonhq/scenebuilder/releases/tag/${src.rev}"; 95 description = "Visual, drag'n'drop, layout tool for designing JavaFX application user interfaces"; 96 homepage = "https://gluonhq.com/products/scene-builder/"; 97 license = licenses.bsd3; 98 mainProgram = "scenebuilder"; 99 maintainers = with maintainers; [ wirew0rm ]; 100 platforms = jdk.meta.platforms; 101 sourceProvenance = with sourceTypes; [ 102 fromSource 103 binaryBytecode # deps 104 ]; 105 }; 106}