Code change:
<ins> diff --git a/tools/yabridgectl/src/config.rs b/tools/yabridgectl/src/config.rs index c1c89cf..d7bd822 100644 --- a/tools/yabridgectl/src/config.rs +++ b/tools/yabridgectl/src/config.rs @@ -23,6 +23,7 @@ use std::collections::{BTreeMap, BTreeSet}; use std::env; use std::fmt::Display; use std::fs; +use std::iter; use std::path::{Path, PathBuf}; use which::which; use xdg::BaseDirectories; @@ -216,34 +217,24 @@ impl Config { } } None => { -                // Search in the system library locations and in `~/.local/share/yabridge` if no -                // path was set explicitely. We'll also search through `/usr/local/lib` just in case -                // but since we advocate against installing yabridge there we won't list this path -                // in the error message when `libyabridge-vst2.so` can't be found. -                let system_path = Path::new("/usr/lib"); +                // Search through NIX_PROFILES & data home directory if no path was set explicitly. +                let nix_profiles = env::var("NIX_PROFILES"); let user_path = xdg_dirs.get_data_home(); -                let lib_directories = [ -                    system_path, -                    // Used on Debian based distros -                    Path::new("/usr/lib/x86_64-linux-gnu"), -                    // Used on Fedora -                    Path::new("/usr/lib64"), -                    Path::new("/usr/local/lib"), -                    Path::new("/usr/local/lib/x86_64-linux-gnu"), -                    Path::new("/usr/local/lib64"), -                    &user_path, -                ]; +                let lib_directories = nix_profiles.iter() +                    .flat_map(|profiles| profiles.split(' ') +                              .map(|profile| Path::new(profile).join("lib"))) +                    .chain(iter::once(user_path.clone())); + let mut candidates = lib_directories -                    .iter() .map(|directory| directory.join(LIBYABRIDGE_VST2_NAME)); + match candidates.find(|directory| directory.exists()) { Some(candidate) => candidate, _ => { return Err(anyhow!( -                            "Could not find '{}' in either '{}' or '{}'. You can override the  -                            default search path using 'yabridgectl set --path=<path>'.", +                            "Could not find '{}' through 'NIX_PROFILES' or '{}'. You can override the  +                             default search path using 'yabridgectl set --path=<path>'.", LIBYABRIDGE_VST2_NAME, -                            system_path.display(), user_path.display() )); } diff --git a/tools/yabridgectl/src/main.rs b/tools/yabridgectl/src/main.rs index 0db1bd4..221cdd0 100644 --- a/tools/yabridgectl/src/main.rs +++ b/tools/yabridgectl/src/main.rs @@ -102,7 +102,7 @@ fn main() -> Result<()> { .about("Path to the directory containing 'libyabridge-{vst2,vst3}.so'") .long_about( "Path to the directory containing 'libyabridge-{vst2,vst3}.so'. If this  -                             is not set, then yabridgectl will look in both '/usr/lib' and  +                             is not set, then yabridgectl will look through 'NIX_PROFILES' and  '~/.local/share/yabridge' by default.", ) .validator(validate_path) </ins>

Related discussion:
text: Project description Yet Another way to use Windows VST plugins on Linux. Yabridge seamlessly supports using both 32-bit and 64-bit Windows VST2 and VST3 plugins in a 64-bit Linux VST host as if they were native VST2 and VST3 plugins, with optional support for plugin groups to enable inter-plugin communication for VST2 plugins and quick startup times. Its modern concurrent architecture and focus on transparency allows yabridge to be both fast and highly compatible, while also staying easy to debug and maintain. If I understand correctly, this provides similar functionality to the airwave package. I think the big plus to this package though is that it emulates as if they were native which means the build process doesn't need to require the user to go to the steinberg site and download the VST SDK (as airwave currently does). I used this on Arch with Reaper and it was extremely easy to get going. I had a much easier time using yabridge than trying to get carla set up and running. There are multiple AUR packages for installing from source or just pulling in the binaries. I've tried to package this myself but it's just a bit beyond my means. I think that if someone is more familiar with packaging wine related binaries or compiling with meson from source this would be a quick win. homepage URL: source URL: license: GPL 3.0 platforms: linux
I probably won't have time today, but I can take a look at this later. I'm pretty familiar with the nixpkgs wine build, and I've worked with the ZynAddSubFx build to add support for the Zyn-Fusion ui.
Amazing. I was able to take your PR and get Upright Piano working with Reaper as well. Thank you so much for the quick turn around, I really appreciate it.
Hi! I don't use NixOS myself, but if it helps, there's one person in the yabridge Discord currently using yabridge's master branch with NixOS. And I've also ran into another Nix build definition on GitHub in the past (but that one's pretty outdated by now).
I've just released with a lot of important new features, fixes and improvements including the first ever Linux <-Windows VST3 plugin bridge.