Change:
On current master, unstable and 23.05 HEADs, the package can be built but not started. Steps to reproduce the behavior: error: Scenebuilder starts succesfully A with identified a merge from 2023-02-15 as the problem. (; ) I started a more detailed bisection already though it is estimated on 8 steps, which in my experience take 6+ hours each on my hardware. Please run and paste the result.
I can reproduce and have a rough idea what the problem is. It looks like javafx is missing. This used to be part of the jdk (<v8), was then factored out into a separate openjfx dependency in JDK9, but many distributions including nix built jdk versions that manually patched openjfx into openjdk to not have to change the packaging of older javafx applications that expect it to be part of the jdk. As an additional complication, we cannot just use javafx from maven central because it contains binary libraries linked against e.g. gtk that would have to be patchelfed. I'll have a look later, let me know if you find out anything in the meantime or if you have any questions.
found the change that broke scenebuilder (and also scenic-view) and a PR to fix them. Feel free to test and review.

Discussion:
<del> { lib, stdenv, fetchFromGitHub, jdk11, gradle_6, makeDesktopItem, copyDesktopItems, perl, writeText, runtimeShell, makeWrapper, glib, wrapGAppsHook }: let gradle = gradle_6; </del> <ins> { lib, stdenv, fetchFromGitHub, openjdk20, maven, makeDesktopItem, copyDesktopItems, makeWrapper, glib, wrapGAppsHook }: let jdk = openjdk20.override (lib.optionalAttrs stdenv.isLinux { enableJavaFX = true; }); maven' = maven.override { inherit jdk; }; selectSystem = attrs: attrs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); in maven'.buildMavenPackage rec { </ins> pname = "scenebuilder"; <del> version = "15.0.1"; </del> <ins> version = "20.0.0"; </ins> src = fetchFromGitHub { owner = "gluonhq"; repo = pname; rev = version; <del> sha256 = "0dqlpfgr9qpmk62zsnhzw4q6n0swjqy00294q0kb4djp3jn47iz4"; </del> <ins> hash = "sha256-Og+dzkJ6+YH0fD4HJw8gUKGgvQuNw17BxgzZMP/bEA0="; </ins> }; <del> deps = stdenv.mkDerivation { name = "${pname}-deps"; inherit src; nativeBuildInputs = [ jdk11 perl gradle ]; buildPhase = '' export GRADLE_USER_HOME=$(mktemp -d); gradle --no-daemon build -x test ''; # Mavenize dependency paths # e.g. org.codehaus.groovy/groovy/2.4.0/{hash}/groovy-2.4.0.jar -> org/codehaus/groovy/groovy/2.4.0/groovy-2.4.0.jar installPhase = '' find $GRADLE_USER_HOME/caches/modules-2 -type f -regex '.*.(jar|pom)'  | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/s]+))$# ($x = $2) =~ tr|.|/|; "install -Dm444 $1 $out/$x/$3/$4/$5" #e'  | sh ''; outputHashAlgo = "sha256"; outputHashMode = "recursive"; outputHash = "01dkayad68g3zpzdnjwrc0h6s7s6n619y5b576snc35l8g2r5sgd"; }; # Point to our local deps repo gradleInit = writeText "init.gradle" '' settingsEvaluated { settings -> settings.pluginManagement { repositories { clear() maven { url '${deps}' } } } } logger.lifecycle 'Replacing Maven repositories with ${deps}...' gradle.projectsLoaded { rootProject.allprojects { buildscript { repositories { clear() maven { url '${deps}' } } } repositories { clear() maven { url '${deps}' } } } } ''; desktopItem = makeDesktopItem { name = "scenebuilder"; exec = "scenebuilder"; icon = "scenebuilder"; comment = "A visual, drag'n'drop, layout tool for designing JavaFX application user interfaces."; desktopName = "Scene Builder"; mimeTypes = [ "application/java" "application/java-vm" "application/java-archive" ]; categories = [ "Development" ]; </del> <ins> buildDate = "2022-10-07T00:00:00+01:00"; # v20.0.0 release date mvnParameters = "-Dmaven.test.skip -Dproject.build.outputTimestamp=${buildDate} -DbuildTimestamp=${buildDate}"; mvnHash = selectSystem { x86_64-linux = "sha256-3SFCQ+hyQPtAEx1jSbe/Qtq4dYkfVvU/Kmekzv53o3U="; aarch64-linux = "sha256-AZ1NXzSRyT77W+EjLIb7eWxf7Ztu6XuKjSImRg1lNcw="; </ins> }; <del> in stdenv.mkDerivation rec { inherit pname src version; nativeBuildInputs = [ jdk11 gradle makeWrapper glib wrapGAppsHook ]; </del> <ins> nativeBuildInputs = [ copyDesktopItems makeWrapper glib wrapGAppsHook ]; </ins> dontWrapGApps = true; # prevent double wrapping <del> buildPhase = '' runHook preBuild export GRADLE_USER_HOME=$(mktemp -d) gradle -PVERSION=${version} --offline --no-daemon --info --init-script ${gradleInit} build -x test runHook postBuild ''; </del> installPhase = '' runHook preInstall <del> mkdir -p $out/bin $out/share/{${pname},icons/hicolor/128x128/apps} cp app/build/libs/SceneBuilder-${version}-all.jar $out/share/${pname}/${pname}.jar cp app/build/resources/main/com/oracle/javafx/scenebuilder/app/SB_Logo.png $out/share/icons/hicolor/128x128/apps/scenebuilder.png </del> <ins> mkdir -p $out/bin $out/share/java $out/share/{${pname},icons/hicolor/128x128/apps} cp app/target/lib/scenebuilder-${version}-SNAPSHOT-all.jar $out/share/java/${pname}.jar cp app/src/main/resources/com/oracle/javafx/scenebuilder/app/SB_Logo.png $out/share/icons/hicolor/128x128/apps/scenebuilder.png </ins> runHook postInstall ''; postFixup = '' <del> makeWrapper ${jdk11}/bin/java $out/bin/${pname} --add-flags "-jar $out/share/${pname}/${pname}.jar" "''${gappsWrapperArgs[@]}" </del> <ins> makeWrapper ${jdk}/bin/java $out/bin/${pname}  --add-flags "--add-modules javafx.web,javafx.fxml,javafx.swing,javafx.media"  --add-flags "--add-opens=javafx.fxml/javafx.fxml=ALL-UNNAMED"  --add-flags "-cp $out/share/java/${pname}.jar"  --add-flags "com.oracle.javafx.scenebuilder.app.SceneBuilderApp"  "''${gappsWrapperArgs[@]}" </ins> ''; <del> desktopItems = [ desktopItem ]; </del> <ins> desktopItems = [ (makeDesktopItem { name = "scenebuilder"; exec = "scenebuilder"; icon = "scenebuilder"; comment = "A visual, drag'n'drop, layout tool for designing JavaFX application user interfaces."; desktopName = "Scene Builder"; mimeTypes = [ "application/java" "application/java-vm" "application/java-archive" ]; categories = [ "Development" ]; }) ]; </ins> meta = with lib; { broken = stdenv.isDarwin;

<del> { lib, stdenv, fetchFromGitHub, jdk, gradle_7, makeDesktopItem, copyDesktopItems, perl, writeText, runtimeShell, makeWrapper }: </del> <ins> { lib, stdenv, fetchFromGitHub, openjdk, openjfx, gradle_7, makeDesktopItem, perl, writeText, makeWrapper }: </ins> let <ins> jdk = openjdk.override (lib.optionalAttrs stdenv.isLinux { enableJavaFX = true; openjfx = openjfx.override { withWebKit = true; }; }); </ins> pname = "scenic-view"; version = "11.0.2";

scenebuilder = callPackage ../development/tools/scenebuilder { }; <del> scenic-view = callPackage ../development/tools/scenic-view { jdk = jdk11; }; </del> <ins> scenic-view = callPackage ../development/tools/scenic-view { }; </ins> shncpd = callPackage ../tools/networking/shncpd { };