Bluetooth A2DP Sink not showing up in Pulseaudio on NixOS

I am setting up a workstation with nixos, was all good so far and I can connect to my bluetooth headset (sony wh 1000 mx 5). But when I do, I dont get the output sink in pulseaudio. Here are some logs and my nixos configuration snippet. I did try pressing the volume control buttons. Thanks for any insight, I am clueless…

    journalctl | grep blue
    Sep 01 01:28:58 maskeLX pulseaudio[1566]: Module "module-bluetooth-policy" should be loaded once at most. Refusing to load.
    Sep 01 01:28:58 maskeLX pulseaudio[1566]: Module "module-bluetooth-discover" should be loaded once at most. Refusing to load.
    Sep 01 01:28:58 maskeLX pulseaudio[1566]: Failed to load module "module-bluez5-device" (argument: ""): initialization failed.
    Sep 01 01:28:58 maskeLX pulseaudio[1566]: Module "module-bluez5-discover" should be loaded once at most. Refusing to load.
    Sep 01 01:28:58 maskeLX pulseaudio[1566]: org.bluez.ProfileManager1.RegisterProfile() failed: org.bluez.Error.NotPermitted: UUID already registered
    Sep 01 01:45:02 maskeLX pulseaudio[1566]: org.bluez.BatteryProviderManager1.UnregisterBatteryProvider() Failed: org.freedesktop.DBus.Error.NoReply:Message recipient disconnected from message bus without replying
    Sep 01 01:45:54 maskeLX (uetoothd)[983]: ConfigurationDirectory 'bluetooth' already exists but the mode is different. (File system: 755 ConfigurationDirectoryMode: 555)
    Sep 01 01:45:54 maskeLX bluetoothd[983]: Bluetooth daemon 5.66
    Sep 01 01:45:54 maskeLX bluetoothd[983]: src/main.c:check_options() Unknown key Disable for group General in /etc/bluetooth/main.conf
    Sep 01 01:45:54 maskeLX bluetoothd[983]: src/main.c:check_options() Unknown key Enable for group General in /etc/bluetooth/main.conf
    Sep 01 01:45:54 maskeLX bluetoothd[983]: Starting SDP server
    Sep 01 01:45:54 maskeLX bluetoothd[983]: Bluetooth management interface 1.22 initialized
    Sep 01 01:45:54 maskeLX dbus-daemon[1053]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.3' (uid=0 pid=983 comm="/nix/store/hpyykcygpzvrvfg8hx1830f8lh0gp419-bluez-" label="kernel")
    Sep 01 01:45:54 maskeLX bluetoothd[983]: Battery Provider Manager created
    Sep 01 01:45:54 maskeLX bluetoothd[983]: Adv Monitor Manager created with supported features:0x00000000, enabled features:0x00000000, max number of supported monitors:32, max number of supported patterns:16
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/ldac
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSink/aptx_hd
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/aptx_hd
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSink/aptx
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/aptx
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSink/aac
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/aac
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSink/sbc
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/sbc
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSink/sbc_xq
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/sbc_xq
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/aptx_ll_1
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/aptx_ll_0
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_1
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_0
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/faststream
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/faststream_duplex
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSink/opus_05
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/opus_05
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSink/opus_05_duplex
    Sep 01 01:46:08 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.48 path=/MediaEndpoint/A2DPSource/opus_05_duplex
    Sep 01 01:46:09 maskeLX pulseaudio[1529]: Module "module-bluetooth-policy" should be loaded once at most. Refusing to load.
    Sep 01 01:46:09 maskeLX pulseaudio[1529]: Module "module-bluetooth-discover" should be loaded once at most. Refusing to load.
    Sep 01 01:46:09 maskeLX pulseaudio[1529]: Failed to load module "module-bluez5-device" (argument: ""): initialization failed.
    Sep 01 01:46:09 maskeLX pulseaudio[1529]: Module "module-bluez5-discover" should be loaded once at most. Refusing to load.
    Sep 01 01:46:09 maskeLX bluetoothd[983]: src/profile.c:register_profile() :1.51 tried to register 0000111f-0000-1000-8000-00805f9b34fb which is already registered
    Sep 01 01:46:09 maskeLX pulseaudio[1529]: org.bluez.ProfileManager1.RegisterProfile() failed: org.bluez.Error.NotPermitted: UUID already registered
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSource/ldac_hq
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSource/ldac_sq
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSource/ldac_mq
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSink/aptx_hd
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSource/aptx_hd
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSink/aptx
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSource/aptx
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSink/sbc
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSource/sbc
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSink/sbc_xq_453
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSource/sbc_xq_453
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSink/sbc_xq_512
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSource/sbc_xq_512
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSink/sbc_xq_552
    Sep 01 01:46:09 maskeLX bluetoothd[983]: Endpoint registered: sender=:1.51 path=/MediaEndpoint/A2DPSource/sbc_xq_552
    Sep 01 01:46:15 maskeLX bluetoothd[983]: src/profile.c:record_cb() Unable to get Hands-Free Voice gateway SDP record: Host is down
    pacmd list-cards | grep blue

    pacmd list-sinks | grep a2dp

    pacmd list-sinks | grep blue

    dmesg | grep blue

(/etc/nixos/configuration.nix)

    [...]
      #services.blueman.enable = true;
      environment.etc."greetd/environments".text = ''
        Hyprland
      '';
      sound.enable = true;
      hardware.pulseaudio = {
        enable = true;
        support32Bit = true;
        package = pkgs.pulseaudioFull;
        daemon.config = {
         default-sample-rate = 48000;
         default-fragments = 8;
         default-fragment-size-msec = 10;
        };
        extraConfig = "
          load-module module-switch-on-connect
          #load-module module-combine-sink # if you want a combined channel where all output devices are part of
          load-module module-bluetooth-policy
          load-module module-bluetooth-discover
          load-module module-bluez5-device
          load-module module-bluez5-discover
        ";
      };
      services.pipewire.enable = true;
      hardware.enableAllFirmware = true;
      hardware.bluetooth = {
        enable = true;
        settings = {
          General = {
            Enable = "Source,Sink,Control,Media"; # bugged?
        Disable = "Socket";
            ControllerMode = "dual";
            # FastConnectable = "true"; # increased power consumption
            Experimental = "true";
        DiscoverableTimeout = "0";
          };
          Policy = {
            AutoEnable = "true";
          };
        };
      };
      users.users.s = {
        isNormalUser = true;
        extraGroups = [ "wheel" "networkmanager" "audio" "bluetooth" ];
    [...]

I am running AMD Ryzen 5 5600X on MPG B550I GAMING EDGE WIFI

1 Like