From 16f230730a3635513bd470e0eb901cb8c82c80cd Mon Sep 17 00:00:00 2001 From: isabel Date: Thu, 9 Jul 2026 13:42:36 +0100 Subject: [PATCH] nixos/hardware/media/sound: lossless / bluetooth take 2 --- modules/nixos/hardware/media/sound.nix | 73 ++++++++++++++++++++------ 1 file changed, 57 insertions(+), 16 deletions(-) diff --git a/modules/nixos/hardware/media/sound.nix b/modules/nixos/hardware/media/sound.nix index 03f2922d..a5d7ca65 100644 --- a/modules/nixos/hardware/media/sound.nix +++ b/modules/nixos/hardware/media/sound.nix @@ -30,30 +30,71 @@ in extraLadspaPackages = [ pkgs.rnnoise-plugin ]; extraConfig.pipewire = { + # + "10-defaults" = { + "context.properties" = { + "core.daemon" = true; + "settings.check-quantum" = true; + }; + }; + "10-loopback" = { "context.modules" = [ { - "node.description" = "playback loop"; - "audio.position" = [ - "FL" - "FR" - ]; - - "capture.props" = { - "node.name" = "playback_sink"; - "node.description" = "playback-sink"; - "media.class" = "Audio/Sink"; - }; + name = "libpipewire-module-loopback"; + args = { + "node.description" = "playback loop"; + "audio.position" = [ + "FL" + "FR" + ]; - "playback.props" = { - "node.name" = "playback_sink.output"; - "node.description" = "playback-sink-output"; - "media.class" = "Audio/Source"; - "node.passive" = true; + "capture.props" = { + "node.name" = "playback_sink"; + "node.description" = "playback-sink"; + "media.class" = "Audio/Sink"; + }; + + "playback.props" = { + "node.name" = "playback_sink.output"; + "node.description" = "playback-sink-output"; + "media.class" = "Audio/Source"; + "node.passive" = true; + }; }; } ]; }; + + "90-low-latency" = { + "context.properties" = { + "default.clock.rate" = 48000; + "default.clock.quantum" = 32; + "default.clock.min-quantum" = 32; + "default.clock.max-quantum" = 32; + }; + }; + }; + + wireplumber.extraConfig = { + "10-bluez" = { + "monitor.bluez.properties" = { + "bluez5.enable-sbc-xq" = true; + "bluez5.enable-msbc" = true; + "bluez5.enable-hw-volume" = true; + "bluez5.a2dp.ldac.quality" = "hq"; + "bluez5.roles" = [ + "a2dp_sink" + "a2dp_source" + "bap_sink" + "bap_source" + "hfp_hf" + "hfp_ag" + "hsp_hs" + "hsp_ag" + ]; + }; + }; }; }; }; -- 2.51.2