From c049a09d1aa74e78d84cbb76a84a0218956650a6 Mon Sep 17 00:00:00 2001 From: Mihai Fufezan <36706276+fufexan@users.noreply.github.com> Date: Wed, 11 Aug 2021 18:21:43 +0300 Subject: [PATCH] easyeffects: add module (#2182) * pulseeffects: change default example pulseeffects-pw is now an alias to easyeffects, and the `pulseeffects` binary that this module references is no longer in that package. * easyeffects: add module The easyeffects service is the PipeWire equivalent of the pulseeffects service. --- .github/CODEOWNERS | 2 + modules/misc/news.nix | 8 ++++ modules/modules.nix | 1 + modules/services/easyeffects.nix | 63 +++++++++++++++++++++++++++++++ modules/services/pulseeffects.nix | 5 +-- 5 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 modules/services/easyeffects.nix diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8c7b1c7ea..46d9595fd 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -227,6 +227,8 @@ /modules/services/dunst.nix @rycee +/modules/services/easyeffects.nix @fufexan + /modules/services/emacs.nix @tadfisher /modules/services/etesync-dav.nix @Valodim diff --git a/modules/misc/news.nix b/modules/misc/news.nix index fa0a027d5..177fd47b2 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -2164,6 +2164,14 @@ in A new module is available: 'programs.java'. ''; } + + { + time = "2021-08-11T13:55:51+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'services.easyeffects'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 3ab72a180..707b6d881 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -157,6 +157,7 @@ let ./services/dropbox.nix ./services/dunst.nix ./services/dwm-status.nix + ./services/easyeffects.nix ./services/emacs.nix ./services/etesync-dav.nix ./services/flameshot.nix diff --git a/modules/services/easyeffects.nix b/modules/services/easyeffects.nix new file mode 100644 index 000000000..bc87c2096 --- /dev/null +++ b/modules/services/easyeffects.nix @@ -0,0 +1,63 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.easyeffects; + + presetOpts = optionalString (cfg.preset != "") "--load-preset ${cfg.preset}"; + +in { + meta.maintainers = [ maintainers.fufexan ]; + + options.services.easyeffects = { + enable = mkEnableOption '' + Easyeffects daemon. + Note, it is necessary to add + + services.dbus.packages = with pkgs; [ gnome.dconf ]; + + to your system configuration for the daemon to work correctly + ''; + + preset = mkOption { + type = types.str; + default = ""; + description = '' + Which preset to use when starting easyeffects. + Will likely need to launch easyeffects to initially create preset. + ''; + }; + }; + + config = mkIf cfg.enable { + assertions = [ + (hm.assertions.assertPlatform "services.easyeffects" pkgs 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; [ easyeffects at-spi2-core ]; + + systemd.user.services.easyeffects = { + Unit = { + Description = "Easyeffects daemon"; + Requires = [ "dbus.service" ]; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" "pipewire.service" ]; + }; + + Install.WantedBy = [ "graphical-session.target" ]; + + Service = { + ExecStart = + "${pkgs.easyeffects}/bin/easyeffects --gapplication-service ${presetOpts}"; + ExecStop = "${pkgs.easyeffects}/bin/easyeffects --quit"; + Restart = "on-failure"; + RestartSec = 5; + }; + }; + }; +} diff --git a/modules/services/pulseeffects.nix b/modules/services/pulseeffects.nix index bad04e4e1..b475e4366 100644 --- a/modules/services/pulseeffects.nix +++ b/modules/services/pulseeffects.nix @@ -16,10 +16,9 @@ in { package = mkOption { type = types.package; - default = pkgs.pulseeffects; - defaultText = literalExample "pkgs.pulseeffects"; + default = pkgs.pulseeffects-legacy; + defaultText = literalExample "pkgs.pulseeffects-legacy"; description = "Pulseeffects package to use."; - example = literalExample "pkgs.pulseeffects-pw"; }; preset = mkOption {