at 24.05-pre 79 lines 2.7 kB view raw
1{ lib, stdenv, fetchFromGitHub, openjdk20, maven, makeDesktopItem, copyDesktopItems, makeWrapper, glib, wrapGAppsHook }: 2 3let 4 jdk = openjdk20.override (lib.optionalAttrs stdenv.isLinux { 5 enableJavaFX = true; 6 }); 7 maven' = maven.override { 8 inherit jdk; 9 }; 10 selectSystem = attrs: 11 attrs.${stdenv.hostPlatform.system} 12 or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); 13in 14maven'.buildMavenPackage rec { 15 pname = "scenebuilder"; 16 version = "20.0.0"; 17 18 src = fetchFromGitHub { 19 owner = "gluonhq"; 20 repo = pname; 21 rev = version; 22 hash = "sha256-Og+dzkJ6+YH0fD4HJw8gUKGgvQuNw17BxgzZMP/bEA0="; 23 }; 24 25 buildDate = "2022-10-07T00:00:00+01:00"; # v20.0.0 release date 26 mvnParameters = "-Dmaven.test.skip -Dproject.build.outputTimestamp=${buildDate} -DbuildTimestamp=${buildDate}"; 27 mvnHash = selectSystem { 28 x86_64-linux = "sha256-3SFCQ+hyQPtAEx1jSbe/Qtq4dYkfVvU/Kmekzv53o3U="; 29 aarch64-linux = "sha256-AZ1NXzSRyT77W+EjLIb7eWxf7Ztu6XuKjSImRg1lNcw="; 30 }; 31 32 nativeBuildInputs = [ copyDesktopItems makeWrapper glib wrapGAppsHook ]; 33 34 dontWrapGApps = true; # prevent double wrapping 35 36 installPhase = '' 37 runHook preInstall 38 39 mkdir -p $out/bin $out/share/java $out/share/{${pname},icons/hicolor/128x128/apps} 40 cp app/target/lib/scenebuilder-${version}-SNAPSHOT-all.jar $out/share/java/${pname}.jar 41 42 cp app/src/main/resources/com/oracle/javafx/scenebuilder/app/SB_Logo.png $out/share/icons/hicolor/128x128/apps/scenebuilder.png 43 44 runHook postInstall 45 ''; 46 47 postFixup = '' 48 makeWrapper ${jdk}/bin/java $out/bin/${pname} \ 49 --add-flags "--add-modules javafx.web,javafx.fxml,javafx.swing,javafx.media" \ 50 --add-flags "--add-opens=javafx.fxml/javafx.fxml=ALL-UNNAMED" \ 51 --add-flags "-cp $out/share/java/${pname}.jar" \ 52 --add-flags "com.oracle.javafx.scenebuilder.app.SceneBuilderApp" \ 53 "''${gappsWrapperArgs[@]}" 54 ''; 55 56 desktopItems = [ (makeDesktopItem { 57 name = "scenebuilder"; 58 exec = "scenebuilder"; 59 icon = "scenebuilder"; 60 comment = "A visual, drag'n'drop, layout tool for designing JavaFX application user interfaces."; 61 desktopName = "Scene Builder"; 62 mimeTypes = [ "application/java" "application/java-vm" "application/java-archive" ]; 63 categories = [ "Development" ]; 64 }) ]; 65 66 meta = with lib; { 67 broken = stdenv.isDarwin; 68 description = "A visual, drag'n'drop, layout tool for designing JavaFX application user interfaces."; 69 homepage = "https://gluonhq.com/products/scene-builder/"; 70 sourceProvenance = with sourceTypes; [ 71 fromSource 72 binaryBytecode # deps 73 ]; 74 license = licenses.bsd3; 75 maintainers = with maintainers; [ wirew0rm ]; 76 platforms = platforms.all; 77 }; 78} 79