nix-infra/common/fragments/graphical/audio.nix

96 lines
2.4 KiB
Nix

{ config, pkgs, lib, ... }: {
# Pipewire
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
programs.noisetorch.enable = true;
systemd.user.services."noisetorch" = {
description =
"Virtual microphone device with noise supression for PulseAudio";
after = [ "graphical-session-pre.target" ];
partOf = [ "graphical-session.target" "pipewire.service" ];
wantedBy = [ "graphical-session.target" ];
serviceConfig = {
ExecStart = "${pkgs.noisetorch}/bin/noisetorch -i -s ${
if config.networking.hostName == "tears" then
"US-4x4HR_ch0"
else
"alsa_input.pci-0000_00_1f.3.analog-stereo"
}";
ExecStop = "${pkgs.noisetorch}/bin/noisetorch -u";
Restart = "on-failure";
RestartSec = 5;
RemainAfterExit = true;
};
};
# User packages
users.users.agatha.packages = with pkgs; [ pamixer pavucontrol playerctl ];
home-manager.users.agatha = {
services.easyeffects = {
enable = false;
preset = "DT-770-flat-eq";
};
xdg.configFile."easyeffects/output/DT-770-flat-eq.json".text = let
band = num: freq: gain: ''
"band${toString num}": {
"frequency": ${toString freq},
"gain": ${toString gain},
"mode": "RLC (BT)",
"mute": false,
"q": 1.41,
"slope": "x1",
"solo": false,
"type": "Bell"
}
'';
bands = lib.concatStringsSep ''
,
'' [
(band 0 31.0 5.8)
(band 1 62.0 8.0)
(band 2 125.0 (-8.03))
(band 3 250.0 (-2.42))
(band 4 500.0 0.71)
(band 5 1000.0 1.67)
(band 6 2000.0 (-2.42))
(band 7 4000.0 7.12)
(band 8 8000.0 (-0.61))
(band 9 16000.0 (-2.58))
];
in ''
{
"output": {
"blocklist": [],
"equalizer": {
"input-gain": 0.0,
"left": {
${bands}
},
"mode": "IIR",
"num-bands": 10,
"output-gain": 0.0,
"right": {
${bands}
},
"split-channels": false
},
"plugins_order": [
"equalizer"
]
}
}
'';
};
}