nixos-config/modules/pipewire.nix

40 lines
1.2 KiB
Nix

{ 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;
}