Subject: [PATCH 0/2] Install Chromium extensions with Guix!

From: Marius Bakke <[email-masked]>
Date: Fri, 30 Oct 2020 19:29:25 +0100

Greetings Guix,

These patches lay the groundwork for packaging Chromium extensions with
Guix.  Currently only uBlock Origin has been packaged, but adding others
should be technically straight forward.  Practically it turns out
somewhat difficult because many extensions rely on the node.js ecosystem.

Patch 1/2 adds a search path mechanism to ungoogled-chromium such that
it looks for local extensions in $CHROMIUM_EXTENSION_DIRECTORY instead
of the default "/usr/share/chromium/extensions".

Patch 2/2 adds a generic MAKE-CHROMIUM-EXTENSION procedure that turns
a <package> object containing an uncompressed extension directory into
a signed .crx file visible to Chromium through a crafted JSON file.

There is one problem with the proposed patches: extensions are not
automatically updated.  That is, updating the "ublock-origin-chromium"
package will not update the browser profile even after a browser
restart.  Worse, uninstalling the extension through Chromium will leave
you no way to install it again even after it has been updated.

Not sure if that should be a blocking issue.

I'm also not sure whether (gnu packages browser-extensions) is a good
home for the helper procedures that create signing key, etc.  Thoughts?

To aid testing I have started a build of the patched ungoogled-chromium
on ci.guix.gnu.org[*].  It should be finished by tomorrow(!).

(testers can use "chromium --user-data-dir=/tmp/foo" to avoid messing
with their regular profile)

I'm currently relocating to a new city and won't be able to follow up
on this until next week.  In the meantime, feedback very welcome!

[*] on commit eee35fe3b7cb21792b90ecbf5a834b5a3fdb6f04.

Marius Bakke (2):
  gnu: ungoogled-chromium: Add search path for installed extensions.
  gnu: Add ublock-origin-chromium.

 gnu/local.mk                                  |   2 +
 gnu/packages/browser-extensions.scm           | 274 ++++++++++++++++++
 gnu/packages/chromium.scm                     |  18 +-
 .../ungoogled-chromium-search-path.patch      |  28 ++
 4 files changed, 314 insertions(+), 8 deletions(-)
 create mode 100644 gnu/packages/browser-extensions.scm
 create mode 100644 gnu/packages/patches/ungoogled-chromium-search-path.patch

-- 
2.28.0