Skip to content

Conversation

@hauskens
Copy link
Contributor

@hauskens hauskens commented Nov 21, 2025

Description

Fixes #8185

The upstream easyeffects project has migrated from GTK to Qt, deprecating --gapplication-service and removing DBus integration. See #8185 for more details.
Tested with version 8.0.3 and 7.2.5 , uses lib.versionOlder cfg.package.version "8.0.0" to be backwards compatible.

  • Removed DBus service configuration (Type=dbus, BusName)
  • Move presets and config dir from $XDG_CONFIG_HOME to $XDG_DATA_HOME (new upstream location)

Other notes
Since they have moved config directory, it will warn show warnings because of empty dirs. These warnings will also show in the service until you remove them. I dont think this is a problem and new users will not experience this.

easyeffects --version
easyeffects: presets_directory_manager.cpp:140  Old /home/hausken/.config/easyeffects/output directory detected. Migrating its files to /home/hausken/.local/share/easyeffects/output
easyeffects: presets_directory_manager.cpp:149  Could not copy any file. Aborting migration of /home/hausken/.config/easyeffects/output
easyeffects: presets_directory_manager.cpp:140  Old /home/hausken/.config/easyeffects/irs directory detected. Migrating its files to /home/hausken/.local/share/easyeffects/irs
easyeffects: presets_directory_manager.cpp:149  Could not copy any file. Aborting migration of /home/hausken/.config/easyeffects/irs
easyeffects: presets_directory_manager.cpp:140  Old /home/hausken/.config/easyeffects/rnnoise directory detected. Migrating its files to /home/hausken/.local/share/easyeffects/rnnoise
easyeffects: presets_directory_manager.cpp:149  Could not copy any file. Aborting migration of /home/hausken/.config/easyeffects/rnnoise
easyeffects: presets_directory_manager.cpp:140  Old /home/hausken/.config/easyeffects/autoload/output directory detected. Migrating its files to /home/hausken/.local/share/easyeffects/autoload/output
easyeffects: presets_directory_manager.cpp:149  Could not copy any file. Aborting migration of /home/hausken/.config/easyeffects/autoload/output

--

Checklist

  • Change is backwards compatible.

  • Code formatted with nix fmt or
    nix-shell -p treefmt nixfmt deadnix keep-sorted --run treefmt.

  • Code tested through nix run .#tests -- test-all or
    nix-shell --pure tests -A run.all.

  • Test cases updated/added. See example.

  • Commit messages are formatted like

    {component}: {description}
    
    {long description}
    

    See CONTRIBUTING for more information and recent commit messages for examples.

  • If this PR adds a new module

    • Added myself as module maintainer. See example.
    • Generate a news entry. See News
    • Basic tests added. See Tests
  • If this PR adds an exciting new feature or contains a breaking change.

    • Generate a news entry. See News

@github-actions github-actions bot added the audio label Nov 21, 2025
@hauskens hauskens marked this pull request as ready for review November 21, 2025 17:14
@home-manager-ci home-manager-ci bot requested a review from fufexan November 21, 2025 17:15
Copy link
Contributor

@AlephNought0 AlephNought0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have tested this commit with easyeffects version 8.0.3 and so far everything works well. There's only one thing that needs change and another one that is optional imo.

@alyraffauf
Copy link
Contributor

Works great for me, solves the bug as described.

@AlephNought0
Copy link
Contributor

It seems like the newest version of 8.0.3 easyeffects has dropped in nixos-unstable now. I believe we should hurry so people don't experience a broken service for too long.

@hauskens hauskens force-pushed the fix/easy-effects branch 2 times, most recently from c77367a to 29b44f4 Compare November 23, 2025 09:59
@hauskens
Copy link
Contributor Author

hauskens commented Nov 23, 2025

I feel this is ready, we should be backwards compatible now. I tested with both 8.0.3 and 7.2.5. I can't review my own PR, so someone else needs to approve it

Comment on lines 122 to 131
if olderThan8 then
{
Before = [ "pipewire.socket" ];
}
else
{
Type = "dbus";
BusName = "com.github.wwmm.easyeffects";
}
);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't this flipped?

Suggested change
if olderThan8 then
{
Before = [ "pipewire.socket" ];
}
else
{
Type = "dbus";
BusName = "com.github.wwmm.easyeffects";
}
);
if olderThan8 then
{
Type = "dbus";
BusName = "com.github.wwmm.easyeffects";
}
else
{
Before = [ "pipewire.socket" ];
}
);

Copy link
Contributor

@AlephNought0 AlephNought0 Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, not only that but the code is also incorrect. BusName and Type are a part of Service section, not Unit. There is no need to try to remove Before=["pipewire.socket"]; for the older version of easyeffects, because it is not incorrect and it will work with it in the older version as well. Instead please do this.

Service =
        {
          ExecStart =
            if olderThan8
            then "${cfg.package}/bin/easyeffects --gapplication-service ${presetOpts}"
            else "${cfg.package}/bin/easyeffects --hide-window --service-mode ${presetOpts}";
          ExecStop = "${cfg.package}/bin/easyeffects --quit";
          KillMode = "mixed";
          Restart = "on-failure";
          RestartSec = 5;
          TimeoutStopSec = 10;
        }
        // (
          if olderThan8
          then {
            BusName = "com.github.wwmm.easyeffects";
            Type = "dbus";
          }
          else {}
        );

So basically, there is no need to change Unit=, only Service=.

Copy link
Contributor Author

@hauskens hauskens Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for that mess, i only checked the service args when i tested.
Updated it now. This is the output from the tests i did:

nixpkgs stable 25.05

$ easyeffects --version
easyeffects version: 7.2.5


$ systemctl --user show easyeffects.service --property=BusName,Type
Type=dbus
BusName=com.github.wwmm.easyeffects

Startup args on service: easyeffects --gapplication-service

nixpkgs unstable

$ easyeffects --version
easyeffects 8.0.3

$ systemctl --user show easyeffects.service --property=BusName,Type
Type=simple
BusName=

Startup args on service: easyeffects --hide-window --service-mode

Copy link
Contributor

@AlephNought0 AlephNought0 Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything seems to be fine now. The only one minor thing is that you removed the Before= directive in the Unit section. I did take a look around before commenting and it seems like that After= is the correct way to do this for sockets. It just seems that Before= worked because systemd seems to deal with this already. So you can either add After=["pipewire.socket"] or leave it be. It doesn't seem to fully matter from my research. The code is correct and works either way. I believe the PR can be merged now,

Copy link
Contributor

@AlephNought0 AlephNought0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

GGG-KILLER added a commit to GGG-KILLER/nixos-configs that referenced this pull request Nov 23, 2025
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.

bug: easyeffects systemd unit repeatedly times out during start up

5 participants