65 lines
1.7 KiB
Nix
65 lines
1.7 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
...
|
|
}: let
|
|
inherit (lib) mkEnableOption mkIf;
|
|
|
|
cfg = config.module.pipewire;
|
|
in {
|
|
options = {
|
|
module.pipewire.enable = mkEnableOption "enable pipewire";
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
security.rtkit = {
|
|
enable = true;
|
|
args = ["--no-canary"];
|
|
};
|
|
services.pulseaudio.enable = false;
|
|
services.pipewire = {
|
|
enable = true;
|
|
alsa.enable = true;
|
|
pulse.enable = true;
|
|
# extraConfig.pipewire."92-low-latency" = {
|
|
# "context.properties" = {
|
|
# "default.clock.rate" = 48000;
|
|
# "default.clock.quantum" = 32;
|
|
# "default.clock.min-quantum" = 32;
|
|
# "default.clock.max-quantum" = 32;
|
|
# };
|
|
# };
|
|
wireplumber.extraConfig."10-alsa-vm" = {
|
|
"api.alsa.period-size" = 1024 / 2; # seems to fix random crackling
|
|
};
|
|
extraConfig.pipewire-pulse."93-auto-connect" = {
|
|
"pulse.cmd" = [
|
|
{
|
|
cmd = "load-module";
|
|
args = "module-switch-on-connect";
|
|
}
|
|
];
|
|
};
|
|
# extraConfig.pipewire-pulse."92-low-latency" = {
|
|
# "context.properties" = [
|
|
# {
|
|
# name = "libpipewire-module-protocol-pulse";
|
|
# args = {};
|
|
# }
|
|
# ];
|
|
# "pulse.properties" = {
|
|
# "pulse.min.req" = "32/48000";
|
|
# "pulse.default.req" = "32/48000";
|
|
# "pulse.max.req" = "32/48000";
|
|
# "pulse.min.quantum" = "32/48000";
|
|
# "pulse.max.quantum" = "32/48000";
|
|
# };
|
|
# "stream.properties" = {
|
|
# "node.latency" = "32/48000";
|
|
# "resample.quality" = 1;
|
|
# };
|
|
# };
|
|
};
|
|
};
|
|
}
|