Audio production
VSTs
VSTs go in either ~/.vst or ~/.vst3If using VSTs, they may depend on libraries that are not available in the Renoise path. This will show up in the logs as an error along the lines of
Vst3Plugs: Failed to load module: dlopen failed. libSM.so.6: cannot open shared object file: No such file or directory
To solve this, you'll need to turn Renoise into a wrapper that adds the missing libraries to the LD_LIBRARY_PATH:
let
vstLibs = with pkgs; [
# your libraries go here
];
renoiseWithVsts = with pkgs;
renoise.overrideAttrs (prev: {
nativeBuildInputs = [ makeWrapper ];
# keep the existing postFixup script as well
postFixup = prev.postFixup + ''
wrapProgram $out/bin/renoise \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath vstLibs}"
'';
});
in
environment.systemPackages = [
renoiseWithVsts
# your other packages
];
To figure out what libraries you need, run ldd path/to/your/vst.so
; ignore the warning about not having executable permissions if you get it. You'll get something like
libasound.so.2 => not found libSM.so.6 => not found libICE.so.6 => not found libX11.so.6 => not found libXext.so.6 => not found libGL.so.1 => not found libfreetype.so.6 => not found libstdc++.so.6 => not found
Anything that already shows up in ldd $(which renoise)
will already be loaded by Renoise itself. In this case, we can see we need libSM, libICE, libXext, libGL, and libfreetype. Using nix-index, we can find the corresponding packages are
vstLibs = with pkgs; [
xorg.libSM
xorg.libICE
xorg.libXext
freetype
libGL
];