-
Notifications
You must be signed in to change notification settings - Fork 0
/
sound.nix
59 lines (56 loc) · 1.6 KB
/
sound.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{
config,
lib,
modulesPath,
options,
pkgs,
specialArgs,
}:
{
# Enable sound with pipewire and Bluetooth
hardware.pulseaudio.enable = false;
services.pipewire.enable = true;
services.pipewire.alsa.enable = true;
services.pipewire.pulse.enable = true;
services.pipewire.extraConfig.pipewire = {
"99-input-denoising.conf" = {
"context.modules" = [
{
"name" = "libpipewire-module-filter-chain";
"args" = {
"node.description" = "Noise Canceling source";
"media.name" = "Noise Canceling source";
"filter.graph" = {
"nodes" = [
{
"type" = "ladspa";
"name" = "rnnoise";
"plugin" = "${pkgs.rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so";
"label" = "noise_suppressor_stereo";
"control" = {
"VAD Threshold (%)" = 50.0;
};
}
];
};
"audio.position" = [
"FL"
"FR"
];
"capture.props" = {
"node.name" = "effect_input.rnnoise";
"node.passive" = true;
};
"playback.props" = {
"node.name" = "effect_output.rnnoise";
"media.class" = "Audio/Source";
};
};
}
];
};
};
# RealtimeKit service hands out realtime scheduling priority to user processes on demand.
# pipewire and wireplumber services use this to acquire realtime priority.
security.rtkit.enable = true;
}