Skip to content

easyeffects: add global settings and paired presets - #9716

Open
Tenshock wants to merge 3 commits into
nix-community:masterfrom
Tenshock:update-easyeffects
Open

easyeffects: add global settings and paired presets#9716
Tenshock wants to merge 3 commits into
nix-community:masterfrom
Tenshock:update-easyeffects

Conversation

@Tenshock

@Tenshock Tenshock commented Jul 27, 2026

Copy link
Copy Markdown

Description

Add services.easyeffects.settings for declaratively managing global EasyEffects 8 settings.

Settings are grouped by KConfig section and written to EasyEffects' mutable database during Home Manager activation using kwriteconfig6. Boolean, integer, float, string, and path values are supported. Setting a value to null deletes the corresponding key.

Using activation instead of xdg.configFile keeps the database writable by EasyEffects. An assertion rejects non-empty settings when using EasyEffects versions older than 8.0.0.

Also allow one services.easyeffects.extraPresets.<name> entry to contain both input and output blocks. Each block is generated as a separate preset file in its corresponding directory:

$XDG_DATA_HOME/easyeffects/input/<name>.json
$XDG_DATA_HOME/easyeffects/output/<name>.json

Existing one-sided input or output presets remain compatible.

Finally, extend services.easyeffects.preset with a structured form for selecting different startup presets for the input and output pipelines:

services.easyeffects.preset = {
  input = "voice";
  output = "music";
};

The existing string form remains supported. The structured form requires EasyEffects 8.0.0 or later and must select at least one pipeline; an empty string leaves that pipeline unchanged. After the service starts, Home Manager sends the pipeline-specific load commands to EasyEffects' local service socket.

Tests cover:

  • String and boolean global settings.
  • Key deletion using null.
  • Generated activation commands.
  • Unsupported EasyEffects version assertions.
  • One-sided and paired input/output preset generation with exact JSON output.
  • Backwards-compatible string startup presets.
  • Pipeline-specific startup preset commands.

Checklist

  • Change is backwards compatible.

  • Code formatted with nix fmt or
    nix-shell -A dev --run treefmt.

  • Code tested through nix build .#test-all
    and targeted nix run .#tests -- easyeffects.

  • Test cases updated/added.

  • Commit messages are formatted like

    {component}: {description}
    
    {long description}
    

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant