diff --git a/pkgs/applications/networking/mailreaders/mailnag/default.nix b/pkgs/applications/networking/mailreaders/mailnag/default.nix index b44d90f1d760..6d315049d240 100644 --- a/pkgs/applications/networking/mailreaders/mailnag/default.nix +++ b/pkgs/applications/networking/mailreaders/mailnag/default.nix @@ -15,86 +15,91 @@ , gobject-introspection # Available plugins (can be overriden) , availablePlugins -# Plugins to install -, plugins ? [ "goa" ] +# Used in the withPlugins interface at passthru, can be overrided directly, or +# prefarably via e.g: `mailnag.withPlugins(["goa"])` +, mailnag +, userPlugins ? [ ] +, pluginsDeps ? [ ] }: -let - # Get the list of plugins the user wants - userPlugins = lib.attrVals plugins availablePlugins; - # goa plugin requires gio's gnome-online-accounts which requires making sure - # mailnag runs with GI_TYPELIB_PATH containing the path to Goa-1.0.typelib. - # This is handled best by adding the plugins' deps to buildInputs and let - # wrapGAppsHook handle that. - pluginsDeps = lib.flatten (lib.catAttrs "buildInputs" userPlugins); -in - python3Packages.buildPythonApplication rec { - pname = "mailnag"; - version = "2.0.0"; +python3Packages.buildPythonApplication rec { + pname = "mailnag"; + version = "2.0.0"; - src = fetchFromGitHub { - owner = "pulb"; - repo = "mailnag"; - rev = "v${version}"; - sha256 = "0q97v9i96br22z3h6r2mz79i68ib8m8x42yxky78szfrf8j60i30"; - }; + src = fetchFromGitHub { + owner = "pulb"; + repo = "mailnag"; + rev = "v${version}"; + sha256 = "0q97v9i96br22z3h6r2mz79i68ib8m8x42yxky78szfrf8j60i30"; + }; - buildInputs = [ - gtk3 - gdk-pixbuf - glib - libnotify - gst_all_1.gstreamer - gst_all_1.gst-plugins-base - gst_all_1.gst-plugins-good - gst_all_1.gst-plugins-bad - gobject-introspection - libsecret - ] ++ pluginsDeps; + buildInputs = [ + gtk3 + gdk-pixbuf + glib + libnotify + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-bad + gobject-introspection + libsecret + ] ++ pluginsDeps; - nativeBuildInputs = [ - gettext - wrapGAppsHook - # To later add plugins to - xorg.lndir - ]; + nativeBuildInputs = [ + gettext + wrapGAppsHook + # To later add plugins to + xorg.lndir + ]; - propagatedBuildInputs = with python3Packages; [ - gsettings-desktop-schemas - pygobject3 - dbus-python - pyxdg - ]; + propagatedBuildInputs = with python3Packages; [ + gsettings-desktop-schemas + pygobject3 + dbus-python + pyxdg + ]; - passthru = { - inherit availablePlugins; - }; + passthru = { + inherit availablePlugins; + withPlugins = + plugs: + let + # goa plugin requires gio's gnome-online-accounts which requires making sure + # mailnag runs with GI_TYPELIB_PATH containing the path to Goa-1.0.typelib. + # This is handled best by adding the plugins' deps to buildInputs and let + # wrapGAppsHook handle that. + pluginsDeps = lib.flatten (lib.catAttrs "buildInputs" plugs); + self = mailnag; + in + self.override { userPlugins = plugs; }; + }; - # See https://nixos.org/nixpkgs/manual/#ssec-gnome-common-issues-double-wrapped - dontWrapGApps = true; + # See https://nixos.org/nixpkgs/manual/#ssec-gnome-common-issues-double-wrapped + dontWrapGApps = true; - preFixup = '' - substituteInPlace $out/${python3Packages.python.sitePackages}/Mailnag/common/dist_cfg.py \ - --replace "/usr/" $out/ - for desktop_file in $out/share/applications/*.desktop; do - substituteInPlace "$desktop_file" \ - --replace "/usr/bin" $out/bin - done - makeWrapperArgs+=("''${gappsWrapperArgs[@]}") - ''; + preFixup = '' + substituteInPlace $out/${python3Packages.python.sitePackages}/Mailnag/common/dist_cfg.py \ + --replace "/usr/" $out/ + for desktop_file in $out/share/applications/*.desktop; do + substituteInPlace "$desktop_file" \ + --replace "/usr/bin" $out/bin + done + makeWrapperArgs+=("''${gappsWrapperArgs[@]}") + ''; - # Actually install plugins - postInstall = '' - for plug in ${builtins.toString userPlugins}; do - lndir $plug/${python3Packages.python.sitePackages} $out/${python3Packages.python.sitePackages} - done - ''; + # Actually install plugins + postInstall = '' + for plug in ${builtins.toString userPlugins}; do + lndir $plug/${python3Packages.python.sitePackages} $out/${python3Packages.python.sitePackages} + done + ''; - meta = with lib; { - description = "An extensible mail notification daemon"; - homepage = "https://github.com/pulb/mailnag"; - license = licenses.gpl2; - platforms = platforms.linux; - maintainers = with maintainers; [ doronbehar ]; - }; - } + meta = with lib; { + description = "An extensible mail notification daemon"; + homepage = "https://github.com/pulb/mailnag"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ doronbehar ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 81dda13560da..770727cc9ede 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5213,6 +5213,9 @@ in goa = callPackage ../applications/networking/mailreaders/mailnag/goa-plugin.nix { }; }; }; + mailnagWithPlugins = mailnag.withPlugins( + builtins.attrValues mailnag.availablePlugins + ); mailsend = callPackage ../tools/networking/mailsend { };