diff --git a/pkgs/applications/networking/mailreaders/claws-mail/default.nix b/pkgs/applications/networking/mailreaders/claws-mail/default.nix index 7eaefdd91c4..a198c355290 100644 --- a/pkgs/applications/networking/mailreaders/claws-mail/default.nix +++ b/pkgs/applications/networking/mailreaders/claws-mail/default.nix @@ -1,52 +1,98 @@ -{ lib, config, fetchurl, stdenv, wrapGAppsHook, autoreconfHook -, curl, dbus, dbus-glib, enchant, gtk2, gnutls, gnupg, gpgme, gumbo -, libarchive, libcanberra-gtk2, libetpan, libnotify, libsoup, libxml2, networkmanager -, openldap, perl, pkg-config, poppler, python, shared-mime-info -, glib-networking, gsettings-desktop-schemas, libSM, libytnef, libical -# Build options -# TODO: A flag to build the manual. -# TODO: Plugins that complain about their missing dependencies, even when -# provided: -# gdata requires libgdata -# geolocation requires libchamplain -, enableLdap ? false -, enableNetworkManager ? config.networking.networkmanager.enable or false +{ stdenv, lib, fetchgit, wrapGAppsHook, autoreconfHook, bison, flex +, curl, gtk2, gtk3, pkg-config, python2, python3, shared-mime-info +, glib-networking, gsettings-desktop-schemas + +# Use the experimental gtk3 branch. +, useGtk3 ? false + +# Package compatibility: old parameters whose name were not directly derived , enablePgp ? true -, enablePluginArchive ? false -, enablePluginLitehtmlViewer ? false , enablePluginNotificationDialogs ? true , enablePluginNotificationSounds ? true -, enablePluginPdf ? false -, enablePluginPython ? false -, enablePluginRavatar ? false -, enablePluginRssyl ? false -, enablePluginSmime ? false -, enablePluginSpamassassin ? false -, enablePluginSpamReport ? false -, enablePluginVcalendar ? false -, enableSpellcheck ? false +, enablePluginPdf ? true +, enablePluginRavatar ? true +, enableSpellcheck ? true + +# Arguments to include external libraries +, enableLibSM ? true, libSM +, enableGnuTLS ? true, gnutls +, enableEnchant ? enableSpellcheck, enchant +, enableDbus ? true, dbus, dbus-glib +, enableLdap ? true, openldap +, enableNetworkManager ? true, networkmanager +, enableLibetpan ? true, libetpan +, enableValgrind ? true, valgrind +, enableSvg ? true, librsvg + +# Configure claws-mail's plugins +, enablePluginAcpiNotifier ? true +, enablePluginAddressKeeper ? true +, enablePluginArchive ? true, libarchive +, enablePluginAttRemover ? true +, enablePluginAttachWarner ? true +, enablePluginBogofilter ? true +, enablePluginBsfilter ? true +, enablePluginClamd ? true +, enablePluginDillo ? true +, enablePluginFetchInfo ? true +, enablePluginLibravatar ? enablePluginRavatar +, enablePluginLitehtmlViewer ? true, gumbo +, enablePluginMailmbox ? true +, enablePluginManageSieve ? true +, enablePluginNewMail ? true +, enablePluginNotification ? (enablePluginNotificationDialogs || enablePluginNotificationSounds), libcanberra-gtk2, libcanberra-gtk3, libnotify +, enablePluginPdfViewer ? enablePluginPdf, poppler +, enablePluginPerl ? true, perl +, enablePluginPython ? true +, enablePluginPgp ? enablePgp, gnupg, gpgme +, enablePluginRssyl ? true, libxml2 +, enablePluginSmime ? true +, enablePluginSpamassassin ? true +, enablePluginSpamReport ? true +, enablePluginTnefParse ? true, libytnef +, enablePluginVcalendar ? true, libical }: with lib; -stdenv.mkDerivation rec { - pname = "claws-mail"; +let version = "3.17.8"; - src = fetchurl { - url = "https://www.claws-mail.org/download.php?file=releases/claws-mail-${version}.tar.xz"; - sha256 = "sha256-zbeygUmV1vSpw7HwvBRn7Vw88qXg2hcwqqJaisyv3a8="; + # The official release uses gtk2 and contains the version tag. + gtk2src = { + rev = version; + sha256 = "0l4f8q11iyj8pi120lrapgq51k5j64xf0jlczkzbm99rym752ch5"; }; + # The corresponding commit in the gtk3 branch. + gtk3src = { + rev = "3.99.0"; + sha256 = "176h1swh1zx6dqyzfz470x4a1xicnv0zhy8ir47k7p23g6y17i2k"; + }; + + python = if useGtk3 then python3 else python2; + pythonPkgs = if useGtk3 + then + with python.pkgs; [ python wrapPython pygobject3 ] + else + with python.pkgs; [ python wrapPython pygtk pygobject2 ]; +in stdenv.mkDerivation rec { + pname = "claws-mail"; + inherit version; + + src = fetchgit ({ + url = "git://git.claws-mail.org/claws.git"; + } // (if useGtk3 then gtk3src else gtk2src)); + outputs = [ "out" "dev" ]; - patches = [ - ./mime.patch - ]; + patches = [ ./mime.patch ]; preConfigure = '' # autotools check tries to dlopen libpython as a requirement for the python plugin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${python}/lib + # generate version without .git + [ -e version ] || echo "echo ${version}" > version ''; postPatch = '' @@ -54,51 +100,87 @@ stdenv.mkDerivation rec { --subst-var-by MIMEROOTDIR ${shared-mime-info}/share ''; - nativeBuildInputs = [ autoreconfHook pkg-config wrapGAppsHook python.pkgs.wrapPython ]; - propagatedBuildInputs = with python.pkgs; [ python ] ++ optionals enablePluginPython [ pygtk pygobject2 ]; + nativeBuildInputs = [ autoreconfHook pkg-config bison flex wrapGAppsHook ]; + propagatedBuildInputs = pythonPkgs; buildInputs = - [ curl dbus dbus-glib gtk2 gnutls gsettings-desktop-schemas - libetpan perl glib-networking libSM libytnef - ] - ++ optional enableSpellcheck enchant - ++ optionals (enablePgp || enablePluginSmime) [ gnupg gpgme ] - ++ optional enablePluginArchive libarchive - ++ optional enablePluginNotificationSounds libcanberra-gtk2 - ++ optional enablePluginNotificationDialogs libnotify - ++ optional enablePluginLitehtmlViewer gumbo - ++ optional enablePluginRssyl libxml2 - ++ optional enableNetworkManager networkmanager - ++ optional enableLdap openldap - ++ optional enablePluginPdf poppler - ++ optional enablePluginVcalendar libical; + [ curl gsettings-desktop-schemas glib-networking ] + ++ [(if useGtk3 then gtk3 else gtk2)] + ++ optional enableLibSM libSM + ++ optional enableGnuTLS gnutls + ++ optional enableEnchant enchant + ++ optionals enableDbus [ dbus dbus-glib ] + ++ optional enableLdap openldap + ++ optional enableNetworkManager networkmanager + ++ optional enableLibetpan libetpan + ++ optional enableValgrind valgrind + ++ optional enableSvg librsvg + ++ optional enablePluginArchive libarchive + ++ optional enablePluginLitehtmlViewer gumbo + ++ optionals enablePluginNotification [ libnotify ] ++ [(if useGtk3 then libcanberra-gtk3 else libcanberra-gtk2)] + ++ optional enablePluginPerl perl + ++ optional enablePluginPdfViewer poppler + ++ optional enablePluginRssyl libxml2 + ++ optionals enablePluginPgp [ gnupg gpgme ] + ++ optional enablePluginTnefParse libytnef + ++ optional enablePluginVcalendar libical + ; configureFlags = - optional (!enableLdap) "--disable-ldap" - ++ optional (!enableNetworkManager) "--disable-networkmanager" - ++ optionals (!enablePgp) [ - "--disable-pgpcore-plugin" - "--disable-pgpinline-plugin" - "--disable-pgpmime-plugin" + [ + "--disable-manual" # Missing docbook-tools, e.g., docbook2html + "--disable-compface" # Missing compface library + "--disable-jpilot" # Missing jpilot library + + "--disable-gdata-plugin" # Complains about missing libgdata, even when provided + "--disable-fancy-plugin" # Missing libwebkit-1.0 library ] - ++ optional (!enablePluginArchive) "--disable-archive-plugin" - ++ optional (!enablePluginLitehtmlViewer) "--disable-litehtml_viewer-plugin" - ++ optional (!enablePluginPdf) "--disable-pdf_viewer-plugin" - ++ optional (!enablePluginPython) "--disable-python-plugin" - ++ optional (!enablePluginRavatar) "--disable-libravatar-plugin" - ++ optional (!enablePluginRssyl) "--disable-rssyl-plugin" - ++ optional (!enablePluginSmime) "--disable-smime-plugin" - ++ optional (!enablePluginSpamassassin) "--disable-spamassassin-plugin" - ++ optional (!enablePluginSpamReport) "--disable-spam_report-plugin" - ++ optional (!enablePluginVcalendar) "--disable-vcalendar-plugin" - ++ optional (!enableSpellcheck) "--disable-enchant"; + ++ + (map (e: strings.enableFeature (lists.head e) (lists.last e)) [ + [ enableLibSM "libsm" ] + [ enableGnuTLS "gnutls" ] + [ enableEnchant "enchant" ] + [ enableDbus "dbus" ] + [ enableLdap "ldap" ] + [ enableNetworkManager "networkmanager" ] + [ enableLibetpan "libetpan" ] + [ enableValgrind "valgrind" ] + [ enableSvg "svg" ] + + [ enablePluginAcpiNotifier "acpi_notifier-plugin" ] + [ enablePluginAddressKeeper "address_keeper-plugin" ] + [ enablePluginArchive "archive-plugin" ] + [ enablePluginAttRemover "att_remover-plugin" ] + [ enablePluginAttachWarner "attachwarner-plugin" ] + [ enablePluginBogofilter "bogofilter-plugin" ] + [ enablePluginBsfilter "bsfilter-plugin" ] + [ enablePluginClamd "clamd-plugin" ] + [ enablePluginDillo "dillo-plugin" ] + [ enablePluginFetchInfo "fetchinfo-plugin" ] + [ enablePluginLibravatar "libravatar-plugin" ] + [ enablePluginLitehtmlViewer "litehtml_viewer-plugin" ] + [ enablePluginMailmbox "mailmbox-plugin" ] + [ enablePluginManageSieve "managesieve-plugin" ] + [ enablePluginNewMail "newmail-plugin" ] + [ enablePluginNotification "notification-plugin" ] + [ enablePluginPdfViewer "pdf_viewer-plugin" ] + [ enablePluginPerl "perl-plugin" ] + [ enablePluginPython "python-plugin" ] + [ enablePluginPgp "pgpcore-plugin" ] + [ enablePluginPgp "pgpmime-plugin" ] + [ enablePluginPgp "pgpinline-plugin" ] + [ enablePluginRssyl "rssyl-plugin" ] + [ enablePluginSmime "smime-plugin" ] + [ enablePluginSpamassassin "spamassassin-plugin" ] + [ enablePluginSpamReport "spam_report-plugin" ] + [ enablePluginTnefParse "tnef_parse-plugin" ] + [ enablePluginVcalendar "vcalendar-plugin" ] + ]); enableParallelBuilding = true; - pythonPath = with python.pkgs; [ pygobject2 pygtk ]; - preFixup = '' - buildPythonPath "$out $pythonPath" + buildPythonPath "$out $pythonPkgs" gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share" --prefix PYTHONPATH : "$program_PYTHONPATH") ''; @@ -112,6 +194,6 @@ stdenv.mkDerivation rec { homepage = "https://www.claws-mail.org/"; license = licenses.gpl3; platforms = platforms.linux; - maintainers = with maintainers; [ fpletz globin orivej ]; + maintainers = with maintainers; [ fpletz globin orivej oxzi ]; }; } diff --git a/pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix b/pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix deleted file mode 100644 index d5223092446..00000000000 --- a/pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix +++ /dev/null @@ -1,121 +0,0 @@ -{ lib, config, fetchgit, stdenv, wrapGAppsHook, autoreconfHook, bison, flex -, curl, dbus, dbus-glib, enchant, gtk3, gnutls, gnupg, gpgme -, libarchive, libcanberra-gtk3, libetpan, libnotify, libsoup, libxml2, networkmanager -, openldap, perl, pkg-config, poppler, python, shared-mime-info, webkitgtk -, glib-networking, gsettings-desktop-schemas, libSM, libytnef, libical -# Build options -# TODO: A flag to build the manual. -# TODO: Plugins that complain about their missing dependencies, even when -# provided: -# gdata requires libgdata -# geolocation requires libchamplain -, enableLdap ? false -, enableNetworkManager ? config.networking.networkmanager.enable or false -, enablePgp ? true -, enablePluginArchive ? false -, enablePluginFancy ? true -, enablePluginNotificationDialogs ? true -, enablePluginNotificationSounds ? true -, enablePluginPdf ? false -, enablePluginPython ? false -, enablePluginRavatar ? false -, enablePluginRssyl ? false -, enablePluginSmime ? false -, enablePluginSpamassassin ? false -, enablePluginSpamReport ? false -, enablePluginVcalendar ? false -, enableSpellcheck ? false -}: - -with lib; - -stdenv.mkDerivation rec { - pname = "claws-mail-gtk3"; - version = "3.99.0"; - - src = fetchgit { - url = "git://git.claws-mail.org/claws.git"; - rev = version; - sha256 = "176h1swh1zx6dqyzfz470x4a1xicnv0zhy8ir47k7p23g6y17i2k"; - }; - - outputs = [ "out" "dev" ]; - - patches = [ ./mime.patch ]; - - preConfigure = '' - # autotools check tries to dlopen libpython as a requirement for the python plugin - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${python}/lib - # generate version without .git - [ -e version ] || echo "echo ${version}" > version - ''; - - postPatch = '' - substituteInPlace src/procmime.c \ - --subst-var-by MIMEROOTDIR ${shared-mime-info}/share - ''; - - nativeBuildInputs = [ autoreconfHook bison flex pkg-config wrapGAppsHook python.pkgs.wrapPython ]; - propagatedBuildInputs = with python.pkgs; [ python ] ++ optionals enablePluginPython [ pygtk pygobject2 ]; - - buildInputs = - [ curl dbus dbus-glib gtk3 gnutls gsettings-desktop-schemas - libetpan perl glib-networking libSM libytnef - ] - ++ optional enableSpellcheck enchant - ++ optionals (enablePgp || enablePluginSmime) [ gnupg gpgme ] - ++ optional enablePluginArchive libarchive - ++ optional enablePluginNotificationSounds libcanberra-gtk3 - ++ optional enablePluginNotificationDialogs libnotify - ++ optional enablePluginFancy libsoup - ++ optional enablePluginRssyl libxml2 - ++ optional enableNetworkManager networkmanager - ++ optional enableLdap openldap - ++ optional enablePluginPdf poppler - ++ optional enablePluginFancy webkitgtk - ++ optional enablePluginVcalendar libical; - - configureFlags = - optional (!enableLdap) "--disable-ldap" - ++ optional (!enableNetworkManager) "--disable-networkmanager" - ++ optionals (!enablePgp) [ - "--disable-pgpcore-plugin" - "--disable-pgpinline-plugin" - "--disable-pgpmime-plugin" - ] - ++ optional (!enablePluginArchive) "--disable-archive-plugin" - ++ optional (!enablePluginFancy) "--disable-fancy-plugin" - ++ optional (!enablePluginPdf) "--disable-pdf_viewer-plugin" - ++ optional (!enablePluginPython) "--disable-python-plugin" - ++ optional (!enablePluginRavatar) "--disable-libravatar-plugin" - ++ optional (!enablePluginRssyl) "--disable-rssyl-plugin" - ++ optional (!enablePluginSmime) "--disable-smime-plugin" - ++ optional (!enablePluginSpamassassin) "--disable-spamassassin-plugin" - ++ optional (!enablePluginSpamReport) "--disable-spam_report-plugin" - ++ optional (!enablePluginVcalendar) "--disable-vcalendar-plugin" - ++ optional (!enableSpellcheck) "--disable-enchant"; - - enableParallelBuilding = true; - - pythonPath = with python.pkgs; [ pygobject2 pygtk ]; - - preFixup = '' - buildPythonPath "$out $pythonPath" - gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share" --prefix PYTHONPATH : "$program_PYTHONPATH") - ''; - - postInstall = '' - mkdir -p $out/share/applications - cp claws-mail.desktop $out/share/applications - ''; - - NIX_CFLAGS_COMPILE = [ "-Wno-deprecated-declarations" ]; - - meta = { - description = "The user-friendly, lightweight, and fast email client"; - homepage = "https://www.claws-mail.org/"; - license = licenses.gpl3; - platforms = platforms.linux; - maintainers = with maintainers; [ fpletz globin orivej ]; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c8322e5dbdf..c991a3780f0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -21527,8 +21527,9 @@ in claws-mail = callPackage ../applications/networking/mailreaders/claws-mail { inherit (xorg) libSM; }; - claws-mail-gtk3 = callPackage ../applications/networking/mailreaders/claws-mail/gtk3.nix { + claws-mail-gtk3 = callPackage ../applications/networking/mailreaders/claws-mail { inherit (xorg) libSM; + useGtk3 = true; }; clfswm = callPackage ../applications/window-managers/clfswm { };