Files
nix-config/system/hardware/sound.nix

50 lines
1.3 KiB
Nix
Raw Normal View History

2025-05-04 02:47:36 +02:00
{
lib,
config,
pkgs,
...
}:
with lib; let
2025-08-15 21:33:22 +02:00
cfg = config.mySystem.hardware.sound;
2025-05-04 02:47:36 +02:00
in {
2025-08-15 21:33:22 +02:00
options.mySystem.hardware.sound = {
2026-04-30 13:51:05 +02:00
enable = mkEnableOption "Whether to enable sounds";
usePulseaudio = mkEnableOption "Activate sound support with pulseaudio";
2025-07-05 00:02:39 +02:00
scarlett.enable = mkEnableOption "Activate support for Scarlett sound card";
2025-05-04 02:47:36 +02:00
alsa = mkOption {
type = types.bool;
example = true;
default = true;
description = "Whether to enable ALSA support with Pipewire";
};
jack = mkOption {
type = types.bool;
example = true;
default = false;
description = "Whether to enable JACK support with Pipewire";
};
package = mkOption {
type = types.package;
example = pkgs.pulseaudio;
default = pkgs.pulseaudioFull;
description = "Which base package to use for PulseAudio";
};
};
2025-07-05 00:02:39 +02:00
config = {
environment.systemPackages = mkIf cfg.scarlett.enable [pkgs.alsa-scarlett-gui];
2026-04-30 13:51:05 +02:00
services = {
pipewire.enable = mkForce (cfg.enable && ! cfg.usePulseaudio);
pipewire.alsa = {
2025-07-05 00:02:39 +02:00
enable = mkDefault true;
support32Bit = mkDefault true;
};
2026-04-30 13:51:05 +02:00
pipewire.jack.enable = cfg.jack;
pulseaudio.enable = cfg.usePulseaudio;
2025-05-04 02:47:36 +02:00
};
programs.noisetorch = mkIf cfg.enable {
inherit (cfg) enable;
};
2025-05-04 02:47:36 +02:00
};
}