https://github.com/the-argus/audio-plugins-nix
A nix flake providing a home-manager module for VST emulation with yabridge, and a set of packaged audio plugins.
https://github.com/the-argus/audio-plugins-nix
Last synced: 3 months ago
JSON representation
A nix flake providing a home-manager module for VST emulation with yabridge, and a set of packaged audio plugins.
- Host: GitHub
- URL: https://github.com/the-argus/audio-plugins-nix
- Owner: the-argus
- License: gpl-3.0
- Created: 2022-07-25T17:56:06.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-07-24T14:23:08.000Z (10 months ago)
- Last Synced: 2024-07-24T18:24:52.235Z (10 months ago)
- Language: Nix
- Size: 157 KB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# audio-plugins-nix
A nix flake providing a home-manager module for VST emulation with yabridge, and
a set of packaged audio plugins.## WARNING
These are very proprietary plugins that I'm packaging, and they don't typically
allow hosting the plugins yourself. As a result, the download source is often an
unstable link. You may encounter incorrect hash errors for certain plugins, or
find that others fail to download altogether (Ferric-TDS is, horrifically,
downloaded from a *google drive* link).## example usage
``flake.nix``:
```nix
{
# add as an input
inputs.audio-plugins.url = "github:the-argus/audio-plugins-nix";
# add audio-plugins to flake inputs like so
outputs = {self, nixpkgs, home-manager, audio-plugins, ... }@inputs:
{
# and finally add the module to home-manager imports, and mpkgs to extraSpecialArgs:
homeConfigurations.${username} = home-manager.lib.homeManagerConfiguration {
configuration = {pkgs, ...}: {
imports = [ audio-plugins.homeManagerModules.${pkgs.system} ];
};
extraSpecialArgs = inputs // {
mpkgs = audio-plugins.mpkgSets.${pkgs.system};
};
};
};
}
```## configuration examples
Minimal home manager configuration example:
```nix
{ pkgs, mpkgs, ...}:
{
programs.yabridge = {
enable = true;
plugins = with mpkgs; [
effects.ferric-tds
synths.ct0w0
];nativePlugins = with mpkgs.native; [
effects.fire-bin
synths.dexed
];
};
}
```MAXIMUM configuration example (where ``unstable`` is an import of nixpkgs-unstable):
```nix
{ pkgs, unstable, mpkgs, ... }:
{
programs.yabridge = {
enable = true;
package = unstable.yabridge;
ctlPackage = unstable.yabridgectl;
plugins = with mpkgs; [
effects.ferric-tds
]
++ mpkgs.sets.heckscaper
++ mpkgs.sets.TAL;nativePlugins =
let
# plugins packaged in audio-plugins-nix
internal = with mpkgs.native; [
effects.fire-bin
synths.dexed
];
# plugins packaged in nixpkgs already
unwrapped = with unstable; [
ChowPhaser ChowKick ChowCentaur CHOWTapeModel
airwindows-lv2 odin2 tunefish
];
# these plugins use mpkgs.lib.wrapPluginPath to only copy
# the folder containing the vst binary, and exclude things
# like the standalone version.
wrapped = with mpkgs.lib; [
(wrapPluginPath pkgs.zam-plugins "lib/vst")
(wrapPluginPath pkgs.surge-XT "lib/vst3")
(wrapPluginPath pkgs.oxefmsynth "lib/lxvst")
(wrapPluginPath unstable.cardinal "lib")
];
in
internal ++ wrapped ++ unwrapped
# all the TAL plugins that run natively on linux
++ mpkgs.sets.native.TAL;extraPath = "${homeDirectory}/.wine/drive_c/yabridge";
};
}
```**extraPath is an additional, optionally out-of-store path, and will only take
effect if you run** ``yabridgectl sync`` **after building your HM configuration.
It is intended to point to a folder in your users wine prefix where you install
plugins that cannot be packaged with nix. Another example might be
/home/user/.wine/drive_c/Program Files/Steinberg.**## Bringing emulated VSTs into your DAW
Add the path previously specified in ``extraPath`` to your DAWs VST plugin
search path, as well as ~/.vst, or the directory you specified with
programs.yabridge.vstDirectory.