;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020, 2021 Marius Bakke ;;; ;;; 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 . (define-module (gnu build chromium-extension) #:use-module (guix gexp) #:use-module (guix packages) #:use-module (gnu packages chromium) #:use-module (gnu packages gnupg) #:use-module (gnu packages tls) #:use-module (gnu packages xorg) #:use-module (guix build-system trivial) #:export (make-chromium-extension)) ;;;
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/emacs-xyz.scm')
0 files changed, 0 insertions, 0 deletions
#:local-build? #t)) (define (file-sha256sum file) (with-extensions (list guile-gcrypt) #~(begin (use-modules (gcrypt base16) (gcrypt hash)) (bytevector->base16-string (file-sha256 #$file))))) (define* (make-chromium-extension pkg #:optional (pkg-output "out")) "Create a Chromium extension from package PKG and return a package that, when installed, will make the extension contained in PKG available as a Chromium browser extension. PKG-OUTPUT specifies which output of PKG to use." (let* ((name (package-name pkg)) (version (package-version pkg)) (private-key (make-signing-key name)) (public-key (signing-key->public-der private-key)) (checksum (file-sha256sum public-key)) (crx (make-crx private-key pkg pkg-output)) (json (crx->chromium-json crx version))) (package (inherit pkg) (name (string-append name "-chromium")) (source #f) (native-inputs '()) (inputs '()) (propagated-inputs '()) (outputs '("out")) (build-system trivial-build-system) (arguments (list #:modules '((guix build utils)) #:builder #~(begin (use-modules (guix build utils)) (define (base16-char->chromium-base16 char) ;; Translate CHAR, a hexadecimal character, to a Chromium-style ;; representation using the letters a-p (where a=0, p=15). (string-ref "abcdefghijklmnop" (string-index "0123456789abcdef" char))) (let ((file-name (string-map base16-char->chromium-base16 (string-take #$checksum 32))) (extension-directory (string-append #$output "/share/chromium/extensions"))) (mkdir-p extension-directory) (symlink #$json (string-append extension-directory "/" file-name ".json")))))))))