Code change:
<ins> { lib , stdenv , fetchFromGitHub , meson , ninja , pkg-config , wine , boost , libxcb }: let # Derived from subprojects/bitsery.wrap bitsery = rec { version = "5.2.0"; src = fetchFromGitHub { owner = "fraillt"; repo = "bitsery"; rev = "v${version}"; sha256 = "132b0n0xlpcv97l6bhk9n57hg95pkhwqzvr9jkv57nmggn76s5q7"; }; }; # Derived from subprojects/function2.wrap function2 = rec { version = "4.1.0"; src = fetchFromGitHub { owner = "Naios"; repo = "function2"; rev = version; sha256 = "0abrz2as62725g212qswi35nsdlf5wrhcz78hm2qidbgqr9rkir5"; }; }; # Derived from subprojects/tomlplusplus.wrap tomlplusplus = rec { version = "2.1.0"; src = fetchFromGitHub { owner = "marzer"; repo = "tomlplusplus"; rev = "v${version}"; sha256 = "0fspinnpyk1c9ay0h3wl8d4bbm6aswlypnrw2c7pk2i4mh981b4b"; }; }; # Derived from vst3.wrap vst3 = rec { version = "e2fbb41f28a4b311f2fc7d28e9b4330eec1802b6"; src = fetchFromGitHub { owner = "robbert-vdh"; repo = "vst3sdk"; rev = version; fetchSubmodules = true; sha256 = "1fqpylkbljifwdw2z75agc0yxnhmv4b09fxs3rvlw1qmm5mwx0p2"; }; }; in stdenv.mkDerivation rec { pname = "yabridge"; version = "3.0.0"; # NOTE: Also update yabridgectl's cargoSha256 when this is updated src = fetchFromGitHub { owner = "robbert-vdh"; repo = pname; rev = version; sha256 = "0ha7jhnkd2i49q5rz2hp7sq6hv19bir99x51hs6nvvcf16hlf2bp"; }; # Unpack subproject sources postUnpack = ''( cd "$sourceRoot/subprojects" cp -R --no-preserve=mode,ownership ${bitsery.src} bitsery-${bitsery.version} tar -xf bitsery-patch-${bitsery.version}.tar.xz cp -R --no-preserve=mode,ownership ${function2.src} function2-${function2.version} tar -xf function2-patch-${function2.version}.tar.xz cp -R --no-preserve=mode,ownership ${tomlplusplus.src} tomlplusplus cp -R --no-preserve=mode,ownership ${vst3.src} vst3 )''; postPatch = '' patchShebangs . ''; nativeBuildInputs = [ meson ninja pkg-config wine ]; buildInputs = [ boost libxcb ]; # Meson is no longer able to pick up Boost automatically. # https://github.com/NixOS/nixpkgs/issues/86131 BOOST_INCLUDEDIR = "${lib.getDev boost}/include"; BOOST_LIBRARYDIR = "${lib.getLib boost}/lib"; mesonFlags = [ "--cross-file" "cross-wine.conf" # Requires CMake and is unnecessary "-Dtomlplusplus:GENERATE_CMAKE_CONFIG=disabled" # tomlplusplus examples and tests don't build with winegcc "-Dtomlplusplus:BUILD_EXAMPLES=disabled" "-Dtomlplusplus:BUILD_TESTS=disabled" ]; installPhase = '' mkdir -p "$out/bin" "$out/lib" cp yabridge-group.exe{,.so} "$out/bin" cp yabridge-host.exe{,.so} "$out/bin" cp libyabridge-vst2.so "$out/lib" cp libyabridge-vst3.so "$out/lib" ''; meta = with lib; { description = "Yet Another VST bridge, run Windows VST2 plugins under Linux"; homepage = "https://github.com/robbert-vdh/yabridge"; license = licenses.gpl3Plus; maintainers = with maintainers; [ metadark ]; platforms = [ "x86_64-linux" ]; }; } </ins>

Related discussion:
text: I saw that the package created by for yabridge 2.2.1 has not been merged yet, but please let me know if you want to update the yabridge and yabridgectl packages for yabridge 3.0.0 and need any help! One additional dependency is now a patched version of the VST3 SDK which is patched to compile under winegcc and with support for Meson. I'm not quite sure how Nix packaging handles those things.
Thanks, I have it building right now. I'm just testing out vst3 plugins right now :smile:
:cry: For some reason neither the vst2 or vst3 plugins are working, even though they get synced. I think it might be an issue with my system installed wine. I'll submit my changes anyway so other people can test it out.
So they are found but yabridge fails to load them? Which Wine are your derivations using?
You can try running manually to see if that is the issue. A plain call should print: And should print:
I'm able to sync them with yabridgectl, but they fail to load in Reaper. I'm using (currently version 6.0) to build yabridge, but I have a custom build of wine staging 6.0 currently installed. seems to be working fine:
That indeed seems to work as expected, that's great news! If you start REAPER with and then take a look at after trying to scan/load a plugin then you'll probably be able to figure out what's wrong very quickly.
Hmm, apparently the path to the VST host is too long :stuckouttongue:
Huh I can't think of from the top of my head what would be throwing such an exception. That message printed after comes from a try-catch around the entire plugin startup that catches and prints any . Windows (and thus Wine, because it has to be compatible haha) has a path name limit of 255 characters, but none of those paths sound like they should come close to that.
Yeah, sorry. It was just a problem with my home environment. I was trying to test it without installing because I lost the nixpkgs commit I used to generate my home-manager environment.