diff --git a/homes/aarch64-linux/evanreichard@lin-va-mbp-personal/default.nix b/homes/aarch64-linux/evanreichard@lin-va-mbp-personal/default.nix index cef4b2c..076b41f 100755 --- a/homes/aarch64-linux/evanreichard@lin-va-mbp-personal/default.nix +++ b/homes/aarch64-linux/evanreichard@lin-va-mbp-personal/default.nix @@ -58,6 +58,7 @@ in home.packages = with pkgs; [ orca-slicer + reichard.tuxguitar ]; dconf = { diff --git a/packages/tuxguitar/default.nix b/packages/tuxguitar/default.nix new file mode 100644 index 0000000..e3e6cba --- /dev/null +++ b/packages/tuxguitar/default.nix @@ -0,0 +1,114 @@ +{ lib +, stdenv +, maven +, fetchFromGitHub +, jdk17 +, jre +, swt +, makeWrapper +, wrapGAppsHook3 +, pkg-config +, alsa-lib +, jack2 +, fluidsynth +, libpulseaudio +, lilv +, suil +, qt5 +, which +}: + +maven.buildMavenPackage rec { + pname = "tuxguitar"; + version = "2.0.1"; + + src = fetchFromGitHub { + owner = "helge17"; + repo = "tuxguitar"; + rev = version; + hash = "sha256-USdYj8ebosXkiZpDqyN5J+g1kjyWm225iQlx/szXmLA="; + }; + + mvnHash = "sha256-XTODH8SG7iwhACJT4AbIokORUe00r6theV18TEXbrIs="; + + doCheck = false; + + mvnJdk = jdk17; + + nativeBuildInputs = [ + makeWrapper + pkg-config + wrapGAppsHook3 + ]; + + buildInputs = [ + alsa-lib + fluidsynth + jack2 + lilv + qt5.qtbase + suil + ]; + + mvnFetchExtraArgs = { + inherit buildInputs; + dontWrapQtApps = true; + }; + + postPatch = '' + substituteInPlace desktop/build-scripts/native-modules/tuxguitar-synth-lv2-linux/pom.xml \ + --replace-fail /usr/include/lilv-0/lilv ${lib.getDev lilv}/include/lilv-0/lilv \ + --replace-fail /usr/include/suil-0/suil ${lib.getDev suil}/include/suil-0/suil + + if [[ "$name" == maven-deps-* ]]; then + mvn install:install-file \ + -Dfile=${swt}/jars/swt.jar \ + -DgroupId=org.eclipse.swt \ + -DartifactId=org.eclipse.swt.gtk.linux \ + -Dpackaging=jar \ + -Dversion=4.36 \ + -Dmaven.repo.local=$out/.m2 + fi + ''; + + mvnParameters = "-f desktop/build-scripts/tuxguitar-linux-swt/pom.xml verify -P native-modules"; + + dontWrapGApps = true; + dontWrapQtApps = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp -r desktop/build-scripts/tuxguitar-linux-swt/target/tuxguitar-*-linux-swt/{dist,lib,share,tuxguitar.sh} $out/ + ln -sf ${swt}/jars/swt.jar $out/lib/swt.jar + ln -s ../tuxguitar.sh $out/bin/tuxguitar + + runHook postInstall + ''; + + postFixup = '' + wrapProgram $out/tuxguitar.sh \ + "''${gappsWrapperArgs[@]}" \ + --prefix PATH : ${lib.makeBinPath [ jre which ]} \ + --prefix LD_LIBRARY_PATH : "$out/lib:${lib.makeLibraryPath [ + swt + alsa-lib + fluidsynth + jack2 + libpulseaudio + lilv + qt5.qtbase + suil + ]}" + ''; + + meta = { + description = "Multitrack guitar tablature editor"; + homepage = "https://github.com/helge17/tuxguitar"; + license = lib.licenses.lgpl2; + maintainers = with lib.maintainers; [ evanreichard ]; + mainProgram = "tuxguitar"; + platforms = lib.platforms.linux; + }; +}