diff --git a/modules/services/easyeffects.nix b/modules/services/easyeffects.nix index efe224459..a56c332cb 100644 --- a/modules/services/easyeffects.nix +++ b/modules/services/easyeffects.nix @@ -11,6 +11,8 @@ let presetOpts = lib.optionalString (cfg.preset != "") "--load-preset ${cfg.preset}"; + olderThan8 = lib.versionOlder cfg.package.version "8.0.0"; # This version introduces breaking changes and this check is used to stay backwards compatible + jsonFormat = pkgs.formats.json { }; presetType = @@ -31,7 +33,7 @@ let default = { }; description = '' List of presets to import to easyeffects. - Presets are written to input and output folder in `$XDG_CONFIG_HOME/easyeffects`. + Presets are written to input and output folder in `$XDG_DATA_HOME/easyeffects`. Top level block (input/output) determines the folder the file is written to. See community presets at: @@ -97,15 +99,9 @@ in (lib.hm.assertions.assertPlatform "services.easyeffects" pkgs lib.platforms.linux) ]; - # Running easyeffects will just attach itself to `gapplication` service - # at-spi2-core is to minimize `journalctl` noise of: - # "AT-SPI: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files" - home.packages = with pkgs; [ - cfg.package - at-spi2-core - ]; + home.packages = with pkgs; lib.optional olderThan8 at-spi2-core ++ [ cfg.package ]; # Only include if easyeffects version is below 8.0.0 - xdg.configFile = lib.mkIf (cfg.extraPresets != { }) ( + xdg.dataFile = lib.mkIf (cfg.extraPresets != { }) ( lib.mapAttrs' ( k: v: # Assuming only one of either input or output block is defined, having both in same file not seem to be supported by the application since it separates it by folder @@ -126,15 +122,26 @@ in Install.WantedBy = [ "graphical-session.target" ]; Service = { - ExecStart = "${cfg.package}/bin/easyeffects --gapplication-service ${presetOpts}"; + 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"; - Type = "dbus"; - BusName = "com.github.wwmm.easyeffects"; KillMode = "mixed"; Restart = "on-failure"; RestartSec = 5; TimeoutStopSec = 10; - }; + } + // ( + if olderThan8 then + { + Type = "dbus"; + BusName = "com.github.wwmm.easyeffects"; + } + else + { } + ); }; }; } diff --git a/tests/modules/services/easyeffects/example-preset.nix b/tests/modules/services/easyeffects/example-preset.nix index b435ff2a7..442386ada 100644 --- a/tests/modules/services/easyeffects/example-preset.nix +++ b/tests/modules/services/easyeffects/example-preset.nix @@ -27,6 +27,6 @@ nmt.script = '' assertFileContent \ - home-files/.config/easyeffects/input/example-preset.json "${./example-preset.json}" + home-files/.local/share/easyeffects/input/example-preset.json "${./example-preset.json}" ''; }