Loading pkgs/by-name/tu/tuxguitar/fix-include.patch 0 → 100644 +24 −0 Original line number Diff line number Diff line diff -Naur tuxguitar/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2.h tuxguitar-patched/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2.h --- tuxguitar/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2.h 2025-11-03 22:30:10.315511003 +1100 +++ tuxguitar-patched/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2.h 2025-11-03 22:36:06.444389423 +1100 @@ -1,7 +1,7 @@ #ifndef _Included_LV2 #define _Included_LV2 -#include <lilv.h> +#include <lilv-0/lilv/lilv.h> #include <lv2/lv2plug.in/ns/extensions/ui/ui.h> #include <lv2/lv2plug.in/ns/ext/state/state.h> #include <lv2/lv2plug.in/ns/ext/options/options.h> diff -Naur tuxguitar/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2UI.h tuxguitar-patched/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2UI.h --- tuxguitar/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2UI.h 2025-11-03 22:30:10.315511003 +1100 +++ tuxguitar-patched/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2UI.h 2025-11-03 22:39:40.376479709 +1100 @@ -1,7 +1,7 @@ #ifndef _Included_LV2UI #define _Included_LV2UI -#include <suil.h> +#include <suil-0/suil/suil.h> void LV2UI_malloc(LV2UI **handle, LV2Feature *feature, LV2Instance *instance, LV2Lock* lock); pkgs/by-name/tu/tuxguitar/package.nix +194 −39 Original line number Diff line number Diff line { lib, stdenv, fetchurl, fetchFromGitHub, maven, swt, jdk, jre, makeWrapper, makeBinaryWrapper, pkg-config, alsa-lib, jack2, fluidsynth, libpulseaudio, lilv, suil, qt5, which, wrapGAppsHook3, nixosTests, fetchpatch, }: stdenv.mkDerivation (finalAttrs: { version = "1.6.6"; let swtArtifactId = "org.eclipse.swt." + (if stdenv.hostPlatform.isDarwin then "cocoa.macosx" else "gtk.linux"); buildDir = "desktop/build-scripts/tuxguitar-" + (if stdenv.hostPlatform.isDarwin then "macosx-swt-cocoa" else "linux-swt"); buildScript = "${buildDir}/pom.xml"; mvnParams = lib.escapeShellArgs [ "-f" buildScript "-P" "native-modules" "-Dmaven.test.skip=true" ]; ldLibVar = if stdenv.hostPlatform.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH"; classpath = [ "${swt}/jars/swt.jar" ] ++ lib.optionals stdenv.hostPlatform.isLinux [ "$out/lib/tuxguitar.jar" "$out/lib/itext.jar" ]; libraryPath = [ "$out/lib" fluidsynth lilv ] ++ lib.optionals stdenv.hostPlatform.isLinux [ swt alsa-lib jack2 libpulseaudio ]; wrapperPaths = [ jre which ]; # FIXME: Makes hash stable across platforms and convert to a single hash. mvnHashByPlatform = { "x86_64-linux" = "sha256-7UDFGuOMERvY74mkneusJyuAHfF3U6b4qV4MPHGQYdM="; "aarch64-linux" = "sha256-7UDFGuOMERvY74mkneusJyuAHfF3U6b4qV4MPHGQYdM="; "aarch64-darwin" = "sha256-lfO2YH+yKZWzh3MeQ7baESGmmW7zPdTLs8CjZ/FtLu0="; }; wrapperArgs = [ "\${gappsWrapperArgs[@]}" "--prefix" "PATH" ":" (lib.makeBinPath wrapperPaths) "--prefix" ldLibVar ":" (lib.makeLibraryPath libraryPath) "--prefix" "CLASSPATH" ":" (lib.concatStringsSep ":" classpath) ]; version = "2.0.1"; in maven.buildMavenPackage { pname = "tuxguitar"; inherit version; src = fetchurl { url = "https://github.com/helge17/tuxguitar/releases/download/${finalAttrs.version}/tuxguitar-${finalAttrs.version}-linux-swt-amd64.tar.gz"; hash = "sha256-kfPk+IIg5Q4Fc9HMS0kxxCarlbJjVKluIvz8KpDjJLM="; src = fetchFromGitHub { owner = "helge17"; repo = "tuxguitar"; tag = version; hash = "sha256-USdYj8ebosXkiZpDqyN5J+g1kjyWm225iQlx/szXmLA="; }; nativeBuildInputs = [ makeWrapper wrapGAppsHook3 patches = [ ./fix-include.patch # Helps a little bit with https://github.com/helge17/tuxguitar/issues/961 (fetchpatch { name = "create-new-file"; url = "https://github.com/helge17/tuxguitar/commit/3dc828a9b92e932952c2b33d8ee41db734f2fcc0.patch"; hash = "sha256-umZlCSCTWqj3tgR+qFcPucEDv5vpaC6zHbDJg/W5KUI="; }) ]; dontWrapGApps = true; buildOffline = true; installPhase = '' mkdir -p $out/bin cp -r dist lib share $out/ cp tuxguitar.sh $out/bin/tuxguitar mvnJdk = jdk; mvnHash = ( mvnHashByPlatform.${stdenv.system} or (lib.warn "Missing mvnHash for ${stdenv.system}, using lib.fakeHash" lib.fakeHash) ); ln -s $out/dist $out/bin/dist ln -s $out/lib $out/bin/lib ln -s $out/share $out/bin/share mvnParameters = mvnParams; mvnDepsParameters = mvnParams; mvnFetchExtraArgs = { dontWrapQtApps = true; dontWrapGApps = true; preBuild = '' mkdir -p $out/.m2 mvn install:install-file \ -Dfile=${swt}/jars/swt.jar \ -DgroupId=org.eclipse.swt \ -DartifactId=${swtArtifactId} \ -Dpackaging=jar \ -Dversion=4.36 \ -Dmaven.repo.local=$out/.m2 ''; postInstall = '' rm -rf $out/.m2/repository/org/eclipse/swt find $out -type f -name "maven-metadata-*.xml" -delete ''; }; postFixup = '' wrapProgram $out/bin/tuxguitar \ "''${gappsWrapperArgs[@]}" \ --prefix PATH : ${ lib.makeBinPath [ jre which afterDepsSetup = '' mvn install:install-file \ -Dfile=${swt}/jars/swt.jar \ -DgroupId=org.eclipse.swt \ -DartifactId=${swtArtifactId} \ -Dpackaging=jar \ -Dversion=4.36 \ -Dmaven.repo.local=$mvnDeps/.m2 ''; nativeBuildInputs = [ makeBinaryWrapper jdk pkg-config ] } \ --prefix LD_LIBRARY_PATH : "$out/lib/:${ lib.makeLibraryPath [ ++ lib.optionals stdenv.hostPlatform.isLinux [ wrapGAppsHook3 ]; buildInputs = [ swt alsa-lib jack2 fluidsynth libpulseaudio lilv ] }" \ --prefix CLASSPATH : "${swt}/jars/swt.jar:$out/lib/tuxguitar.jar:$out/lib/itext.jar" ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib jack2 libpulseaudio suil qt5.qtbase ]; dontWrapQtApps = true; dontWrapGApps = true; installPhase = '' runHook preInstall cd ${buildDir} '' # macOS: The build creates tuxguitar-VERSION-macosx-swt-cocoa.app directly # This directory name already ends with .app and IS the app bundle + lib.optionalString stdenv.hostPlatform.isDarwin '' mkdir -p $out/Applications cp -r target/tuxguitar-9.99-SNAPSHOT-macosx-swt-cocoa.app $out/Applications/TuxGuitar.app # Fix the launch script to use the Nix JRE instead of bundled JRE substituteInPlace $out/Applications/TuxGuitar.app/Contents/MacOS/tuxguitar.sh \ --replace-fail 'JAVA="./jre/bin/java"' 'JAVA="${jre}/bin/java"' # Ensure the main executable has execute permissions chmod +x $out/Applications/TuxGuitar.app/Contents/MacOS/tuxguitar.sh # Symlink doesn't work. We have to create a wrapper script instead mkdir -p $out/bin makeWrapper "$out/Applications/TuxGuitar.app/Contents/MacOS/tuxguitar.sh" \ "$out/bin/tuxguitar" '' # Linux: Install traditional layout + lib.optionalString stdenv.hostPlatform.isLinux '' TUXGUITAR_DIR=target/tuxguitar-9.99-SNAPSHOT-linux-swt mkdir -p $out/{bin,lib} cp -r $TUXGUITAR_DIR $out/lib/tuxguitar ln -s $out/lib/tuxguitar/tuxguitar.sh $out/bin/tuxguitar mkdir -p $out/share ln -s $out/lib/tuxguitar/share/{applications,man,metainfo,mime,pixmaps} -t $out/share/ # See https://github.com/helge17/tuxguitar/issues/961 mkdir -p $out/share/templates/.source ln -s $out/lib/tuxguitar/share/templates/ $out/share/templates/.source/tuxguitar cp /build/source/desktop/build-scripts/common-resources/common-linux/share/templates/tuxguitar.desktop $out/share/templates/ '' + '' runHook postInstall ''; passthru.tests = { nixos = nixosTests.tuxguitar; postFixup = lib.optionalString stdenv.hostPlatform.isLinux '' wrapProgram $out/bin/tuxguitar ${lib.concatStringsSep " " wrapperArgs} ''; passthru = { tests.nixos = nixosTests.tuxguitar; }; meta = { Loading @@ -74,10 +227,12 @@ stdenv.mkDerivation (finalAttrs: { in Java-SWT. It can open GuitarPro, PowerTab and TablEdit files. ''; homepage = "https://github.com/helge17/tuxguitar"; sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; license = lib.licenses.lgpl21Plus; maintainers = with lib.maintainers; [ ardumont ]; platforms = [ "x86_64-linux" ]; maintainers = with lib.maintainers; [ ardumont mio ]; platforms = builtins.attrNames mvnHashByPlatform; mainProgram = "tuxguitar"; }; }) } Loading
pkgs/by-name/tu/tuxguitar/fix-include.patch 0 → 100644 +24 −0 Original line number Diff line number Diff line diff -Naur tuxguitar/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2.h tuxguitar-patched/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2.h --- tuxguitar/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2.h 2025-11-03 22:30:10.315511003 +1100 +++ tuxguitar-patched/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2.h 2025-11-03 22:36:06.444389423 +1100 @@ -1,7 +1,7 @@ #ifndef _Included_LV2 #define _Included_LV2 -#include <lilv.h> +#include <lilv-0/lilv/lilv.h> #include <lv2/lv2plug.in/ns/extensions/ui/ui.h> #include <lv2/lv2plug.in/ns/ext/state/state.h> #include <lv2/lv2plug.in/ns/ext/options/options.h> diff -Naur tuxguitar/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2UI.h tuxguitar-patched/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2UI.h --- tuxguitar/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2UI.h 2025-11-03 22:30:10.315511003 +1100 +++ tuxguitar-patched/desktop/TuxGuitar-synth-lv2/src/main/cxx/LV2UI.h 2025-11-03 22:39:40.376479709 +1100 @@ -1,7 +1,7 @@ #ifndef _Included_LV2UI #define _Included_LV2UI -#include <suil.h> +#include <suil-0/suil/suil.h> void LV2UI_malloc(LV2UI **handle, LV2Feature *feature, LV2Instance *instance, LV2Lock* lock);
pkgs/by-name/tu/tuxguitar/package.nix +194 −39 Original line number Diff line number Diff line { lib, stdenv, fetchurl, fetchFromGitHub, maven, swt, jdk, jre, makeWrapper, makeBinaryWrapper, pkg-config, alsa-lib, jack2, fluidsynth, libpulseaudio, lilv, suil, qt5, which, wrapGAppsHook3, nixosTests, fetchpatch, }: stdenv.mkDerivation (finalAttrs: { version = "1.6.6"; let swtArtifactId = "org.eclipse.swt." + (if stdenv.hostPlatform.isDarwin then "cocoa.macosx" else "gtk.linux"); buildDir = "desktop/build-scripts/tuxguitar-" + (if stdenv.hostPlatform.isDarwin then "macosx-swt-cocoa" else "linux-swt"); buildScript = "${buildDir}/pom.xml"; mvnParams = lib.escapeShellArgs [ "-f" buildScript "-P" "native-modules" "-Dmaven.test.skip=true" ]; ldLibVar = if stdenv.hostPlatform.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH"; classpath = [ "${swt}/jars/swt.jar" ] ++ lib.optionals stdenv.hostPlatform.isLinux [ "$out/lib/tuxguitar.jar" "$out/lib/itext.jar" ]; libraryPath = [ "$out/lib" fluidsynth lilv ] ++ lib.optionals stdenv.hostPlatform.isLinux [ swt alsa-lib jack2 libpulseaudio ]; wrapperPaths = [ jre which ]; # FIXME: Makes hash stable across platforms and convert to a single hash. mvnHashByPlatform = { "x86_64-linux" = "sha256-7UDFGuOMERvY74mkneusJyuAHfF3U6b4qV4MPHGQYdM="; "aarch64-linux" = "sha256-7UDFGuOMERvY74mkneusJyuAHfF3U6b4qV4MPHGQYdM="; "aarch64-darwin" = "sha256-lfO2YH+yKZWzh3MeQ7baESGmmW7zPdTLs8CjZ/FtLu0="; }; wrapperArgs = [ "\${gappsWrapperArgs[@]}" "--prefix" "PATH" ":" (lib.makeBinPath wrapperPaths) "--prefix" ldLibVar ":" (lib.makeLibraryPath libraryPath) "--prefix" "CLASSPATH" ":" (lib.concatStringsSep ":" classpath) ]; version = "2.0.1"; in maven.buildMavenPackage { pname = "tuxguitar"; inherit version; src = fetchurl { url = "https://github.com/helge17/tuxguitar/releases/download/${finalAttrs.version}/tuxguitar-${finalAttrs.version}-linux-swt-amd64.tar.gz"; hash = "sha256-kfPk+IIg5Q4Fc9HMS0kxxCarlbJjVKluIvz8KpDjJLM="; src = fetchFromGitHub { owner = "helge17"; repo = "tuxguitar"; tag = version; hash = "sha256-USdYj8ebosXkiZpDqyN5J+g1kjyWm225iQlx/szXmLA="; }; nativeBuildInputs = [ makeWrapper wrapGAppsHook3 patches = [ ./fix-include.patch # Helps a little bit with https://github.com/helge17/tuxguitar/issues/961 (fetchpatch { name = "create-new-file"; url = "https://github.com/helge17/tuxguitar/commit/3dc828a9b92e932952c2b33d8ee41db734f2fcc0.patch"; hash = "sha256-umZlCSCTWqj3tgR+qFcPucEDv5vpaC6zHbDJg/W5KUI="; }) ]; dontWrapGApps = true; buildOffline = true; installPhase = '' mkdir -p $out/bin cp -r dist lib share $out/ cp tuxguitar.sh $out/bin/tuxguitar mvnJdk = jdk; mvnHash = ( mvnHashByPlatform.${stdenv.system} or (lib.warn "Missing mvnHash for ${stdenv.system}, using lib.fakeHash" lib.fakeHash) ); ln -s $out/dist $out/bin/dist ln -s $out/lib $out/bin/lib ln -s $out/share $out/bin/share mvnParameters = mvnParams; mvnDepsParameters = mvnParams; mvnFetchExtraArgs = { dontWrapQtApps = true; dontWrapGApps = true; preBuild = '' mkdir -p $out/.m2 mvn install:install-file \ -Dfile=${swt}/jars/swt.jar \ -DgroupId=org.eclipse.swt \ -DartifactId=${swtArtifactId} \ -Dpackaging=jar \ -Dversion=4.36 \ -Dmaven.repo.local=$out/.m2 ''; postInstall = '' rm -rf $out/.m2/repository/org/eclipse/swt find $out -type f -name "maven-metadata-*.xml" -delete ''; }; postFixup = '' wrapProgram $out/bin/tuxguitar \ "''${gappsWrapperArgs[@]}" \ --prefix PATH : ${ lib.makeBinPath [ jre which afterDepsSetup = '' mvn install:install-file \ -Dfile=${swt}/jars/swt.jar \ -DgroupId=org.eclipse.swt \ -DartifactId=${swtArtifactId} \ -Dpackaging=jar \ -Dversion=4.36 \ -Dmaven.repo.local=$mvnDeps/.m2 ''; nativeBuildInputs = [ makeBinaryWrapper jdk pkg-config ] } \ --prefix LD_LIBRARY_PATH : "$out/lib/:${ lib.makeLibraryPath [ ++ lib.optionals stdenv.hostPlatform.isLinux [ wrapGAppsHook3 ]; buildInputs = [ swt alsa-lib jack2 fluidsynth libpulseaudio lilv ] }" \ --prefix CLASSPATH : "${swt}/jars/swt.jar:$out/lib/tuxguitar.jar:$out/lib/itext.jar" ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib jack2 libpulseaudio suil qt5.qtbase ]; dontWrapQtApps = true; dontWrapGApps = true; installPhase = '' runHook preInstall cd ${buildDir} '' # macOS: The build creates tuxguitar-VERSION-macosx-swt-cocoa.app directly # This directory name already ends with .app and IS the app bundle + lib.optionalString stdenv.hostPlatform.isDarwin '' mkdir -p $out/Applications cp -r target/tuxguitar-9.99-SNAPSHOT-macosx-swt-cocoa.app $out/Applications/TuxGuitar.app # Fix the launch script to use the Nix JRE instead of bundled JRE substituteInPlace $out/Applications/TuxGuitar.app/Contents/MacOS/tuxguitar.sh \ --replace-fail 'JAVA="./jre/bin/java"' 'JAVA="${jre}/bin/java"' # Ensure the main executable has execute permissions chmod +x $out/Applications/TuxGuitar.app/Contents/MacOS/tuxguitar.sh # Symlink doesn't work. We have to create a wrapper script instead mkdir -p $out/bin makeWrapper "$out/Applications/TuxGuitar.app/Contents/MacOS/tuxguitar.sh" \ "$out/bin/tuxguitar" '' # Linux: Install traditional layout + lib.optionalString stdenv.hostPlatform.isLinux '' TUXGUITAR_DIR=target/tuxguitar-9.99-SNAPSHOT-linux-swt mkdir -p $out/{bin,lib} cp -r $TUXGUITAR_DIR $out/lib/tuxguitar ln -s $out/lib/tuxguitar/tuxguitar.sh $out/bin/tuxguitar mkdir -p $out/share ln -s $out/lib/tuxguitar/share/{applications,man,metainfo,mime,pixmaps} -t $out/share/ # See https://github.com/helge17/tuxguitar/issues/961 mkdir -p $out/share/templates/.source ln -s $out/lib/tuxguitar/share/templates/ $out/share/templates/.source/tuxguitar cp /build/source/desktop/build-scripts/common-resources/common-linux/share/templates/tuxguitar.desktop $out/share/templates/ '' + '' runHook postInstall ''; passthru.tests = { nixos = nixosTests.tuxguitar; postFixup = lib.optionalString stdenv.hostPlatform.isLinux '' wrapProgram $out/bin/tuxguitar ${lib.concatStringsSep " " wrapperArgs} ''; passthru = { tests.nixos = nixosTests.tuxguitar; }; meta = { Loading @@ -74,10 +227,12 @@ stdenv.mkDerivation (finalAttrs: { in Java-SWT. It can open GuitarPro, PowerTab and TablEdit files. ''; homepage = "https://github.com/helge17/tuxguitar"; sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; license = lib.licenses.lgpl21Plus; maintainers = with lib.maintainers; [ ardumont ]; platforms = [ "x86_64-linux" ]; maintainers = with lib.maintainers; [ ardumont mio ]; platforms = builtins.attrNames mvnHashByPlatform; mainProgram = "tuxguitar"; }; }) }