diff --git a/modules/nixos/hardware/audio/default.nix b/modules/nixos/hardware/audio/default.nix index d754374..4804314 100644 --- a/modules/nixos/hardware/audio/default.nix +++ b/modules/nixos/hardware/audio/default.nix @@ -1,6 +1,7 @@ { ... }: { + boot.kernelParams = [ "preempt=full" ]; security.rtkit.enable = true; services.pipewire = { enable = true; @@ -13,13 +14,19 @@ # Reduce latency # https://wiki.nixos.org/wiki/PipeWire#Low-latency_setup - extraConfig = { + extraConfig = let + rate = 48000; + + # The default value in the wiki is 32 but might result in crackling audio. + # If you get audio crackling try increasing this value until it's gone. + quantum = 32; + in { pipewire."92-low-latency" = { "context.properties" = { - "default.clock.rate" = 48000; - "default.clock.quantum" = 32; - "default.clock.min-quantum" = 32; - "default.clock.max-quantum" = 32; + "default.clock.rate" = ${rate}; + "default.clock.quantum" = ${quantum}; + "default.clock.min-quantum" = ${quantum}; + "default.clock.max-quantum" = ${quantum}; }; }; @@ -31,18 +38,17 @@ } ]; "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"; + "pulse.min.req" = "${quantum}/${rate}"; + "pulse.default.req" = "${quantum}/${rate}"; + "pulse.max.req" = "${quantum}/${rate}"; + "pulse.min.quantum" = "${quantum}/${rate}"; + "pulse.max.quantum" = "${quantum}/${rate}"; }; "stream.properties" = { - "node.latency" = "32/48000"; + "node.latency" = "${quantum}/${rate}"; "resample.quality" = 1; }; }; }; }; } -