hwModules/legion/go: add convolver from legion-go-tricks

This commit is contained in:
Aly Raffauf 2024-10-15 14:51:39 -04:00
parent b9d53cd8dc
commit fda262b426

View file

@ -4,7 +4,16 @@
pkgs, pkgs,
self, self,
... ...
}: { }: let
legion-go-tricks = pkgs.fetchFromGitHub {
owner = "aarron-lee";
repo = "legion-go-tricks";
rev = "773f4dfa217989213ab2678d63a84dc306e8f8d4";
sha256 = "sha256-d5TB4kvNR7bwF5VyO1hxe8n9/PubtzWlBgvSmpUgDQc=";
};
convolverPath = "${legion-go-tricks}/experimental_sound_fix/multiwayCor48.wav";
in {
imports = [ imports = [
self.nixosModules.hw-common-amd-cpu self.nixosModules.hw-common-amd-cpu
self.nixosModules.hw-common-amd-gpu self.nixosModules.hw-common-amd-gpu
@ -40,5 +49,64 @@
sensor.iio.enable = true; sensor.iio.enable = true;
}; };
services.upower.enable = true; services = {
pipewire.wireplumber.configPackages = [
(pkgs.writeTextDir "share/pipewire/pipewire.conf.d/10-legion-go-convolver.conf" ''
# Convolver Configuration for Pipewire
#
# This configuration applies separate left and right convolver effects using the corresponding impulse response files
# to the entire system audio output.
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Legion GO"
media.name = "Legion GO"
filter.graph = {
nodes = [
{
type = builtin
label = convolver
name = convFL
config = {
filename = "${convolverPath}"
channel = 0
}
}
{
type = builtin
label = convolver
name = convFR
config = {
filename = "${convolverPath}"
channel = 1
}
}
]
inputs = [ "convFL:In" "convFR:In" ]
outputs = [ "convFL:Out" "convFR:Out" ]
}
capture.props = {
node.name = "Legion GO"
media.class = "Audio/Sink"
priority.driver = 1000
priority.session = 1000
audio.channels = 2
audio.position = [ FL FR ]
}
playback.props = {
node.name = "Legion GO corrected"
node.passive = true
audio.channels = 2
audio.position = [ FL FR ]
node.target = "alsa_output.pci-0000_c2_00.6.analog-stereo"
}
}
}
]
'')
];
upower.enable = true;
};
} }