diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/tools/audio/yabridgectl/libyabridge-from-nix-profiles.patch')
-rw-r--r-- | infra/libkookie/nixpkgs/pkgs/tools/audio/yabridgectl/libyabridge-from-nix-profiles.patch | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/tools/audio/yabridgectl/libyabridge-from-nix-profiles.patch b/infra/libkookie/nixpkgs/pkgs/tools/audio/yabridgectl/libyabridge-from-nix-profiles.patch new file mode 100644 index 000000000000..e17cda6ada33 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/tools/audio/yabridgectl/libyabridge-from-nix-profiles.patch @@ -0,0 +1,70 @@ +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) |