Creating a standardized audio production environment with flakes

My answer may not cover all your questions, but just note that depending on the way you install softwares (system-wide, with nix-env…), the audio plugins will be installed in different places (which makes sense as a user without root access cannot modify /run/current-system), for instance here Calf package does not set `LV2_PATH` · Issue #45663 · NixOS/nixpkgs · GitHub people use this to configure the environment variable:

environment.variables = {
      DSSI_PATH   = "$HOME/.dssi:$HOME/.nix-profile/lib/dssi:/run/current-system/sw/lib/dssi";
      LADSPA_PATH = "$HOME/.ladspa:$HOME/.nix-profile/lib/ladspa:/run/current-system/sw/lib/ladspa";
      LV2_PATH    = "$HOME/.lv2:$HOME/.nix-profile/lib/lv2:/run/current-system/sw/lib/lv2";
      LXVST_PATH  = "$HOME/.lxvst:$HOME/.nix-profile/lib/lxvst:/run/current-system/sw/lib/lxvst";
      VST_PATH    = "$HOME/.vst:$HOME/.nix-profile/lib/vst:/run/current-system/sw/lib/vst";
    };

So a solution it to configure the environment variables like above (you can even add a specific package to this list in case the above list of path is not exhaustive by prepending ${yourprogram}/lib/lv2). You can configure the variables in many different ways, but a first solution is to use a wrapper script (see makeWrapper) to set this before starting your software, or use home-manager to configure it more easily on the whole user session (note that home manager also provides cool functionalities to run systemd user “daemons” that may be practical to start pipewire or alike). You can also write a file and ask the user to source it in bashrc…

1 Like