{ stdenv, lib, fetchurl, wrapGAppsHook3, autoreconfHook, bison, flex, curl, gtk3, pkg-config, python3, shared-mime-info, glib-networking, gsettings-desktop-schemas, # Package compatibility: old parameters whose name were not directly derived enablePgp ? true, enablePluginNotificationDialogs ? true, enablePluginNotificationSounds ? true, enablePluginPdf ? true, enablePluginRavatar ? true, enableSpellcheck ? true, # Arguments to include external libraries enableLibSM ? true, xorg, enableGnuTLS ? true, gnutls, enableEnchant ? enableSpellcheck, enchant, enableDbus ? true, dbus, dbus-glib, enableLdap ? true, openldap, enableNetworkManager ? true, networkmanager, enableLibetpan ? true, libetpan, enableValgrind ? !stdenv.hostPlatform.isDarwin && lib.meta.availableOn stdenv.hostPlatform valgrind, 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 ? true, webkitgtk_4_0, enablePluginFetchInfo ? true, enablePluginKeywordWarner ? true, enablePluginLibravatar ? enablePluginRavatar, enablePluginLitehtmlViewer ? true, gumbo, enablePluginMailmbox ? true, enablePluginManageSieve ? true, enablePluginNewMail ? true, enablePluginNotification ? (enablePluginNotificationDialogs || enablePluginNotificationSounds), 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, }: let pythonPkgs = with python3.pkgs; [ python3 wrapPython pygobject3 ]; 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 = [ webkitgtk_4_0 ]; } { flags = [ "fetchinfo-plugin" ]; enabled = enablePluginFetchInfo; } { flags = [ "keyword_warner-plugin" ]; enabled = enablePluginKeywordWarner; } { 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 = [ xorg.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 ] ++ [ libcanberra-gtk3 ]; } { 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"; version = "4.3.0"; src = fetchurl { url = "https://claws-mail.org/download.php?file=releases/claws-mail-${version}.tar.xz"; hash = "sha256-ldwdiI65FvAoRn+gw8v0W6/2Z4eTt7+zX6u6Ap1YHOE="; }; 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:+:}${python3}/lib # generate version without .git [ -e version ] || echo "echo ${version}" > version ''; postPatch = '' substituteInPlace configure.ac \ --replace 'm4_esyscmd([./get-git-version])' '${version}' substituteInPlace src/procmime.c \ --subst-var-by MIMEROOTDIR ${shared-mime-info}/share ''; nativeBuildInputs = [ autoreconfHook pkg-config bison flex wrapGAppsHook3 ]; propagatedBuildInputs = pythonPkgs; buildInputs = [ curl gsettings-desktop-schemas glib-networking gtk3 ] ++ lib.concatMap (f: lib.optionals f.enabled f.deps) (lib.filter (f: f ? deps) features); configureFlags = [ "--disable-manual" # Missing docbook-tools, e.g., docbook2html "--disable-compface" # Missing compface library "--disable-jpilot" # Missing jpilot library ] ++ (map ( feature: map (flag: lib.strings.enableFeature feature.enabled flag) feature.flags ) features); enableParallelBuilding = true; preFixup = '' buildPythonPath "$out $pythonPkgs" 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 ''; meta = with lib; { description = "User-friendly, lightweight, and fast email client"; mainProgram = "claws-mail"; homepage = "https://www.claws-mail.org/"; license = licenses.gpl3Plus; platforms = platforms.linux; maintainers = with maintainers; [ fpletz globin orivej oxzi ajs124 ]; }; }