From d06dc2f39b6b55c141459ace0e175e7377d4120d Mon Sep 17 00:00:00 2001 From: zuckerberg Date: Wed, 30 Jun 2021 16:36:58 -0400 Subject: [PATCH] pipewire --- common/pc/audio.nix | 57 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/common/pc/audio.nix b/common/pc/audio.nix index 41085ed..74c7764 100644 --- a/common/pc/audio.nix +++ b/common/pc/audio.nix @@ -4,26 +4,59 @@ let cfg = config.de; in { config = lib.mkIf cfg.enable { - # Audio - sound.enable = true; - # enable pulseaudio support for packages nixpkgs.config.pulseaudio = true; - # realtime pulseaudio + # realtime audio security.rtkit.enable = true; - hardware.pulseaudio = { + services.pipewire = { enable = true; - support32Bit = true; - package = pkgs.pulseaudioFull; # bt headset support + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; - # TODO: switch on connect isn't working for some reason (at least when in kde) - extraConfig = " - load-module module-switch-on-connect - load-module module-switch-on-connect ignore_virtual=no - "; + # 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