From 91ccaee9e1cccd248cf5d1ff4c96728b16674084 Mon Sep 17 00:00:00 2001 From: Infinidoge Date: Thu, 18 Nov 2021 18:36:03 -0500 Subject: [PATCH] modules/modules: start module-based implementation --- modules/modules/hardware/audio.nix | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 modules/modules/hardware/audio.nix diff --git a/modules/modules/hardware/audio.nix b/modules/modules/hardware/audio.nix new file mode 100644 index 0000000..adfd8e6 --- /dev/null +++ b/modules/modules/hardware/audio.nix @@ -0,0 +1,34 @@ +# Created by hlissner: https://github.com/hlissner/dotfiles/blob/master/modules/hardware/audio.nix +{ options, config, lib, pkgs, ... }: + +with lib; +with lib.hlissner; +let cfg = config.modules.hardware.audio; +in +{ + options.modules.hardware.audio = { + enable = mkBoolOpt false; + }; + + config = mkIf cfg.enable { + sound.enable = true; + hardware.pulseaudio.enable = true; + + # HACK Prevents ~/.esd_auth files by disabling the esound protocol module + # for pulseaudio, which I likely don't need. Is there a better way? + hardware.pulseaudio.configFile = + let inherit (pkgs) runCommand pulseaudio; + paConfigFile = + runCommand "disablePulseaudioEsoundModule" + { buildInputs = [ pulseaudio ]; } '' + mkdir "$out" + cp ${pulseaudio}/etc/pulse/default.pa "$out/default.pa" + sed -i -e 's|load-module module-esound-protocol-unix|# ...|' "$out/default.pa" + ''; + in + mkIf config.hardware.pulseaudio.enable + "${paConfigFile}/default.pa"; + + user.extraGroups = [ "audio" ]; + }; +}