Bruno BELANYI
4b6f6423db
Do not enable ALSA when using pipewire. Ensure that both pulseaudio and pipewire are not configured at the same time.
68 lines
1.3 KiB
Nix
68 lines
1.3 KiB
Nix
{ config, lib, ... }:
|
|
let
|
|
cfg = config.my.hardware.sound;
|
|
in
|
|
{
|
|
options.my.hardware.sound = with lib; {
|
|
pipewire = {
|
|
enable = mkEnableOption "pipewire configuration";
|
|
};
|
|
|
|
pulse = {
|
|
enable = mkEnableOption "pulseaudio configuration";
|
|
};
|
|
};
|
|
|
|
config = (lib.mkMerge [
|
|
# Sanity check
|
|
{
|
|
assertions = [
|
|
{
|
|
assertion = builtins.all (lib.id) [
|
|
(cfg.pipewire.enable -> !cfg.pulse.enable)
|
|
(cfg.pulse.enable -> !cfg.pipewire.enable)
|
|
];
|
|
message = ''
|
|
`config.my.hardware.sound.pipewire.enable` and
|
|
`config.my.hardware.sound.pulse.enable` are incompatible.
|
|
'';
|
|
}
|
|
];
|
|
}
|
|
|
|
(lib.mkIf cfg.pipewire.enable {
|
|
# RealtimeKit is recommended
|
|
security.rtkit.enable = true;
|
|
|
|
services.pipewire = {
|
|
enable = true;
|
|
|
|
alsa = {
|
|
enable = true;
|
|
support32Bit = true;
|
|
};
|
|
|
|
pulse = {
|
|
enable = true;
|
|
};
|
|
|
|
jack = {
|
|
enable = true;
|
|
};
|
|
|
|
media-session = {
|
|
enable = true;
|
|
};
|
|
};
|
|
})
|
|
|
|
# Pulseaudio setup
|
|
(lib.mkIf cfg.pulse.enable {
|
|
# ALSA
|
|
sound.enable = true;
|
|
|
|
hardware.pulseaudio.enable = true;
|
|
})
|
|
]);
|
|
}
|