66 lines
1.9 KiB
Nix
66 lines
1.9 KiB
Nix
{ lib, config, pkgs, ... }:
|
|
|
|
let
|
|
cfg = config.de;
|
|
in {
|
|
config = lib.mkIf cfg.enable {
|
|
# enable pulseaudio support for packages
|
|
nixpkgs.config.pulseaudio = true;
|
|
|
|
# realtime audio
|
|
security.rtkit.enable = true;
|
|
|
|
services.pipewire = {
|
|
enable = true;
|
|
alsa.enable = true;
|
|
alsa.support32Bit = true;
|
|
pulse.enable = true;
|
|
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;
|
|
|
|
config.pipewire = {
|
|
"context.objects" = [
|
|
{
|
|
# A default dummy driver. This handles nodes marked with the "node.always-driver"
|
|
# properyty when no other driver is currently active. JACK clients need this.
|
|
factory = "spa-node-factory";
|
|
args = {
|
|
"factory.name" = "support.node.driver";
|
|
"node.name" = "Dummy-Driver";
|
|
"priority.driver" = 8000;
|
|
};
|
|
}
|
|
{
|
|
factory = "adapter";
|
|
args = {
|
|
"factory.name" = "support.null-audio-sink";
|
|
"node.name" = "Microphone-Proxy";
|
|
"node.description" = "Microphone";
|
|
"media.class" = "Audio/Source/Virtual";
|
|
"audio.position" = "MONO";
|
|
};
|
|
}
|
|
{
|
|
factory = "adapter";
|
|
args = {
|
|
"factory.name" = "support.null-audio-sink";
|
|
"node.name" = "Main-Output-Proxy";
|
|
"node.description" = "Main Output";
|
|
"media.class" = "Audio/Sink";
|
|
"audio.position" = "FL,FR";
|
|
};
|
|
}
|
|
];
|
|
};
|
|
};
|
|
|
|
users.users.googlebot.extraGroups = [ "audio" ];
|
|
|
|
# bt headset support
|
|
hardware.bluetooth.enable = true;
|
|
};
|
|
}
|