{ config, lib, pkgs, ... }: let cfg = config.os.core.audio; in { options.os.core.audio = { enable = lib.mkEnableOption "audio support"; disable-devices.enable = lib.mkEnableOption "disables some random devices cluttering up"; }; config = lib.mkMerge [ (lib.mkIf cfg.enable { services = { pipewire = { enable = true; audio.enable = true; pulse.enable = true; alsa.enable = true; alsa.support32Bit = true; jack.enable = true; wireplumber.enable = true; }; playerctld.enable = true; spotifyd.enable = true; }; security.rtkit.enable = true; hardware.enableAllFirmware = true; environment.systemPackages = with pkgs; [ helvum alsa-utils ]; }) (lib.mkIf cfg.disable-devices.enable { services.pipewire.wireplumber.extraConfig = { "10-keep-hyperx-alive"."monitor.alsa.rules" = [ { matches = [ {"device.description" = "~HyperX*";} ]; actions.update-props = { "device.disabled" = false; "session.suspend-on-idle" = false; }; } ]; "99-disable-useless-devices"."monitor.alsa.rules" = [ { matches = [ {"device.name" = "~alsa_card.pci-0000_03_00.1*";} {"device.description" = "~USB Audio*";} ]; actions.update-props = {"device.disabled" = true;}; } ]; }; }) ]; }