From 895a0fd18808eddeade7f1aab84962e5943956c6 Mon Sep 17 00:00:00 2001 From: l1npengtul Date: Tue, 14 Jan 2025 10:29:27 +0900 Subject: [PATCH] plugdata: 0.8.0 -> 0.9.1 --- pkgs/by-name/pl/plugdata/package.nix | 141 ++++++++++++++++----------- 1 file changed, 83 insertions(+), 58 deletions(-) diff --git a/pkgs/by-name/pl/plugdata/package.nix b/pkgs/by-name/pl/plugdata/package.nix index 1d6fa9ce4e240b..98e32c647430ca 100644 --- a/pkgs/by-name/pl/plugdata/package.nix +++ b/pkgs/by-name/pl/plugdata/package.nix @@ -4,7 +4,7 @@ fetchFromGitHub, ensureNewerSourcesForZipFilesHook, makeDesktopItem, - imagemagick, + copyDesktopItems, cmake, pkg-config, alsa-lib, @@ -14,33 +14,36 @@ curl, xorg, python3, + libsysprof-capture, + pcre2, + util-linux, + libselinux, + libsepol, + libthai, + libxkbcommon, + libdatrie, + libepoxy, + libsoup_2_4, + libGL, + libjack2, + lerc, + sqlite, + expat, makeWrapper, + nix-update-script, }: - let - # data copied from build system: https://build.opensuse.org/package/view_file/home:plugdata/plugdata/PlugData.desktop - desktopItem = makeDesktopItem { - name = "PlugData"; - desktopName = "PlugData"; - exec = "plugdata"; - icon = "plugdata_logo.png"; - comment = "Pure Data as a plugin, with a new GUI"; - type = "Application"; - categories = [ - "AudioVideo" - "Music" - ]; - }; + version = "0.9.1"; in -stdenv.mkDerivation (finalAttrs: { +stdenv.mkDerivation { pname = "plugdata"; - version = "0.8.0"; + inherit version; src = fetchFromGitHub { owner = "plugdata-team"; repo = "plugdata"; - rev = "v${finalAttrs.version}"; - hash = "sha256-qG9fH5C42jiHj03p/KM28jmDIkJkrQMe7fxg92Lg7B4="; + rev = "v${version}"; + hash = "sha256-dcggq455lZiwl1lps11fuKX6sx0A8UtFwFoiBJWtwFQ="; fetchSubmodules = true; }; @@ -48,10 +51,11 @@ stdenv.mkDerivation (finalAttrs: { cmake pkg-config ensureNewerSourcesForZipFilesHook - imagemagick + copyDesktopItems python3 makeWrapper ]; + buildInputs = [ alsa-lib curl @@ -63,71 +67,92 @@ stdenv.mkDerivation (finalAttrs: { xorg.libXinerama xorg.libXrender xorg.libXrandr + xorg.libXdmcp + xorg.libXtst + xorg.xvfb + libsysprof-capture + pcre2 + util-linux + libGL + libselinux + libsepol + libthai + libxkbcommon + libdatrie + libepoxy + libsoup_2_4 + lerc + libjack2 + expat + sqlite + ]; + + desktopItems = [ + (makeDesktopItem { + name = "PlugData"; + desktopName = "PlugData"; + exec = "plugdata"; + icon = "plugdata_logo"; + comment = "Pure Data as a plugin, with a new GUI"; + type = "Application"; + categories = [ + "AudioVideo" + "Music" + ]; + }) ]; - # Standard fix for JUCE programs: https://github.com/NixOS/nixpkgs/blob/5014727e62ae7b22fb1afc61d789ca6ad9170435/pkgs/applications/audio/bespokesynth/default.nix#L137 - env.NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isLinux "-rpath ${ - lib.makeLibraryPath ([ - xorg.libX11 - xorg.libXrandr - xorg.libXinerama - xorg.libXext - xorg.libXcursor - xorg.libXrender - ]) - }"; - dontPatchELF = true; # needed or nix will try to optimize the binary by removing "useless" rpath - postPatch = '' - # Don't build LV2 plugin (it hangs), and don't automatically install - sed -i 's/ LV2 / /g' CMakeLists.txt + NIX_LDFLAGS = ( + toString [ + "-lX11" + "-lXext" + "-lXcomposite" + "-lXcursor" + "-lXinerama" + "-lXrandr" + "-lXtst" + "-lXdmcp" + ] + ); + + preBuild = '' + # fix LV2 build + HOME=$(mktemp -d) ''; installPhase = '' runHook preInstall cd .. # build artifacts are placed inside the source directory for some reason - mkdir -p $out/{bin,lib/{clap,vst3}} + mkdir -p $out/bin $out/lib/clap $out/lib/lv2 $out/lib/vst3 cp Plugins/Standalone/plugdata $out/bin cp -r Plugins/CLAP/plugdata{,-fx}.clap $out/lib/clap cp -r Plugins/VST3/plugdata{,-fx}.vst3 $out/lib/vst3 + cp -r Plugins/LV2/plugdata{,-fx}.lv2 $out/lib/lv2 - icon_name="plugdata_logo.png" - icon_path="Resources/Icons/$icon_name" - - install -m644 -D "${desktopItem}"/share/applications/* -t $out/share/applications - for size in 16 24 32 48 64 128 256 512; do - mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps - convert -resize "$size"x"$size" "$icon_path" $out/share/icons/hicolor/"$size"x"$size"/apps/"$icon_name" - done + install -Dm444 $src/Resources/Icons/plugdata_logo_linux.png $out/share/pixmaps/plugdata_logo.png runHook postInstall ''; postInstall = '' # Ensure zenity is available, or it won't be able to open new files. - # These X11 libs get dlopen'd, they cause visual bugs when unavailable. wrapProgram $out/bin/plugdata \ --prefix PATH : '${ lib.makeBinPath [ zenity ] - }' \ - --prefix LD_LIBRARY_PATH : '${ - lib.makeLibraryPath [ - xorg.libXrandr - xorg.libXinerama - xorg.libXcursor - xorg.libXrender - ] }' ''; - meta = with lib; { + passthru.updateScript = nix-update-script { }; + + meta = { description = "Plugin wrapper around Pure Data to allow patching in a wide selection of DAWs"; mainProgram = "plugdata"; homepage = "https://plugdata.org/"; - license = licenses.gpl3; - platforms = platforms.linux; - maintainers = with maintainers; [ PowerUser64 ]; + license = lib.licenses.gpl3; + platforms = lib.platforms.linux; + maintainers = [ lib.maintainers.PowerUser64 lib.maintainers.l1npengtul ]; }; -}) +}