[bug#76420] gnu: Add canvasblocker/icecat.

Message ID 87ecztrb0k.fsf@ngraves.fr
State New
Headers
Series [bug#76420] gnu: Add canvasblocker/icecat. |

Commit Message

Nicolas Graves Feb. 19, 2025, 7:26 p.m. UTC
  * gnu/packages/browser-extensions.scm (canvasblocker/icecat): New variable.
---
 gnu/packages/browser-extensions.scm | 49 +++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
  

Comments

Ludovic Courtès March 10, 2025, 1:41 p.m. UTC | #1
Nicolas Graves <ngraves@ngraves.fr> skribis:

> * gnu/packages/browser-extensions.scm (canvasblocker/icecat): New variable.

[...]

> +       (snippet
> +        #~(for-each
> +           (match-lambda
> +             ((? file-is-directory? dir)
> +              (delete-file-recursively dir))
> +             (file
> +              (delete-file file)))
> +           (remove (cut member <> '("." ".tools" ".."))
> +                   (append
> +                    ;; Hidden files and directories
> +                    (filter (cut string-prefix? "." <>) (scandir "."))
> +                    '("canvasblocker.xpi" "package-lock.json")))))))

filter + remove + match: sounds like we could make it less verbose.

Maybe with:

  (for-each (match-lambda
              ((or "." ".." ".tools") #t)
              ( …)
            (scandir "."))

?

Apart from that it LGTM!

Ludo’.
  

Patch

diff --git a/gnu/packages/browser-extensions.scm b/gnu/packages/browser-extensions.scm
index 01ef0b49be..b9f291332f 100644
--- a/gnu/packages/browser-extensions.scm
+++ b/gnu/packages/browser-extensions.scm
@@ -61,6 +61,55 @@  (define adaptive-tab-bar-colour
 (define-public adaptive-tab-bar-colour/icecat
   (make-icecat-extension adaptive-tab-bar-colour))
 
+(define canvasblocker
+  (package
+    (name "canvasblocker")
+    (version "1.11")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/kkapsner/CanvasBlocker")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "16mhvk7swbkmb24smkv1c147brb0mm2nfaxqw2dq43sl7ncasf32"))
+       (modules '((guix build utils)
+                  (ice-9 match)
+                  (ice-9 ftw)
+                  (srfi srfi-1)
+                  (srfi srfi-26)))
+       (snippet
+        #~(for-each
+           (match-lambda
+             ((? file-is-directory? dir)
+              (delete-file-recursively dir))
+             (file
+              (delete-file file)))
+           (remove (cut member <> '("." ".tools" ".."))
+                   (append
+                    ;; Hidden files and directories
+                    (filter (cut string-prefix? "." <>) (scandir "."))
+                    '("canvasblocker.xpi" "package-lock.json")))))))
+    (build-system copy-build-system)
+    (properties '((addon-id . "CanvasBlocker@kkapsner.de")))
+    (arguments
+     (list
+      #:install-plan  ;deduced from .tools/build.js
+      #~'(("." #$(assq-ref properties 'addon-id)
+           #:exclude ("crowdin.yml" "package.json" "releaseNotes.txt")
+           #:exclude-regexp ("test/.*" "versions/.*" ".tools/*")))))
+    (home-page "https://github.com/kkapsner/CanvasBlocker")
+    (synopsis "Firefox extension to protect from being figerprinted")
+    (description "This extension allows users to prevent websites from using
+some Javascript APIs to fingerprint them.  Users can choose to block the APIs
+entirely on some or all websites (which may break some websites) or just block
+or fake its fingerprinting-friendly readout API.")
+    (license license:mpl2.0)))
+
+(define-public canvasblocker/icecat
+  (make-icecat-extension canvasblocker))
+
 (define play-to-kodi
   (package
     (name "play-to-kodi")