# GPD Win Mini 2025 PipeWire EQ configuration # Based on https://github.com/aarron-lee/gpd-win-tricks/tree/main/win_mini_equalizer # Credit: @BrotherChenwk from the GPD Discord { pkgs, ... }: let # The ALSA output device - may need adjustment based on PCI enumeration # Use `pactl list sinks short` or `pw-cli list-objects | grep alsa_output` to find the correct device alsaDevice = "alsa_output.pci-0000_c4_00.6.analog-stereo"; pipewireConfig = pkgs.writeTextDir "share/pipewire/pipewire.conf.d/gpd-win-mini-2025.conf" '' # GPD Win Mini 2025 speaker EQ # Compensates for the small speakers' frequency response deficiencies context.modules = [ { name = libpipewire-module-filter-chain args = { node.description = "GPD Win Mini EQ" media.name = "GPD Win Mini EQ" filter.graph = { nodes = [ { type = builtin name = eq_band_1 label = bq_lowshelf control = { "Freq" = 32.0 "Q" = 1.41 "Gain" = -10.0 } } { type = builtin name = eq_band_2 label = bq_peaking control = { "Freq" = 64.0 "Q" = 1.41 "Gain" = -10.0 } } { type = builtin name = eq_band_3 label = bq_peaking control = { "Freq" = 125.0 "Q" = 1.41 "Gain" = 6.0 } } { type = builtin name = eq_band_4 label = bq_peaking control = { "Freq" = 250.0 "Q" = 1.41 "Gain" = -3.0 } } { type = builtin name = eq_band_5 label = bq_peaking control = { "Freq" = 500.0 "Q" = 1.41 "Gain" = 0.0 } } { type = builtin name = eq_band_6 label = bq_peaking control = { "Freq" = 1000.0 "Q" = 1.41 "Gain" = -1.0 } } { type = builtin name = eq_band_7 label = bq_peaking control = { "Freq" = 2000.0 "Q" = 1.41 "Gain" = -1.0 } } { type = builtin name = eq_band_8 label = bq_peaking control = { "Freq" = 4000.0 "Q" = 1.41 "Gain" = 0.0 } } { type = builtin name = eq_band_9 label = bq_peaking control = { "Freq" = 8000.0 "Q" = 1.41 "Gain" = 2.0 } } { type = builtin name = eq_band_10 label = bq_peaking control = { "Freq" = 16000.0 "Q" = 2.0 "Gain" = 6.0 } } { type = builtin name = eq_band_11 label = bq_highshelf control = { "Freq" = 4000.0 "Q" = 1.0 "Gain" = 6.0 } } ] links = [ { output = "eq_band_1:Out" input = "eq_band_2:In" } { output = "eq_band_2:Out" input = "eq_band_3:In" } { output = "eq_band_3:Out" input = "eq_band_4:In" } { output = "eq_band_4:Out" input = "eq_band_5:In" } { output = "eq_band_5:Out" input = "eq_band_6:In" } { output = "eq_band_6:Out" input = "eq_band_7:In" } { output = "eq_band_7:Out" input = "eq_band_8:In" } { output = "eq_band_8:Out" input = "eq_band_9:In" } { output = "eq_band_9:Out" input = "eq_band_10:In" } { output = "eq_band_10:Out" input = "eq_band_11:In" } ] } audio.channels = 2 audio.position = [ FL FR ] capture.props = { node.name = "GPD Win Mini EQ" media.class = Audio/Sink priority.driver = 1009 priority.session = 1009 } playback.props = { node.name = "GPD Win Mini EQ Fixed" node.passive = true node.target = "${alsaDevice}" } } } ] ''; in { services.pipewire.configPackages = [ pipewireConfig ]; }