Marius Bakke <mba...@fastmail.com> writes: > Hi Guix, > > I read somewhere that Debian packages certain Firefox extensions. I > tried doing the same with Guix, but haven't been able to get IceCat to > load extensions from a directory. > > The attached (outdated!) patch adds the "uBlock" XPI to > <guix-profile>/lib/icecat/extensions. I've tried symlinking this to > "standard" system folders (from IceCat source code), and disabled > unsigned extensions, but no luck so far. Maybe someone more familiar > with IceCat internals can try it? > > I would love to have my favourite extensions managed by Guix!
I've had a similar idea last year, and I still think it's worth considering. I'm not sure if I mentioned it here on the mailing list. Certain applications, like Chromium based browsers and Mozilla based software (firefox, thunderbird) allow the use of an system wide extension/addon store. This is how Gentoo handles it, and I quiet like it that I don't have to trust these corporations with how they think distributing such code is secure/just/etc. When we do this, we have the possibility to control what's inside the app-stores and avoid the web interface as a middleware. I have more reasons to lobby for this, but I hope it's just self explanatory why this is a good idea. For starters you could look at the Gentoo ebuild for chromium, palemoon, firefox, or let me come up with a short patch to icecat. I could work on this tomorrow. When we do this, I also suggest to name accordingly, like (gnu packages gnuzilla-plugins) (gnu packages qupzilla-plugins) etc, one module for each compatible browser (extensions which work in a family of browsers or deriviates of them). I am especially unhappy with palemoon, where the website, and therefore the store, is behind the great firewall of cloudflare. I'm still packaging it, but it's annyoing. > From 3a1bc1a489c5f7cd624c661a8887bf2e89ea74b2 Mon Sep 17 00:00:00 2001 > From: Marius Bakke <mba...@fastmail.com> > Date: Tue, 1 Nov 2016 10:33:52 +0000 > Subject: [PATCH] gnu: Add ublock. > > --- > gnu/packages/web-plugins.scm | 114 > +++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 114 insertions(+) > create mode 100644 gnu/packages/web-plugins.scm > > diff --git a/gnu/packages/web-plugins.scm b/gnu/packages/web-plugins.scm > new file mode 100644 > index 000000000..e124b8e74 > --- /dev/null > +++ b/gnu/packages/web-plugins.scm > @@ -0,0 +1,114 @@ > +;;; GNU Guix --- Functional package management for GNU > +;;; Copyright © 2016 Marius Bakke <mba...@fastmail.com> > +;;; > +;;; This file is part of GNU Guix. > +;;; > +;;; GNU Guix is free software; you can redistribute it and/or modify it > +;;; under the terms of the GNU General Public License as published by > +;;; the Free Software Foundation; either version 3 of the License, or (at > +;;; your option) any later version. > +;;; > +;;; GNU Guix is distributed in the hope that it will be useful, but > +;;; WITHOUT ANY WARRANTY; without even the implied warranty of > +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +;;; GNU General Public License for more details. > +;;; > +;;; You should have received a copy of the GNU General Public License > +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. > + > +(define-module (gnu packages web-plugins) > + #:use-module ((guix licenses) #:prefix license:) > + #:use-module (guix download) > + #:use-module (guix git-download) > + #:use-module (guix build-system gnu) > + #:use-module (guix build-system trivial) > + #:use-module (guix packages) > + #:use-module (gnu packages python) > + #:use-module (gnu packages zip)) > + > +(define uassets > + (package > + (name "uassets") > + (version "8f505b07572f0ed35d3bfec6ba4c9058f4270ae7") > + (source (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/uBlockOrigin/uAssets.git") > + (commit version))) > + (file-name (string-append name "-" version "-checkout")) > + (sha256 > + (base32 > + "154i7p2qa2jq5907n9bqsy9bh2l2iiynhd7x9s4d6dabwfq7aa5n")))) > + (build-system trivial-build-system) > + (arguments > + `(#:modules ((guix build utils)) > + #:builder > + (begin > + (use-modules (guix build utils)) > + (copy-recursively (assoc-ref %build-inputs "source") > + (assoc-ref %outputs "out")) > + #t))) > + (synopsis "Filter lists and rulesets for uBlock and uMatrix") > + (description > + "Resources for uBlock Origin, uMatrix: static filter lists, > +ready-to-use rulesets, etc.") > + (home-page "https://github.com/uBlockOrigin/uAssets") > + (license license:gpl3))) ; TODO: verify > + > +(define-public ublock > + (package > + (name "ublock") > + (version "1.9.16") > + (source (origin > + (method url-fetch) > + (uri (string-append > + "https://github.com/gorhill/uBlock/archive/" > + version ".tar.gz")) > + (sha256 > + (base32 > + "0460sh05ahxl6539pfxbgaf1ibxxi3c656pxazwnppln2zaiigfz")))) > + (build-system gnu-build-system) > + ;; We use gnu-build-system to benefit from unpack and > + ;; source patching, but won't use any standard phases. > + (arguments > + `(#:tests? #f > + #:phases > + (modify-phases %standard-phases > + (add-after 'unpack 'copy-assets > + (lambda* (#:key inputs #:allow-other-keys) > + (copy-recursively (assoc-ref inputs "uassets") > + "../uAssets") > + #t)) > + (delete 'configure) > + (replace 'build > + (lambda _ > + (zero? (system* "./tools/make-firefox.sh" "all")) > + ;(zero? (system* "./tools/make-firefox.sh")) > + )) > + (replace 'install > + (lambda* (#:key outputs #:allow-other-keys) > + (let* ((out (assoc-ref outputs "out")) > + (extdir (string-append > + out "/lib/icecat/extensions"))) > + ;(mkdir-p extdir) > + ;(copy-recursively "dist/build/uBlock0.firefox" extdir) > + (install-file "dist/build/uBlock0.firefox.xpi" extdir) > + #t)))))) > + (native-inputs > + `(("python" ,python-wrapper) > + ("uassets" ,uassets) > + ("zip" ,zip))) > + (synopsis "Efficient content blocker") > + (description > + "uBlock Origin is a \"wide spectrum\" blocker for web content. > +It can block ads, trackers, malware sites and similar and comes with a > +comprehensive pre-configured filter list covering known-bad sites.") > + (home-page "https://github.com/gorhill/uBlock") > + ;; uBlock is distributed under GPL3+ but includes a handful of > + ;; components covered by other licenses. > + (license (list license:gpl3+ > + license:cc-by-sa3.0 > + license:mpl2.0 > + ;; The malware hosts list has no proper license and just > + ;; includes the text "our list can be used by anyone". > + (license:non-copyleft > "https://www.malwaredomainlist.com/"))))) > -- > 2.11.0 > -- ♥Ⓐ ng0 -- https://www.inventati.org/patternsinthechaos/