one thing I also always do when setting up a new distro is installing intel-microcode, but I don’t know how to do it in NixOs yet nor I know whther it is already installed or not
But how have you installed sof-firmware, and what was your config for pipewire?
Then some steps to try:
First try Pipewire again with this:
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
wireplumber.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
Try running these commands systemctl --user restart pipewire.service and then systemctl --user restart pipewire-pulse.service
cleare this /run/user/1000/pulse after backing it up
To downgrade to an older LTS release. This will also become EOL in time, so it’s only a temporary solution; I suppose it will at least let you confirm if this is indeed a kernel issue, though it’s indeed not unlikely.
sof-firmware sounds like a more sustainable solution, you can explicitly install it with:
hardware.firmware = [ pkgs.sof-firmware ];
Although it is included in hardware.enableRedistributableFirmware, which is added to the default hardware config, and your dsp is found according to your logs, so that’s likely not it either
Set the Appropriate DSP Driver Mode: Some Intel audio devices require specifying the Digital Signal Processor (DSP) driver mode. Adding the following to your configuration.nix can help:
Install alsamixer. Ensure that the correct sound card is selected and that no channels (like Master, PCM, Speaker) are muted (look for “MM” versus “OO”) or set to low volumes.
Verify Audio Devices:
Run aplay -l to see if the sound card is correctly listed. You can also check your audio server’s sinks (for PulseAudio or PipeWire) using: pactl list sinks
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
wireplumber.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
and did it work after a restart?
If not can you try it with:
boot.extraModprobeConfig = ''
# Force legacy (HDA) mode instead of SOF
options snd-intel-dspcfg dsp_driver=1
# Probe only the first codec (likely your analog output)
options snd_hda_intel probe_mask=1
'';