unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: ng0 <ng0@libertad.pw>
To: guix-devel@gnu.org
Subject: Re: Packaging IceCat extensions with Guix
Date: Fri, 13 Jan 2017 09:49:07 +0000	[thread overview]
Message-ID: <87ziiv9tnw.fsf@wasp.i-did-not-set--mail-host-address--so-tickle-me> (raw)
In-Reply-To: <87shonki5o.fsf@wasp.i-did-not-set--mail-host-address--so-tickle-me>

ng0 <ng0@libertad.pw> writes:

> Marius Bakke <mbakke@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.

Alright, in addition to what Mark wrote:

The ebuild for firefox based browsers does this:
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/firefox/firefox-45.6.0-r1.ebuild#n145

Which includes a simple sed:

# Ensure that our plugins dir is enabled as default
	sed -i -e "s:/usr/lib/mozilla/plugins:/usr/lib/nsbrowser/plugins:" \
		"${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path for 32bit!"
	sed -i -e "s:/usr/lib64/mozilla/plugins:/usr/lib64/nsbrowser/plugins:" \
		"${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path for 64bit!"

And then there's an appropriate, fitting eclass you use when you
package firefox extensions.
This is for the firefox version they use. I have forgotten which
version we are on, but it really is that simple. Only needs to be
adjusted to a location we agree on. Sort of.

> 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 <mbakke@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 <mbakke@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/
>
>

-- 
♥Ⓐ  ng0 -- https://www.inventati.org/patternsinthechaos/

  parent reply	other threads:[~2017-01-13  9:49 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-12 19:12 Packaging IceCat extensions with Guix Marius Bakke
2017-01-12 22:49 ` ng0
2017-01-13  1:26   ` Adonay Felipe Nogueira
2017-01-13  4:11     ` Mike Gerwitz
2017-01-13  9:49   ` ng0 [this message]
2017-06-08 18:46     ` ng0
2017-07-02 20:28       ` ng0
2017-01-13  1:49 ` Mark H Weaver
2017-01-13  2:18 ` Mark H Weaver
2017-01-14 17:46   ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ziiv9tnw.fsf@wasp.i-did-not-set--mail-host-address--so-tickle-me \
    --to=ng0@libertad.pw \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).