alqueva/hosts/micronix/sound.nix

376 lines
10 KiB
Nix

_: {
services.pipewire = {
enable = true;
wireplumber = {
enable = true;
};
jack = {
enable = true;
};
pulse = {
enable = true;
};
alsa = {
enable = true;
support32Bit = true;
};
extraConfig.client.quality = {
"context" = {
"properties" = {
"mem.allow-mlock" = true;
"mem.mlock-all" = true;
"log.level" = 0;
};
"spa-libs" = {
"audio.convert.*" = "audioconvert/libspa-audioconvert";
"support.*" = "support/libspa-support";
};
"modules" = [
{ "name" = "libpipewire-module-protocol-native"; }
{ "name" = "libpipewire-module-client-node"; }
{ "name" = "libpipewire-module-client-device"; }
{ "name" = "libpipewire-module-adapter"; }
{ "name" = "libpipewire-module-metadata"; }
{ "name" = "libpipewire-module-session-manager"; }
];
};
"filter" = {
"properties" = {
"node.latency" = "2048/192000";
};
};
"stream" = {
"properties" = {
"node.latency" = "2048/192000";
"node.autoconnect" = true;
"resample.quality" = 14;
"channelmix.normalize" = true;
};
};
};
extraConfig.client-rt.quality = {
"context" = {
"properties" = {
"mem.allow-mlock" = true;
"mem.mlock-all" = true;
"log.level" = 0;
};
"spa-libs" = {
"audio.convert.*" = "audioconvert/libspa-audioconvert";
"support.*" = "support/libspa-support";
};
"modules" = [
{
"name" = "libpipewire-module-rt";
"args" = {
"rt.prio" = 80;
"rt.time.soft" = -1;
"rt.time.hard" = -1;
};
"flags" = [
"ifexists"
"nofail"
];
}
{ "name" = "libpipewire-module-protocol-native"; }
{ "name" = "libpipewire-module-client-node"; }
{ "name" = "libpipewire-module-client-device"; }
{ "name" = "libpipewire-module-adapter"; }
{ "name" = "libpipewire-module-metadata"; }
{ "name" = "libpipewire-module-session-manager"; }
];
};
"filter" = {
"properties" = {
"node.latency" = "2048/192000";
};
};
"stream" = {
"properties" = {
"node.latency" = "2048/192000";
"node.autoconnect" = true;
"resample.quality" = 14;
"channelmix.normalize" = true;
};
"rules" = [
{
"matches" = [
{
"application.name" = "pw-cat";
"node.name" = "~Google Chrome$";
}
];
"actions" = {
"update-props" = {
"node.latency" = "512/192000";
};
};
}
];
};
"alsa" = {
"properties" = {
"alsa.volume-method" = "cubic";
};
"rules" = [
{
"matches" = [
{
"application.process.binary" = "resolve";
}
];
"actions" = {
"update-props" = {
"alsa.buffer-bytes" = 131072;
};
};
}
];
};
};
extraConfig.pipewire-pulse.quality = {
"context" = {
"properties" = {
"mem.allow-mlock" = true;
"mem.mlock-all" = true;
};
"spa-libs" = {
"audio.convert.*" = "audioconvert/libspa-audioconvert";
"support.*" = "support/libspa-support";
};
"modules" = [
{
"name" = "libpipewire-module-rt";
"args" = {
"nice.level" = -11;
"rt.prio" = 80;
"rt.time.soft" = -1;
"rt.time.hard" = -1;
"uclamp.min" = 0;
"uclamp.max" = 2048;
};
"flags" = [
"ifexists"
"nofail"
];
}
{
"name" = "libpipewire-module-protocol-native";
}
{
"name" = "libpipewire-module-client-node";
}
{
"name" = "libpipewire-module-adapter";
}
{
"name" = "libpipewire-module-metadata";
}
{
"name" = "libpipewire-module-protocol-pulse";
"args" = { };
}
];
"exec" = [
{
"path" = "pactl";
"args" = "load-module module-always-sink";
}
];
"pulse" = {
"cmd" = [
{
"cmd" = "load-module";
"args" = "module-always-sink";
"flags" = [ ];
}
{
"cmd" = "load-module";
"args" = "module-device-manager";
"flags" = [ ];
}
{
"cmd" = "load-module";
"args" = "module-device-restore";
"flags" = [ ];
}
{
"cmd" = "load-module";
"args" = "module-stream-restore";
"flags" = [ ];
}
{
"cmd" = "load-module";
"args" = "module-switch-on-connect";
}
{
"cmd" = "load-module";
"args" = "module-gsettings";
"flags" = [ "nofail" ];
}
];
"properties" = {
"server.address" = [
"unix =native"
];
"server.dbus-name" = "org.pulseaudio.Server";
"pulse.allow-module-loading" = true;
"pulse.default.format" = "F32";
};
};
"stream.properties" = {
"node.autoconnect" = true;
"resample.quality" = 14;
"channelmix.normalize" = true;
};
};
};
extraConfig.pipewire.quality = {
"context" = {
"properties" = {
"library.name.system" = "support/libspa-support";
"context.data-loop.library.name.system" = "support/libspa-support";
"support.dbus" = true;
"link.max-buffers" = 64;
"mem.allow-mlock" = true;
"mem.mlock-all" = true;
"clock.power-of-two-quantum" = true;
"cpu.zero.denormals" = true;
"loop.rt-prio" = -1;
"loop.class" = "data.rt";
"context.num-data-loops" = -1;
"context.data-loops" = [
{
"loop.rt-prio" = -1;
"loop.class" = [
"data.rt"
"audio.rt"
];
"library.name.system" = "support/libspa-support";
"thread.name" = "data-loop.0";
}
];
"core.daemon" = true;
"core.name" = "pipewire-0";
"default.clock.rate" = 192000;
"default.clock.allowed-rates" = [ 192000 ];
"module.x11.bell" = true;
"module.access" = true;
"module.jackdbus-detect" = true;
};
"properties.rules" = [
{
"matches" = [
{
"cpu.vm.name" = "!null";
}
];
"actions" = {
"update-props" = {
"default.clock.min-quantum" = 2048;
};
};
}
];
"spa-libs" = {
"audio.convert.*" = "audioconvert/libspa-audioconvert";
"avb.*" = "avb/libspa-avb";
"api.alsa.*" = "alsa/libspa-alsa";
"api.v4l2.*" = "v4l2/libspa-v4l2";
"api.libcamera.*" = "libcamera/libspa-libcamera";
"api.bluez5.*" = "bluez5/libspa-bluez5";
"api.vulkan.*" = "vulkan/libspa-vulkan";
"api.jack.*" = "jack/libspa-jack";
"support.*" = "support/libspa-support";
"video.convert.*" = "videoconvert/libspa-videoconvert";
};
"modules" = [
{
"name" = "libpipewire-module-rt";
"args" = {
"nice.level" = -11;
"rt.prio" = 80;
"rt.time.soft" = -1;
"rt.time.hard" = -1;
"uclamp.min" = 0;
"uclamp.max" = 2048;
};
"flags" = [
"ifexists"
"nofail"
];
}
{
"name" = "libpipewire-module-protocol-native";
"args" = {
"sockets" = [
{
"name" = "pipewire-0";
}
{
"name" = "pipewire-0-manager";
}
];
};
}
{
"name" = "libpipewire-module-portal";
"flags" = [
"ifexists"
"nofail"
];
}
{
"name" = "libpipewire-module-access";
"args" = {
"access.socket" = {
"pipewire-0" = "default";
"pipewire-0-manager" = "unrestricted";
};
};
"condition" = [
{
"module.access" = true;
}
];
}
{
"name" = "libpipewire-module-x11-bell";
"args" = {
"sink.name" = "@DEFAULT_SINK@";
"sample.name" = "bell-window-system";
"x11.display" = null;
"x11.xauthority" = null;
};
"flags" = [
"ifexists"
"nofail"
];
"condition" = [
{
"module.x11.bell" = true;
}
];
}
{
"name" = "libpipewire-module-jackdbus-detect";
"args" = {
"source.props" = { };
"sink.props" = { };
};
"flags" = [
"ifexists"
"nofail"
];
"condition" = [
{
"module.jackdbus-detect" = true;
}
];
}
];
};
};
};
}