{ config, lib, modulesPath, pkgs, ... }: let bluetoothSupport = config.sbruder.full; in lib.mkIf config.sbruder.gui.enable { sound.enable = true; services.pipewire = { enable = true; pulse.enable = true; alsa = { enable = true; support32Bit = true; }; }; # not exposed in NixOS module environment.etc."pipewire/media-session.d/bluez-hardware.conf".source = lib.mkForce ((pkgs.formats.json { }).generate "bluez-hardware.conf" ( let defaults = (builtins.fromJSON (builtins.readFile "${modulesPath}/services/desktops/pipewire/bluez-hardware.conf.json")); in defaults // { "bluez5.features.device" = defaults."bluez5.features.device" ++ [ # Sennheiser HD 4.50BTNC has unreliable hardware volume control (too # frequent changes cause it to not apply the changes) and sometimes # crashes (disconnects and shuts off) after too many changes. { name = "HD 4.50BTNC"; no-features = [ "hw-volume" ]; } ]; } )); environment.systemPackages = with pkgs; [ pavucontrol pulseaudio # pacmd and pactl ]; hardware.bluetooth.enable = lib.mkDefault bluetoothSupport; services.blueman.enable = lib.mkDefault bluetoothSupport; }