diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix | 207 |
1 files changed, 135 insertions, 72 deletions
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix index 7eaefdd91c42..4a13cf68a882 100644 --- a/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix +++ b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix @@ -1,52 +1,137 @@ -{ 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 +, enablePluginFancy ? useGtk3, libsoup, webkitgtk +, 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"; - version = "3.17.8"; +let + version = if useGtk3 then "3.99.0" else "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 = { + sha256 = "0l4f8q11iyj8pi120lrapgq51k5j64xf0jlczkzbm99rym752ch5"; }; - outputs = [ "out" "dev" ]; + # The corresponding commit in the gtk3 branch. + gtk3src = { + 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 ]; - patches = [ - ./mime.patch + features = [ + { flags = [ "acpi_notifier-plugin" ]; enabled = enablePluginAcpiNotifier; } + { flags = [ "address_keeper-plugin" ]; enabled = enablePluginAddressKeeper; } + { flags = [ "archive-plugin" ]; enabled = enablePluginArchive; deps = [ libarchive ]; } + { flags = [ "att_remover-plugin" ]; enabled = enablePluginAttRemover; } + { flags = [ "attachwarner-plugin" ]; enabled = enablePluginAttachWarner; } + { flags = [ "bogofilter-plugin" ]; enabled = enablePluginBogofilter; } + { flags = [ "bsfilter-plugin" ]; enabled = enablePluginBsfilter; } + { flags = [ "clamd-plugin" ]; enabled = enablePluginClamd; } + { flags = [ "dbus" ]; enabled = enableDbus; deps = [ dbus dbus-glib ]; } + { flags = [ "dillo-plugin" ]; enabled = enablePluginDillo; } + { flags = [ "enchant" ]; enabled = enableEnchant; deps = [ enchant ]; } + { flags = [ "fancy-plugin" ]; enabled = enablePluginFancy; deps = [ libsoup webkitgtk ]; } + { flags = [ "fetchinfo-plugin" ]; enabled = enablePluginFetchInfo; } + { flags = [ "gnutls" ]; enabled = enableGnuTLS; deps = [ gnutls ]; } + { flags = [ "ldap" ]; enabled = enableLdap; deps = [ openldap ]; } + { flags = [ "libetpan" ]; enabled = enableLibetpan; deps = [ libetpan ]; } + { flags = [ "libravatar-plugin" ]; enabled = enablePluginLibravatar; } + { flags = [ "libsm" ]; enabled = enableLibSM; deps = [ libSM ]; } + { flags = [ "litehtml_viewer-plugin" ]; enabled = enablePluginLitehtmlViewer; deps = [ gumbo ]; } + { flags = [ "mailmbox-plugin" ]; enabled = enablePluginMailmbox; } + { flags = [ "managesieve-plugin" ]; enabled = enablePluginManageSieve; } + { flags = [ "networkmanager" ]; enabled = enableNetworkManager; deps = [ networkmanager ]; } + { flags = [ "newmail-plugin" ]; enabled = enablePluginNewMail; } + { flags = [ "notification-plugin" ]; enabled = enablePluginNotification; deps = [ libnotify ] ++ [(if useGtk3 then libcanberra-gtk3 else libcanberra-gtk2)]; } + { flags = [ "pdf_viewer-plugin" ]; enabled = enablePluginPdfViewer; deps = [ poppler ]; } + { flags = [ "perl-plugin" ]; enabled = enablePluginPerl; deps = [ perl ]; } + { flags = [ "pgpcore-plugin" "pgpinline-plugin" "pgpmime-plugin" ]; enabled = enablePluginPgp; deps = [ gnupg gpgme ]; } + { flags = [ "python-plugin" ]; enabled = enablePluginPython; } + { flags = [ "rssyl-plugin" ]; enabled = enablePluginRssyl; deps = [ libxml2 ]; } + { flags = [ "smime-plugin" ]; enabled = enablePluginSmime; } + { flags = [ "spam_report-plugin" ]; enabled = enablePluginSpamReport; } + { flags = [ "spamassassin-plugin" ]; enabled = enablePluginSpamassassin; } + { flags = [ "svg" ]; enabled = enableSvg; deps = [ librsvg ]; } + { flags = [ "tnef_parse-plugin" ]; enabled = enablePluginTnefParse; deps = [ libytnef ]; } + { flags = [ "valgrind" ]; enabled = enableValgrind; deps = [ valgrind ]; } + { flags = [ "vcalendar-plugin" ]; enabled = enablePluginVcalendar; deps = [ libical ]; } ]; +in stdenv.mkDerivation rec { + pname = "claws-mail"; + inherit version; + + src = fetchgit ({ + rev = version; + url = "git://git.claws-mail.org/claws.git"; + } // (if useGtk3 then gtk3src else gtk2src)); + + 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 = '' @@ -54,51 +139,29 @@ 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)] + ++ concatMap (f: optionals f.enabled f.deps) (filter (f: f ? deps) features) + ; 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 (!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"; + [ + "--disable-manual" # Missing docbook-tools, e.g., docbook2html + "--disable-compface" # Missing compface library + "--disable-jpilot" # Missing jpilot library - enableParallelBuilding = true; + "--disable-gdata-plugin" # Complains about missing libgdata, even when provided + ] ++ + (map (feature: map (flag: strings.enableFeature feature.enabled flag) feature.flags) features); - pythonPath = with python.pkgs; [ pygobject2 pygtk ]; + enableParallelBuilding = true; preFixup = '' - buildPythonPath "$out $pythonPath" + buildPythonPath "$out $pythonPkgs" gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share" --prefix PYTHONPATH : "$program_PYTHONPATH") ''; @@ -110,8 +173,8 @@ stdenv.mkDerivation rec { meta = { description = "The user-friendly, lightweight, and fast email client"; homepage = "https://www.claws-mail.org/"; - license = licenses.gpl3; + license = licenses.gpl3Plus; platforms = platforms.linux; - maintainers = with maintainers; [ fpletz globin orivej ]; + maintainers = with maintainers; [ fpletz globin orivej oxzi ajs124 ]; }; } |