From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id aFHaOaw6r17xWgAA0tVLHw (envelope-from ) for ; Sun, 03 May 2020 21:42:04 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id mCjRMbc6r16WSQAAbx9fmQ (envelope-from ) for ; Sun, 03 May 2020 21:42:15 +0000 Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:470:142::17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id E392A94237E for ; Sun, 3 May 2020 21:42:12 +0000 (UTC) Received: from localhost ([::1]:39318 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jVMNI-0005T0-V3 for larch@yhetil.org; Sun, 03 May 2020 17:42:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60718) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jVMN8-0005Sq-FB for guix-patches@gnu.org; Sun, 03 May 2020 17:42:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:46698) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jVMN8-0000TS-5w for guix-patches@gnu.org; Sun, 03 May 2020 17:42:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jVMN8-0002iZ-3a for guix-patches@gnu.org; Sun, 03 May 2020 17:42:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#40959] [PATCH] gnu: Add icedove. References: <20200429105614.11517-1-jonathan.brielmaier@web.de> In-Reply-To: <20200429105614.11517-1-jonathan.brielmaier@web.de> Resent-From: Ricardo Wurmus Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 03 May 2020 21:42:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40959 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 40959@debbugs.gnu.org Cc: Ricardo Wurmus , Nikita , Adrian Malacoda , Jonathan Brielmaier Received: via spool by 40959-submit@debbugs.gnu.org id=B40959.158854210310413 (code B ref 40959); Sun, 03 May 2020 21:42:02 +0000 Received: (at 40959) by debbugs.gnu.org; 3 May 2020 21:41:43 +0000 Received: from localhost ([127.0.0.1]:58244 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVMMd-0002hf-6y for submit@debbugs.gnu.org; Sun, 03 May 2020 17:41:43 -0400 Received: from sender4-of-o53.zoho.com ([136.143.188.53]:21314) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVMMY-0002hU-9Q for 40959@debbugs.gnu.org; Sun, 03 May 2020 17:41:30 -0400 ARC-Seal: i=1; a=rsa-sha256; t=1588542083; cv=none; d=zohomail.com; s=zohoarc; b=EKfOQgPik+PcgY0+LyrsrdGlFZ3ZAArBba3ZGLPOSwzH9F8nKQ1cVtIejgl1K73gx8RwnydT/eg1kvaTsgjuztQrpabbPNwE91YQiXBJljmT7Qj1aC1jWsLRuPyperOaLm6rycwAZdth9UqzS6QmT36IkNLZTPwQ5g4k5qnWsTY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588542083; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:MIME-Version:Message-ID:Subject:To; bh=InQGhlDrFF/ThVnLdrlP9P7q/cq3NLLW3N2C8uUP2q4=; b=mnPMV5rkaQtkSWsSDc/TWbJwOgwSsFUQfdCPtYdWnQ5mcWZZbY78SnlZ9qcoLNWpLU24EcvE1IgQ8066PKytwj8tXlMwwDFrVW39Y7GzQfmURxnI6HdDa4Ws4iLkXysZZ63rVkgCTufMr3DwS6azs7Mwbs3Q+zWk8JtkZao/Bng= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=elephly.net; spf=pass smtp.mailfrom=rekado@elephly.net; dmarc=pass header.from= header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1588542083; s=zoho; d=elephly.net; i=rekado@elephly.net; h=From:To:Cc:Message-ID:Subject:Date:MIME-Version:Content-Type:Content-Transfer-Encoding; bh=InQGhlDrFF/ThVnLdrlP9P7q/cq3NLLW3N2C8uUP2q4=; b=E6xJ55P+HHyF+DDln2s+QcPMEnAm/KibhoIXmiHFWyyMF/Qb1Vm8orLp6A1qqZEC RHFVRCCFjRByz+9HiWmt7rSLa4ky2d5cK8bHj985ZjodAZ6ZgUy7Is1cUgLHQkIJ+Ij zrnWfm9cokUW9Nu7ZJ5JuZv0mBCszqNjFaHE8E/o= Received: from localhost (p4FD5A1FA.dip0.t-ipconnect.de [79.213.161.250]) by mx.zohomail.com with SMTPS id 158854208114451.04877616768067; Sun, 3 May 2020 14:41:21 -0700 (PDT) From: Ricardo Wurmus Message-ID: <20200503214115.26975-1-rekado@elephly.net> Date: Sun, 3 May 2020 23:41:15 +0200 X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-ZohoMailClient: External X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-Spam-Score: -1.0 (-) X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Scanner: scn0 X-Spam-Score: 2.99 Authentication-Results: aspmx1.migadu.com; dkim=fail (rsa verify failed) header.d=elephly.net header.s=zoho header.b=E6xJ55P+; dmarc=none; spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 2001:470:142::17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Scan-Result: default: False [2.99 / 13.00]; GENERIC_REPUTATION(0.00)[-0.49404070323179]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2001:470:142::/48:c]; IP_REPUTATION_HAM(0.00)[asn: 22989(0.14), country: US(-0.00), ip: 2001:470:142::17(-0.49)]; DWL_DNSWL_FAIL(0.00)[2001:470:142::17:server fail]; R_DKIM_REJECT(1.00)[elephly.net:s=zoho]; RCPT_COUNT_FIVE(0.00)[5]; ARC_REJECT(2.00)[signature check failed: fail, {[1] = sig:zohomail.com:reject}]; MX_GOOD(-0.50)[cached: eggs.gnu.org]; DKIM_TRACE(0.00)[elephly.net:-]; MAILLIST(-0.20)[mailman]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; RECEIVED_SPAMHAUS_PBL(0.00)[79.213.161.250:received]; RCVD_IN_DNSWL_FAIL(0.00)[2001:470:142::17:server fail]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:22989, ipnet:2001:470:142::/48, country:US]; TAGGED_FROM(0.00)[larch=yhetil.org]; FROM_NEQ_ENVFROM(0.00)[rekado@elephly.net,guix-patches-bounces@gnu.org]; URIBL_BLOCKED(0.00)[n0.is:email,tobias.gr:email,gnu.org:url,fsf.org:url,torproject.org:url,elephly.net:email,kadziolka.net:email,mozilla.org:url,monarch-pass.net:email,ajgrf.com:email,lassieur.org:email,flashner.co.il:email]; RCVD_TLS_LAST(0.00)[]; FROM_HAS_DN(0.00)[]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[elephly.net]; HAS_LIST_UNSUB(-0.01)[]; MID_CONTAINS_FROM(1.00)[]; FREEMAIL_CC(0.00)[elephly.net,n0.is,monarch-pass.net,web.de]; RCVD_COUNT_SEVEN(0.00)[8]; FORGED_SENDER_MAILLIST(0.00)[] X-TUID: d3v+vmvcd08s From: Jonathan Brielmaier * gnu/packages/gnuzilla.scm (%icedove-build-id, icedove): New variables. Co-authored-by: Nikita Co-authored-by: Adrian Malacoda Co-authored-by: Ricardo Wurmus --- gnu/packages/gnuzilla.scm | 302 +++++++++++++++++++++++++++++++++++++- 1 file changed, 300 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 06d855ee3e..f6143591fc 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -6,12 +6,14 @@ ;;; Copyright =C2=A9 2016, 2017, 2018, 2019 Efraim Flashner ;;; Copyright =C2=A9 2016 Alex Griffin ;;; Copyright =C2=A9 2017 Cl=C3=A9ment Lassieur -;;; Copyright =C2=A9 2017 ng0 +;;; Copyright =C2=A9 2017, 2018 Nikita ;;; Copyright =C2=A9 2017, 2018, 2020 Tobias Geerinckx-Rice -;;; Copyright =C2=A9 2018 Ricardo Wurmus +;;; Copyright =C2=A9 2018, 2020 Ricardo Wurmus ;;; Copyright =C2=A9 2019 Ivan Petkov ;;; Copyright =C2=A9 2020 Oleg Pykhalov ;;; Copyright =C2=A9 2020 Jakub K=C4=85dzio=C5=82ka +;;; Copyright =C2=A9 2019, 2020 Adrian Malacoda +;;; Copyright =C2=A9 2020 Jonathan Brielmaier ;;; ;;; This file is part of GNU Guix. ;;; @@ -1142,6 +1144,302 @@ standards of the IceCat project.") (cpe-name . "firefox_esr") (cpe-version . ,(first (string-split version #\-))))))) =20 +;; Update this together with icecat! +(define %icedove-build-id "20200428000000") +(define-public icedove + (package + (name "icedove") + (version "68.7.0") + (source icecat-source) + (properties + `((cpe-name . "thunderbird_esr"))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no check target + #:imported-modules ,%cargo-utils-modules ;for `generate-all-checksu= ms' + #:modules ((guix build utils) ;find-files + (sxml simple) + (ice-9 regex) + ,@%gnu-build-system-modules) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'prepare-thunderbird-sources + (lambda* (#:key inputs #:allow-other-keys) + (mkdir "comm") + (copy-recursively (assoc-ref inputs "thunderbird-sources") + "comm") + (delete-file-recursively "obj-x86_64-pc-linux-gnu") + (delete-file "sourcestamp.txt") + #t)) + (add-after 'patch-source-shebangs 'patch-cargo-checksums + (lambda _ + (use-modules (guix build cargo-utils)) + (let ((null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649= b934ca495991b7852b855")) + (substitute* '("Cargo.lock" "gfx/wr/Cargo.lock") + (("(\"checksum .* =3D )\".*\"" all name) + (string-append name "\"" null-hash "\""))) + (generate-all-checksums "third_party/rust")) + #t)) + ;; Fixes issue where each installation directory generates its ow= n profile. + ;; See e.g. https://trac.torproject.org/projects/tor/ticket/31457 + (add-after 'patch-source-shebangs 'fix-profile-setting + (lambda _ + (substitute* "comm/mail/moz.configure" + (("'MOZ_DEDICATED_PROFILES', True") + "'MOZ_DEDICATED_PROFILES', False")) + #t)) + (add-after 'prepare-thunderbird-sources 'rename-to-icedove + (lambda _ + (substitute* "comm/mail/confvars.sh" + (("MOZ_APP_BASENAME=3DThunderbird") + "MOZ_APP_BASENAME=3DIcedove\nMOZ_APP_DISPLAYNAME=3DIcedove= ") + (("MOZ_APP_NAME=3Dthunderbird") + "MOZ_APP_NAME=3Dicedove") + (("MOZ_UPDATER=3D1") + "MOZ_UPDATER=3D0")) + ;; Remove branding to comply with Mozilla's trademark policy + (with-directory-excursion "comm/mail/branding/nightly" + (delete-file "content/about-wordmark.svg") + (call-with-output-file "content/about-wordmark.svg" + (lambda (port) + (sxml->xml '(svg (@ (xmlns "http://www.w3.org/2000/svg"= ) + (viewBox "0 0 789.1 90.78") + (width "333") + (height "48") + (fill "#fff")) + (text (@ (x "400") (y "70") + (text-anchor "middle") + (font-size "90")) + "Icedove Daily")) + port))) + (substitute* '("locales/en-US/brand.properties" + "locales/en-US/brand.ftl" + "locales/en-US/brand.dtd" + "configure.sh") + (("Thunderbird") "Icedove") + (("mozilla.org") "guix.gnu.org"))) + ;; Remove other mentions of Thunderbird in user-visible text. + (with-directory-excursion "comm/mail/base/content" + (substitute* '("newInstallPage.xhtml" + "overrides/app-license-name.html" + "newInstall.xul") + (("Thunderbird") "Icedove"))) + (with-directory-excursion "comm/mail/components/" + (substitute* '("mailGlue.js" + "extensions/schemas/addressBook.json" + "extensions/schemas/tabs.json" + "extensions/schemas/cloudFile.json" + "extensions/schemas/chrome_settings_override= s.json" + "extensions/schemas/windows.json" + "extensions/parent/ext-mail.js" + "im/messages/mail/Info.plist" + "enterprisepolicies/moz.build" + "enterprisepolicies/helpers/moz.build" + "enterprisepolicies/schemas/moz.build" + "preferences/chat.inc.xul") + (("Thunderbird") "Icedove"))) + (substitute* "comm/calendar/lightning/lightning-packager.mk" + (("ifeq \\(thunderbird") + "ifeq (icedove")) + (substitute* '("comm/mailnews/base/prefs/content/accountUtils= .js" + "comm/mailnews/extensions/newsblog/content/fee= d-subscriptions.js" + "comm/common/src/customizeToolbar.js") + (("AppConstants.MOZ_APP_NAME (.)=3D \"thunderbird" _ e) + (format #f "AppConstants.MOZ_APP_NAME ~a=3D \"icedove" e))= ) + + ;; Override addon URLs and settings + (substitute* "comm/mail/app/profile/all-thunderbird.js" + (("pref\\(\"extensions.webservice.discoverURL\".*" m) + (string-append m ", \"https://directory.fsf.org/wiki/Icedo= ve\");")) + (("pref\\(\"extensions.getAddons.search.url\".*" m) + (string-append m ", \"https://guix.gnu.org/packages\");")) + (("pref\\(\"extensions.update.enabled\".*" m) + (string-append m ", false);")) + (("pref\\(\"extensions.systemAddon.update.enabled\".*" m) + (string-append m ", false);")) + (("pref\\(\"lightweightThemes.update.enabled\".*" m) + (string-append m ", false);"))) + #t)) + (add-after 'build 'neutralize-store-references + (lambda _ + ;; Mangle the store references to compilers & other build too= ls in + ;; about:buildconfig, reducing Icedove's closure significant. + ;; The resulting files are saved in lib/thunderbird/omni.ja + (substitute* + ;; Use find because the path "obj-x86_64-pc-linux-gnu" co= ntains + ;; the architecture and the system -> more complicated. + (find-files "." "buildconfig.html") + (((format #f "(~a/)([0-9a-df-np-sv-z]{32})" + (regexp-quote (%store-directory))) + _ store hash) + (string-append store + (string-take hash 8) + "" + (string-drop hash 8)))) + #t)) + (replace 'configure + (lambda* (#:key inputs outputs configure-flags #:allow-other-ke= ys) + (let* ((out (assoc-ref outputs "out")) + (bash (which "bash")) + (abs-srcdir (getcwd)) + (srcdir (string-append "../" (basename abs-srcdir))) + (flags `(,(string-append "--prefix=3D" out) + ,@configure-flags)) + (mozconfig (string-append (getcwd) "/.mozconfig"))) + (setenv "SHELL" bash) + (setenv "AUTOCONF" + (string-append (assoc-ref %build-inputs + "autoconf") + "/bin/autoconf")) + (setenv "CONFIG_SHELL" bash) + (setenv "QA_CONFIGURE_OPTIONS" ".*") + (setenv "MOZBUILD_STATE_PATH" + (string-append (getcwd) "/mach_state")) + (setenv "MOZCONFIG" + (string-append (getcwd) "/.mozconfig")) + (setenv "CC" "gcc") + (setenv "MOZ_NOSPAM" "1") + (setenv "PYTHON" + (string-append (assoc-ref inputs "python2") + "/bin/python")) + (setenv "MOZ_BUILD_DATE" ,%icedove-build-id) ; avoid timest= amp + (setenv "LDFLAGS" (string-append "-Wl,-rpath=3D" + (assoc-ref outputs "out") + "/lib/icedove")) + (mkdir-p (string-append (getcwd) "/builddir")) + (with-output-to-file mozconfig + (lambda () + (display + (string-append + "ac_add_options --disable-crashreporter\n" + "ac_add_options --disable-debug\n" + "ac_add_options --disable-debug-symbols\n" + "ac_add_options --disable-elf-hack\n" + "ac_add_options --disable-gconf\n" + "ac_add_options --disable-ion\n" + "ac_add_options --disable-necko-wifi\n" + "ac_add_options --disable-official-branding\n" + "ac_add_options --disable-tests\n" + "ac_add_options --disable-updater\n" + "ac_add_options --disable-webrtc\n" + "ac_add_options --enable-application=3Dcomm/mail\n" + "ac_add_options --enable-calendar\n" + "ac_add_options --enable-content-sandbox\n" + "ac_add_options --enable-default-toolkit=3D\"cairo-gt= k3\"\n" + "ac_add_options --enable-optimize\n" + "ac_add_options --enable-pulseaudio\n" + "ac_add_options --enable-release\n" + "ac_add_options --enable-startup-notification\n" + "ac_add_options --enable-strip\n" + "ac_add_options --enable-system-ffi\n" + "ac_add_options --enable-system-pixman\n" + "ac_add_options --enable-system-sqlite\n" + "ac_add_options --prefix=3D" out "\n" + "ac_add_options --with-clang-path=3D" (assoc-ref %bui= ld-inputs "clang") "/bin/clang\n" + "ac_add_options --with-distribution-id=3Dorg.gnu\n" + "ac_add_options --with-libclang-path=3D" (assoc-ref %= build-inputs "clang") "/lib\n" + "ac_add_options --with-system-bz2\n" + "ac_add_options --with-system-icu\n" + "ac_add_options --with-system-jpeg\n" + "ac_add_options --with-system-libevent\n" + "ac_add_options --with-system-nspr\n" + "ac_add_options --with-system-nss\n" + "ac_add_options --with-system-zlib\n" + "ac_add_options --with-user-appdir=3D\\.icedove\n")))= ) + (display (getcwd)) + (newline) + (display "mach configure") + (invoke "./mach" "configure")))) + (replace 'build + (lambda _ (invoke "./mach" "build"))) + (replace 'install + (lambda _ (invoke "./mach" "install"))) + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib")) + (gtk (assoc-ref inputs "gtk+")) + (gtk-share (string-append gtk "/share")) + (pulseaudio (assoc-ref inputs "pulseaudio")) + (pulseaudio-lib (string-append pulseaudio "/lib"))) + (wrap-program (car (find-files lib "^icedove$")) + `("XDG_DATA_DIRS" prefix (,gtk-share)) + `("LD_LIBRARY_PATH" prefix (,pulseaudio-lib))) + #t)))))) + (inputs + `(("bzip2" ,bzip2) + ("cairo" ,cairo) + ("cups" ,cups) + ("dbus-glib" ,dbus-glib) + ("ffmpeg" ,ffmpeg) + ("freetype" ,freetype) + ("gdk-pixbuf" ,gdk-pixbuf) + ("glib" ,glib) + ("gtk+" ,gtk+) + ("gtk+-2" ,gtk+-2) + ("hunspell" ,hunspell) + ("icu4c" ,icu4c) + ("libcanberra" ,libcanberra) + ("libevent" ,libevent) + ("libffi" ,libffi) + ("libgnome" ,libgnome) + ("libjpeg-turbo" ,libjpeg-turbo) + ("libpng-apng" ,libpng-apng) + ("libvpx" ,libvpx) + ("libxcomposite" ,libxcomposite) + ("libxft" ,libxft) + ("libxinerama" ,libxinerama) + ("libxscrnsaver" ,libxscrnsaver) + ("libxt" ,libxt) + ("mesa" ,mesa) + ("mit-krb5" ,mit-krb5) + ("nspr" ,nspr) + ("nss" ,nss) + ("pango" ,pango) + ("pixman" ,pixman) + ("pulseaudio" ,pulseaudio) + ("sqlite" ,sqlite) + ("startup-notification" ,startup-notification) + ("unzip" ,unzip) + ("zip" ,zip) + ("zlib" ,zlib))) + (native-inputs + `(("thunderbird-sources" + ;; The changeset identifier is taken from the file "sourcestamp.tx= t" + ;; in the Thunderbird release tarball. We don't use the release + ;; tarball because it duplicates the Icecat sources and only adds = the + ;; "comm" directory, which is provided by this repository. + ,(let ((changeset "f7099fd16d6f5dff22154eab3161674142501739")) + (origin + (method hg-fetch) + (uri (hg-reference + (url "https://hg.mozilla.org/releases/comm-esr68") + (changeset changeset))) + (file-name (string-append "thunderbird-" version "-checkout")= ) + (sha256 + (base32 + "1x0351wy0i1560893kzclyimpvj7cykavrkzsfrhgd8kycp4mf92"))))) + ("autoconf" ,autoconf-2.13) + ("cargo" ,rust "cargo") + ("clang" ,clang) + ("llvm" ,llvm) + ("nasm" ,nasm) + ("node" ,node) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python) + ("python2" ,python-2.7) + ("rust" ,rust) + ("rust-cbindgen" ,rust-cbindgen) + ("which" ,which) + ("yasm" ,yasm))) + (home-page "https://www.thunderbird.net") + (synopsis "Rebranded Mozilla Thunderbird email client") + (description + "This package provides an email client built based on Mozilla +Thunderbird. It supports email, news feeds, chat, calendar and contacts."= ) + (license license:mpl2.0))) + (define-public firefox-decrypt (package (name "firefox-decrypt") --=20 2.25.1