projects/guix·blob python-team · refs

477 lines · 18.4 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2020, 2021 Marius Bakke <[email protected]>
3;;; Copyright © 2023 Nicolas Graves <[email protected]>
4;;; Copyright © 2023, 2024 Clément Lassieur <[email protected]>
5;;; Copyright © 2025 Robin Templeton <[email protected]>
6;;; Copyright © 2025 André Batista <[email protected]>
7;;;
8;;; This file is part of GNU Guix.
9;;;
10;;; GNU Guix is free software; you can redistribute it and/or modify it
11;;; under the terms of the GNU General Public License as published by
12;;; the Free Software Foundation; either version 3 of the License, or (at
13;;; your option) any later version.
14;;;
15;;; GNU Guix is distributed in the hope that it will be useful, but
16;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;;; GNU General Public License for more details.
19;;;
20;;; You should have received a copy of the GNU General Public License
21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
23(define-module (gnu packages browser-extensions)
24 #:use-module (guix gexp)
25 #:use-module (guix packages)
26 #:use-module (guix download)
27 #:use-module (guix git-download)
28 #:use-module (guix build-system copy)
29 #:use-module (guix build-system gnu)
30 #:use-module (guix build-system qt)
31 #:use-module ((guix licenses) #:prefix license:)
32 #:use-module (gnu build chromium-extension)
33 #:use-module (gnu build icecat-extension)
34 #:use-module (gnu packages check)
35 #:use-module (gnu packages compression)
36 #:use-module (gnu packages password-utils)
37 #:use-module (gnu packages pkg-config)
38 #:use-module (gnu packages python)
39 #:use-module (gnu packages qt)
40 #:use-module (gnu packages security-token)
41 #:use-module (gnu packages tls))
42
43(define adaptive-tab-bar-colour
44 (package
45 (name "adaptive-tab-bar-colour")
46 (version "2.1.4")
47 (source
48 (origin
49 (method git-fetch)
50 (uri (git-reference
51 (url "https://github.com/easonwong-de/Adaptive-Tab-Bar-Colour")
52 (commit (string-append "v" version))))
53 (file-name (git-file-name name version))
54 (sha256
55 (base32
56 "03w06qrfg3bra6z7bmksj7mj27xnznn0ddm8gsr8z8b32hiifg4r"))))
57 (build-system copy-build-system)
58 (arguments
59 (list #:install-plan
60 #~'(("." #$(assq-ref (package-properties this-package) 'addon-id)))))
61 (home-page "https://github.com/easonwong-de/Adaptive-Tab-Bar-Colour")
62 (synopsis "Adaptive tab bar colour")
63 (description
64 "This package provides a browser extension for changing tab bar colour to
65match website theme.")
66 (license license:expat)
67 (properties '((addon-id . "ATBC@EasonWong")))))
68
69(define-public adaptive-tab-bar-colour/icecat
70 (make-icecat-extension adaptive-tab-bar-colour))
71
72(define canvasblocker
73 (package
74 (name "canvasblocker")
75 (version "1.12")
76 (source
77 (origin
78 (method git-fetch)
79 (uri (git-reference
80 (url "https://github.com/kkapsner/CanvasBlocker")
81 (commit version)))
82 (file-name (git-file-name name version))
83 (sha256
84 (base32 "0xxs6s7nrl4y4qiw2cpkqh170mbv78n0ixd874a72jjvczw2vpg7"))
85 (modules '((guix build utils) (ice-9 match) (ice-9 ftw)))
86 (snippet
87 #~(begin
88 (for-each delete-file
89 '("canvasblocker.xpi" "package-lock.json"))
90 ;; Delete all hidden files/directories except .tools.
91 (for-each
92 (match-lambda
93 ((or "." ".tools" ".."
94 (? (lambda (name)
95 (not (string-prefix? "." name)))))
96 #t)
97 ((? file-is-directory? dir)
98 (delete-file-recursively dir))
99 (file
100 (delete-file file)))
101 (scandir "."))))))
102 (build-system copy-build-system)
103 (properties '((addon-id . "[email protected]")))
104 (arguments
105 (list
106 #:install-plan ;deduced from .tools/build.js
107 #~'(("." #$(assq-ref properties 'addon-id)
108 #:exclude ("crowdin.yml" "package.json" "releaseNotes.txt")
109 #:exclude-regexp ("test/.*" "versions/.*" ".tools/*")))))
110 (home-page "https://github.com/kkapsner/CanvasBlocker")
111 (synopsis "Firefox extension to protect from being fingerprinted")
112 (description "This extension allows users to prevent websites from using
113some Javascript APIs to fingerprint them. Users can choose to block the APIs
114entirely on some or all websites (which may break some websites) or just block
115or fake its fingerprinting-friendly readout API.")
116 (license license:mpl2.0)))
117
118(define-public canvasblocker/icecat
119 (make-icecat-extension canvasblocker))
120
121(define play-to-kodi
122 (package
123 (name "play-to-kodi")
124 (version "1.9.1")
125 (home-page "https://github.com/khloke/play-to-xbmc-chrome")
126 (source (origin
127 (method git-fetch)
128 (uri (git-reference (url home-page) (commit version)))
129 (file-name (git-file-name name version))
130 (sha256
131 (base32
132 "01rmcpbkn9vhcd8mrah2jmd2801k2r5fz7aqvp22hbwmh2z5f1ch"))))
133 (build-system copy-build-system)
134 (synopsis "Send website contents to Kodi")
135 (description
136 "Play to Kodi is a browser add-on that can send video, audio, and other
137supported content to the Kodi media center.")
138 (license license:expat)))
139
140(define-public play-to-kodi/chromium
141 (make-chromium-extension play-to-kodi))
142
143(define ublock-main-assets
144 ;; Arbitrary commit of branch master,
145 ;; Update when updating uBlockOrigin.
146 (let* ((name "ublock-main-assets")
147 (commit "8269bd3d9b3dde54fa5dd1822ceb58a70011f132")
148 (revision "11")
149 (version (git-version "0" revision commit)))
150 (origin
151 (method git-fetch)
152 (uri (git-reference
153 (url "https://github.com/uBlockOrigin/uAssets")
154 (commit commit)))
155 (file-name (git-file-name name version))
156 (sha256
157 (base32 "0c4sqgfd8ir6j8b864xwv2nyjnca0jysqlxxag4mnfqm2cqa3y5i")))))
158
159(define ublock-prod-assets
160 ;; Arbitrary commit of branch gh-pages,
161 ;; Update when updating uBlockOrigin.
162 (let* ((name "ublock-prod-assets")
163 (commit "5c4e6191b9737f8656957ff08a48ebfd8ce5f570")
164 (revision "11")
165 (version (git-version "0" revision commit)))
166 (origin
167 (method git-fetch)
168 (uri (git-reference
169 (url "https://github.com/uBlockOrigin/uAssets")
170 (commit commit)))
171 (file-name (git-file-name name version))
172 (sha256
173 (base32 "1qbrcicbfbhd9pmr2fs1inzsl86jq0clr9pqpq8sanl6wilcfbvz")))))
174
175(define ublock-origin
176 (package
177 (name "ublock-origin")
178 (version "1.75.0")
179 (home-page "https://github.com/gorhill/uBlock")
180 (source (origin
181 (method git-fetch)
182 (uri (git-reference
183 (url home-page)
184 (commit version)))
185 (file-name (git-file-name name version))
186 (sha256
187 (base32
188 "0sivg5d493cmpmqjzmy5b5zl34q0rpx7jcrprsalkyh1jvv041sw"))))
189 (build-system gnu-build-system)
190 (outputs '("xpi" "firefox" "chromium"))
191 (properties '((addon-id . "[email protected]")))
192 (arguments
193 (list
194 #:tests? #f ;no tests
195 #:allowed-references '()
196 #:phases
197 #~(modify-phases (map (lambda (phase)
198 (assq phase %standard-phases))
199 '(set-paths unpack patch-source-shebangs))
200 (add-after 'unpack 'do-not-depend-on-git
201 (lambda _
202 (mkdir-p "dist/build/uAssets/main")
203 (copy-recursively #$ublock-main-assets "dist/build/uAssets/main")
204 (mkdir-p "dist/build/uAssets/prod")
205 (copy-recursively #$ublock-prod-assets "dist/build/uAssets/prod")))
206 (add-after 'unpack 'make-files-writable
207 (lambda _
208 ;; The build system copies some files and later tries
209 ;; modifying them.
210 (for-each make-file-writable (find-files "."))))
211 (add-after 'patch-source-shebangs 'build-xpi
212 (lambda _
213 (invoke "./tools/make-firefox.sh" "all")))
214 (add-after 'build-xpi 'build-chromium
215 (lambda _
216 (invoke "./tools/make-chromium.sh")))
217 (add-after 'build-chromium 'install
218 (lambda* (#:key outputs #:allow-other-keys)
219 (let* ((addon-id #$(assq-ref properties 'addon-id))
220 (firefox (in-vicinity
221 (assoc-ref outputs "firefox") addon-id))
222 (xpi (assoc-ref outputs "xpi"))
223 (chromium (assoc-ref outputs "chromium")))
224 (install-file "dist/build/uBlock0.firefox.xpi"
225 (string-append xpi "/lib/mozilla/extensions"))
226 (copy-recursively "dist/build/uBlock0.firefox" firefox)
227 (copy-recursively "dist/build/uBlock0.chromium" chromium)))))))
228 (native-inputs
229 (list python-wrapper zip))
230 (synopsis "Block unwanted content from web sites")
231 (description
232 "uBlock Origin is a @dfn{wide spectrum blocker} for IceCat and
233ungoogled-chromium.")
234 (license license:gpl3+)))
235
236(define-public ublock-origin/chromium
237 (make-chromium-extension ublock-origin "chromium"))
238
239(define-public ublock-origin/icecat
240 (make-icecat-extension ublock-origin "firefox"))
241
242(define-public passff-host
243 (package
244 (name "passff-host")
245 (version "1.2.5")
246 (home-page "https://codeberg.org/PassFF/passff-host")
247 (source (origin
248 (method git-fetch)
249 (uri (git-reference (url home-page) (commit version)))
250 (file-name (git-file-name name version))
251 (sha256
252 (base32
253 "01kw5w6ihm4d6l5va7c0mb7539rnmqfn16c9w543xf5s0n5f2i7h"))))
254 (build-system copy-build-system)
255 (arguments
256 (let ((native-manifests "lib/icecat/native-messaging-hosts"))
257 (list
258 #:install-plan
259 `'(("src" ,native-manifests #:include ("passff.json" "passff.py")))
260 #:phases
261 #~(modify-phases %standard-phases
262 (add-after 'unpack 'substitute
263 (lambda _
264 (substitute* "src/passff.json"
265 (("PLACEHOLDER")
266 (format #f "~a/~a/passff.py" #$output #$native-manifests)))
267 (substitute* "src/passff.py"
268 (("_VERSIONHOLDER_") #$version)
269 (("^COMMAND = .*")
270 (format #f "COMMAND = \"~a/bin/pass\"~%"
271 #$(this-package-input "password-store"))))
272 (patch-shebang "src/passff.py")))))))
273 (inputs (list password-store python))
274 (synopsis "Host app for the WebExtension PassFF")
275 (description "This piece of software wraps around the zx2c4 pass shell
276command. It has to be installed for the PassFF browser extension to work
277properly.")
278 (license license:gpl2+)))
279
280(define passff
281 (package
282 (name "passff")
283 (version "1.23")
284 (home-page "https://codeberg.org/passff/passff")
285 (source (origin
286 (method git-fetch)
287 (uri (git-reference (url home-page) (commit version)))
288 (file-name (git-file-name name version))
289 (sha256
290 (base32
291 "0y6ji3mqmp9dadj1rm712n1bjpl021a4yssv7m1ydllmw10gs009"))))
292 (propagated-inputs (list passff-host))
293 (build-system copy-build-system)
294 (properties '((addon-id . "[email protected]")))
295 (arguments
296 `(#:install-plan '(("src" ,(assq-ref properties 'addon-id)))
297 #:phases
298 (modify-phases %standard-phases
299 (add-after 'unpack 'substitute-placeholder
300 (lambda _
301 (substitute* "src/manifest.json"
302 (("_VERSIONHOLDER_") ,version)))))))
303 (synopsis "Pass management extension for Mozilla Firefox")
304 (description "This extension will allow you to access your zx2c4 pass
305repository directly from your web browser. You can choose to automatically
306fill and submit login forms if a matching password entry is found.")
307 (license license:gpl2+)))
308
309(define-public passff/icecat
310 (make-icecat-extension passff))
311
312(define keepassxc-browser
313 (package
314 (name "keepassxc-browser")
315 (version "1.10.3")
316 (source (origin
317 (method git-fetch)
318 (uri (git-reference
319 (url
320 "https://github.com/keepassxreboot/keepassxc-browser")
321 (commit version)))
322 (file-name (git-file-name name version))
323 (sha256
324 (base32
325 "1sykjjd8vnfkg3wj4bnbs6biakf5nnmr9jrvnlqhvzsm13x4mzvm"))
326 ;; Default 'manifest.json' targets chromium based browsers and
327 ;; depends on background.service_worker support.
328 ;; See: <https://bugzilla.mozilla.org/show_bug.cgi?id=1573659>
329 (snippet
330 #~(begin
331 (delete-file "keepassxc-browser/manifest.json")
332 (copy-file "dist/manifest_firefox.json"
333 "keepassxc-browser/manifest.json")))))
334 (build-system copy-build-system)
335 (properties
336 '((addon-id . "[email protected]")))
337 (arguments
338 `(#:install-plan
339 '(("keepassxc-browser" ,(assq-ref properties 'addon-id)))))
340 (synopsis "Browser extension for the KeePassXC password manager")
341 (description
342 "This package provides an extension allow the browser to work together
343with the @uref{https://keepassxc.org, KeePassXC} password manager.")
344 (home-page "https://keepassxc.org")
345 (license license:gpl3+)))
346
347(define-public keepassxc-browser/icecat
348 (make-icecat-extension keepassxc-browser))
349
350(define livemarks
351 (package
352 (name "livemarks")
353 (version "3.5")
354 (source (origin
355 (method git-fetch)
356 (uri (git-reference
357 (url "https://github.com/nt1m/livemarks")
358 (commit (string-append "v" version))))
359 (file-name (git-file-name name version))
360 (sha256
361 (base32
362 "02p2080lgnb2xy4n781ydjdywkg7g7hmz6cpnbh6icldbjy5xa5i"))))
363 (build-system copy-build-system)
364 (arguments
365 (list #:install-plan
366 #~'(("." #$(assq-ref (package-properties this-package) 'addon-id)))))
367 (home-page "https://github.com/nt1m/livemarks")
368 (synopsis "RSS feed bookmark folders")
369 (description
370 "This browser extension provides auto-updated RSS feed bookmark folders.")
371 (license license:expat)
372 (properties '((addon-id . "{c5867acc-54c9-4074-9574-04d8818d53e8}")))))
373
374(define-public livemarks/icecat
375 (make-icecat-extension livemarks))
376
377(define noscript
378 (package
379 (name "noscript")
380 (version "13.6.35.1984")
381 (source (origin
382 (method url-fetch/zipbomb)
383 (uri (string-append
384 "https://archive.torproject.org/tor-package-archive/torbrowser/noscript/noscript-"
385 version ".xpi"))
386 (sha256
387 (base32
388 "1fgi35401i4s87fd0h2si4g0dvmaq9v5gd7v9hakvg7y9hzji666"))))
389 (build-system copy-build-system)
390 (properties '((addon-id . "{73a6fe31-595d-460b-a920-fcc0f8843232}")))
391 (arguments
392 `(#:install-plan '(("." ,(assq-ref properties 'addon-id)))))
393 (home-page "https://noscript.net")
394 (synopsis "Software providing extra protection for various browsers")
395 (description "The NoScript Security Suite is a software providing extra
396protection for web browsers.")
397 (license license:gpl3+)))
398
399(define-public noscript/icecat
400 (make-icecat-extension noscript))
401
402(define privacy-redirect
403 (package
404 (name "privacy-redirect")
405 (version "1.1.49")
406 (source
407 (origin
408 (method git-fetch)
409 (uri (git-reference
410 (url "https://github.com/SimonBrazell/privacy-redirect")
411 (commit (string-append "v" version))))
412 (file-name (git-file-name name version))
413 (sha256
414 (base32
415 "13j5i6vh4lq9hcqmqbmn8fnymnplwra5rm696h6magbjxnj3nkyz"))))
416 (build-system copy-build-system)
417 (arguments
418 (list
419 #:install-plan
420 #~'(("src" #$(assq-ref (package-properties this-package) 'addon-id)))))
421 (home-page "https://github.com/SimonBrazell/privacy-redirect")
422 (synopsis "Redirect to privacy friendly alternative frontends")
423 (description
424 "This package provides a browser extension that redirects sites to their
425privacy friendly alternative frontends. It's possible to toggle all redirects
426on and off and the extension will default to using random instances if none are
427selected.")
428 (license license:gpl3)
429 (properties '((addon-id . "{b7f9d2cd-d772-4302-8c3f-eb941af36f76}")))))
430
431(define-public privacy-redirect/icecat
432 (make-icecat-extension privacy-redirect))
433
434(define-public web-eid-host
435 (package
436 (name "web-eid-host")
437 (version "2.7.0")
438 (source
439 (origin
440 (method git-fetch)
441 (uri (git-reference
442 (url "https://github.com/web-eid/web-eid-app")
443 (commit (string-append "v" version))
444 ;; This package contains two git modules:
445 ;; <https://github.com/web-eid/libelectronic-id>, a library with
446 ;; no support for standalone installation; and a copy of the
447 ;; Web-eID WebExtension, deleted below.
448 (recursive? #t)))
449 (file-name (git-file-name name version))
450 (sha256
451 (base32 "02kryhzy4zizly8pj0bldcfh1hn93ls83033n98i6zaylhf3sn5f"))
452 (modules '((guix build utils)))
453 ;; Delete bundled copy of the corresponding browser extension.
454 (snippet '(delete-file-recursively "src/mac/js"))))
455 (build-system qt-build-system)
456 (arguments
457 (list
458 #:qtbase qtbase
459 #:phases
460 #~(modify-phases %standard-phases
461 (add-after 'install 'install-icecat-nmh
462 (lambda _
463 (let ((icecat-lib (format #f "~A/lib/icecat" #$output))
464 (mozilla-lib (format #f "~A/lib/mozilla" #$output)))
465 (mkdir-p icecat-lib)
466 (copy-recursively mozilla-lib icecat-lib)))))))
467 (native-inputs (list googletest pkg-config qttools))
468 (inputs (list openssl pcsc-lite qtsvg))
469 (home-page "https://github.com/web-eid/web-eid-app")
470 (synopsis "Web eID native messaging host for Estonian ID cards")
471 (description
472 "Native messaging host for the Web eID browser extension that performs
473signing and authentication operations with Estonian ID cards. The
474@command{web-eid} program can also be used directly in command-line mode.
475
476It requires a running pcscd service and a compatible card reader.")
477 (license license:expat)))