aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/tools/audio/yabridgectl/libyabridge-from-nix-profiles.patch
diff options
context:
space:
mode:
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.patch70
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)