inputs: { pkgs, lib, ... }: { imports = [ "${inputs.musnix}" ]; musnix.enable = true; users.extraUsers.minijackson = { packages = with pkgs.unstable; [ latencytop # helvum ardour bespokesynth cardinal fluidsynth giada hydrogen lmms musescore qjackctl qsampler qsynth show-midi soundfont-fluid # plugins aeolus talentedhack CHOWTapeModel aether-lv2 airwindows-lv2 calf carla # distrho drumgizmo # fmsynth guitarix # helm # infamousPlugins LibreArp lsp-plugins ninjas2 noise-repellent odin2 surge-XT sfizz wolf-shaper x42-avldrums x42-gmsynth x42-plugins # yabridge # yabridgectl yoshimi zynaddsubfx # Soundfonts soundfont-ydp-grand soundfont-fluid ]; extraGroups = [ "audio" ]; }; environment.pathsToLink = [ "/share/soundfonts" ]; # TODO: upstream adding user-specific packages environment.variables = { DSSI_PATH = lib.mkForce "$HOME/.dssi:$HOME/.nix-profile/lib/dssi:/run/current-system/sw/lib/dssi:/etc/profiles/per-user/$USER/lib/dssi"; LADSPA_PATH = lib.mkForce "$HOME/.ladspa:$HOME/.nix-profile/lib/ladspa:/run/current-system/sw/lib/ladspa:/etc/profiles/per-user/$USER/lib/ladspa"; LV2_PATH = lib.mkForce "$HOME/.lv2:$HOME/.nix-profile/lib/lv2:/run/current-system/sw/lib/lv2:/etc/profiles/per-user/$USER/lib/lv2"; LXVST_PATH = lib.mkForce "$HOME/.lxvst:$HOME/.nix-profile/lib/lxvst:/run/current-system/sw/lib/lxvst:/etc/profiles/per-user/$USER/lib/lxvst"; VST_PATH = lib.mkForce "$HOME/.vst:$HOME/.nix-profile/lib/vst:/run/current-system/sw/lib/vst:/etc/profiles/per-user/$USER/lib/vst"; VST3_PATH = lib.mkForce "$HOME/.vst3:$HOME/.nix-profile/lib/vst3:/run/current-system/sw/lib/vst3:/etc/profiles/per-user/$USER/lib/vst3"; }; # https://wiki.nixos.org/wiki/PipeWire#Low-latency_setup services.pipewire.extraConfig = { pipewire."92-low-latency" = { "context.properties" = { "default.clock.rate" = 48000; "default.clock.quantum" = 128; "default.clock.min-quantum" = 128; "default.clock.max-quantum" = 128; }; }; pipewire-pulse."92-low-latency" = { "context.properties" = [ { name = "libpipewire-module-protocol-pulse"; args = { }; } ]; "pulse.properties" = { "pulse.min.req" = "128/48000"; "pulse.default.req" = "128/48000"; "pulse.max.req" = "128/48000"; "pulse.min.quantum" = "128/48000"; "pulse.max.quantum" = "128/48000"; }; "stream.properties" = { "node.latency" = "128/48000"; "resample.quality" = 1; }; }; }; }