Skip to content

Commit 25b0c9c

Browse files
committed
nixos/hardware/audio: fix audio crackling and improve low-latency performance
- Disable Intel HDA power saving to prevent audio crackling/popping - Add PipeWire low-latency configuration with optimized quantum settings - Set default sample rate to 48000 Hz for better compatibility Resolves audio issues caused by aggressive power management and improves real-time audio performance for music production and gaming.
1 parent f2f5afb commit 25b0c9c

2 files changed

Lines changed: 71 additions & 1 deletion

File tree

modules/nixos/hardware/audio/default.nix

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ in
3737
user.extraGroups = [ "audio" ];
3838
};
3939

40+
# Disable audio power saving to prevent crackling
41+
boot.extraModprobeConfig = ''
42+
options snd_hda_intel power_save=0
43+
'';
44+
4045
security.rtkit.enable = true;
4146

4247
services = {
@@ -47,6 +52,14 @@ in
4752
jack.enable = true;
4853
pulse.enable = true;
4954
wireplumber.enable = true;
55+
extraConfig.pipewire."99-low-latency" = {
56+
context.properties = {
57+
default.clock.rate = 48000;
58+
default.clock.quantum = 512;
59+
default.clock.min-quantum = 256;
60+
default.clock.max-quantum = 8192;
61+
};
62+
};
5063
};
5164
pulseaudio.enable = mkForce false;
5265
};

modules/nixos/services/printing/default.nix

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ in
2323
enable = true;
2424
browsing = true;
2525

26-
drivers = with pkgs; [ brlaser ];
26+
# Use minimal drivers and rely on IPP Everywhere for modern printers
27+
drivers = with pkgs; [
28+
brlaser # Keep for legacy Brother printers if needed
29+
];
2730

2831
extraConf = ''
2932
LogLevel warn
@@ -43,6 +46,60 @@ in
4346
4447
# Timeout after cupsd exits if idle (applied only if cupsd runs on-demand - with -l)
4548
IdleExitTimeout 60
49+
50+
# Prefer IPP Everywhere for modern driverless printing
51+
# This helps reduce reliance on deprecated printer drivers
52+
CreateIPPPrinterQueues All
53+
54+
# Define missing policy limits to silence warnings
55+
<Policy default>
56+
<Limit Validate-Job Print-Job Print-URI Create-Job Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document>
57+
Require user @SYSTEM
58+
Order deny,allow
59+
</Limit>
60+
61+
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Add-Device CUPS-Delete-Device>
62+
AuthType Default
63+
Require user @SYSTEM
64+
Order deny,allow
65+
</Limit>
66+
67+
<Limit Cancel-Job CUPS-Authenticate-Job>
68+
Require user @OWNER @SYSTEM
69+
Order deny,allow
70+
</Limit>
71+
72+
<Limit All>
73+
Order deny,allow
74+
</Limit>
75+
76+
# Add limits for operations that were showing warnings
77+
<Limit Validate-Job>
78+
Require user @OWNER @SYSTEM
79+
Order deny,allow
80+
</Limit>
81+
82+
<Limit Cancel-Jobs>
83+
AuthType Default
84+
Require user @SYSTEM
85+
Order deny,allow
86+
</Limit>
87+
88+
<Limit Cancel-My-Jobs>
89+
Require user @OWNER @SYSTEM
90+
Order deny,allow
91+
</Limit>
92+
93+
<Limit Close-Job>
94+
Require user @OWNER @SYSTEM
95+
Order deny,allow
96+
</Limit>
97+
98+
<Limit CUPS-Get-Document>
99+
Require user @OWNER @SYSTEM
100+
Order deny,allow
101+
</Limit>
102+
</Policy>
46103
'';
47104
};
48105
};

0 commit comments

Comments
 (0)