mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
* gnu/packages/sequoia.scm (rust-card-backend-0.2, rust-card-backend-pcsc-0.5) (rust-openpgp-card-0.5, rust-openpgp-cert-d-0.3, rust-sequoia-autocrypt-0.25) (rust-sequoia-cert-store-0.6, rust-sequoia-directories-0.1) (rust-sequoia-gpg-agent-0.5, rust-sequoia-ipc-0.35, rust-sequoia-keystore-0.6) (rust-sequoia-keystore-backend-0.6, rust-sequoia-keystore-gpg-agent-0.4) (rust-sequoia-keystore-openpgp-card-0.1, rust-sequoia-keystore-softkeys-0.6) (rust-sequoia-keystore-tpm-0.1, rust-sequoia-net-0.29, rust-sequoia-openpgp-1) (rust-sequoia-policy-config-0.7, rust-sequoia-policy-config-0.6) (rust-sequoia-tpm-0.1, rust-sequoia-wot-0.13): Delete variables. Change-Id: I388d6b27e426e41c3876079dd841aa4ec6f19251
354 lines
16 KiB
Scheme
354 lines
16 KiB
Scheme
;;; GNU Guix --- Functional package management for GNU
|
|
;;; Copyright © 2019, 2020, 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
|
;;; Copyright © 2021, 2023-2025 Efraim Flashner <efraim@flashner.co.il>
|
|
;;;
|
|
;;; 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 sequoia)
|
|
#:use-module (guix build-system cargo)
|
|
#:use-module (guix build-system trivial)
|
|
#:use-module (guix download)
|
|
#:use-module (guix git-download)
|
|
#:use-module ((guix licenses) #:prefix license:)
|
|
#:use-module (guix packages)
|
|
#:use-module (guix gexp)
|
|
#:use-module (guix utils)
|
|
#:use-module (gnu packages)
|
|
#:use-module (gnu packages base) ; glibc
|
|
#:use-module (gnu packages gnupg)
|
|
#:use-module (gnu packages hardware)
|
|
#:use-module (gnu packages llvm)
|
|
#:use-module (gnu packages multiprecision)
|
|
#:use-module (gnu packages nettle)
|
|
#:use-module (gnu packages pkg-config)
|
|
#:use-module (gnu packages security-token)
|
|
#:use-module (gnu packages serialization)
|
|
#:use-module (gnu packages sqlite)
|
|
#:use-module (gnu packages tls))
|
|
|
|
(define-public sequoia-chameleon-gnupg
|
|
(package
|
|
(name "sequoia-chameleon-gnupg")
|
|
(version "0.12.0")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (crate-uri "sequoia-chameleon-gnupg" version))
|
|
(file-name (string-append name "-" version ".tar.gz"))
|
|
(sha256
|
|
(base32 "0ydb6wbyznr9p734p4jh896arcc45wi0b4isfjs6znwa40j3s66c"))))
|
|
(build-system cargo-build-system)
|
|
(arguments
|
|
(list
|
|
#:install-source? #f
|
|
#:features '(list "crypto-nettle")
|
|
#:cargo-test-flags
|
|
'(list "--"
|
|
;; Some tests overly depend on specific versions of input crates.
|
|
"--skip=gpg::generate_key"
|
|
"--skip=gpg::list_keys"
|
|
"--skip=gpg::migrate::migration_from_secring"
|
|
"--skip=gpg::print_mds"
|
|
"--skip=gpg::quick::add_key_default_default_iso_date"
|
|
"--skip=gpg::quick::generate_key_default_default_iso_date"
|
|
"--skip=gpg::sign"
|
|
"--skip=gpg::verify")
|
|
#:phases
|
|
#~(modify-phases %standard-phases
|
|
(add-after 'unpack 'set-asset-out-dir
|
|
(lambda _
|
|
(setenv "ASSET_OUT_DIR" "target/assets")))
|
|
(add-after 'install 'install-more
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(share (string-append out "/share"))
|
|
(bash-completions-dir
|
|
(string-append out "/etc/bash_completion.d"))
|
|
(zsh-completions-dir
|
|
(string-append share "/zsh/site-functions"))
|
|
(fish-completions-dir
|
|
(string-append share "/fish/vendor_completions.d"))
|
|
(elvish-completions-dir
|
|
(string-append share "/elvish/lib"))
|
|
(man1 (string-append share "/man/man1")))
|
|
;; The completions are generated in build.rs.
|
|
(mkdir-p bash-completions-dir)
|
|
(mkdir-p elvish-completions-dir)
|
|
(for-each (lambda (file)
|
|
(install-file file man1))
|
|
(find-files "target/assets/man-pages" "\\.1$"))
|
|
(copy-file "target/assets/shell-completions/gpg-sq.bash"
|
|
(string-append bash-completions-dir "/gpg-sq"))
|
|
(copy-file "target/assets/shell-completions/gpgv-sq.bash"
|
|
(string-append bash-completions-dir "/gpgv-sq"))
|
|
(copy-file "target/assets/shell-completions/gpg-sq.elv"
|
|
(string-append elvish-completions-dir "/gpg-sq"))
|
|
(copy-file "target/assets/shell-completions/gpgv-sq.elv"
|
|
(string-append elvish-completions-dir "/gpgv-sq"))
|
|
(install-file "target/assets/shell-completions/_gpg-sq"
|
|
zsh-completions-dir)
|
|
(install-file "target/assets/shell-completions/_gpgv-sq"
|
|
zsh-completions-dir)
|
|
(install-file "target/assets/shell-completions/gpg-sq.fish"
|
|
fish-completions-dir)
|
|
(install-file "target/assets/shell-completions/gpgv-sq.fish"
|
|
fish-completions-dir)))))))
|
|
(inputs
|
|
(cons* nettle openssl sqlite (cargo-inputs 'sequoia-chameleon-gnupg)))
|
|
(native-inputs
|
|
(list clang gnupg pkg-config sequoia-sq))
|
|
(home-page "https://sequoia-pgp.org/")
|
|
(synopsis "Sequoia's reimplementation of the GnuPG interface")
|
|
(description "This package provides Sequoia's reimplementation of the
|
|
@code{GnuPG} interface.
|
|
|
|
@code{gpg-sq} is Sequoia's alternative implementation of a tool following the
|
|
GnuPG command line interface. It provides a drop-in but not feature-complete
|
|
replacement for the GnuPG project's @code{gpg}.
|
|
|
|
This Guix package is built to use the nettle cryptographic library.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public sequoia-sq
|
|
(package
|
|
(name "sequoia-sq")
|
|
(version "1.2.0")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (crate-uri "sequoia-sq" version))
|
|
(file-name (string-append name "-" version ".tar.gz"))
|
|
(sha256
|
|
(base32 "0p3z6njzgffz8hrjnj3c1xk9fwfr8fjp81nmr03v8n2fspzyq6l7"))))
|
|
(build-system cargo-build-system)
|
|
(arguments
|
|
`(#:install-source? #f
|
|
#:features '("crypto-nettle"
|
|
"sequoia-keystore/gpg-agent"
|
|
"sequoia-keystore/openpgp-card"
|
|
"sequoia-keystore/softkeys")
|
|
#:cargo-test-flags
|
|
(list "--"
|
|
;; The certificate has an expiration date.
|
|
"--skip=sq_autocrypt_import")
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'unpack 'set-asset-out-dir
|
|
(lambda _
|
|
(setenv "ASSET_OUT_DIR" "target/assets")))
|
|
(add-after 'install 'install-more
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(share (string-append out "/share"))
|
|
(bash-completions-dir
|
|
(string-append out "/etc/bash_completion.d"))
|
|
(zsh-completions-dir
|
|
(string-append share "/zsh/site-functions"))
|
|
(fish-completions-dir
|
|
(string-append share "/fish/vendor_completions.d"))
|
|
(elvish-completions-dir
|
|
(string-append share "/elvish/lib"))
|
|
(man1 (string-append share "/man/man1")))
|
|
;; The completions are generated in build.rs.
|
|
(mkdir-p bash-completions-dir)
|
|
(mkdir-p elvish-completions-dir)
|
|
(for-each (lambda (file)
|
|
(install-file file man1))
|
|
(find-files "target/assets/man-pages" "\\.1$"))
|
|
(copy-file "target/assets/shell-completions/sq.bash"
|
|
(string-append bash-completions-dir "/sq"))
|
|
(install-file "target/assets/shell-completions/_sq"
|
|
zsh-completions-dir)
|
|
(install-file "target/assets/shell-completions/sq.fish"
|
|
fish-completions-dir)
|
|
(copy-file "target/assets/shell-completions/sq.elv"
|
|
(string-append elvish-completions-dir "/sq"))))))))
|
|
(inputs
|
|
(cons* nettle openssl pcsc-lite sqlite (cargo-inputs 'sequoia-sq)))
|
|
(native-inputs
|
|
(list capnproto clang pkg-config))
|
|
(home-page "https://sequoia-pgp.org/")
|
|
(synopsis "Command-line frontend for Sequoia OpenPGP")
|
|
(description "This package provides the command-line frontend for Sequoia
|
|
OpenPGP.
|
|
|
|
This Guix package is built to use the nettle cryptographic library and the
|
|
gpg-agent, openpgp-card and softkeys keystore backends.")
|
|
(license license:lgpl2.0+)))
|
|
|
|
(define-public sequoia-sqv
|
|
(package
|
|
(name "sequoia-sqv")
|
|
(version "1.2.1")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (crate-uri "sequoia-sqv" version))
|
|
(file-name (string-append name "-" version ".tar.gz"))
|
|
(sha256
|
|
(base32 "0nizac02bwl5cdmcvn3vjjxdhcy431mnsijyswnq101p764dlkl2"))))
|
|
(build-system cargo-build-system)
|
|
(inputs
|
|
(cons* nettle openssl (cargo-inputs 'sequoia-sqv)))
|
|
(native-inputs
|
|
(list clang pkg-config))
|
|
(arguments
|
|
`(#:install-source? #f
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'unpack 'set-asset-out-dir
|
|
(lambda _
|
|
(setenv "ASSET_OUT_DIR" "target/assets")))
|
|
(add-after 'install 'install-more
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(share (string-append out "/share"))
|
|
(bash-completions-dir
|
|
(string-append out "/etc/bash_completion.d"))
|
|
(zsh-completions-dir
|
|
(string-append share "/zsh/site-functions"))
|
|
(fish-completions-dir
|
|
(string-append share "/fish/vendor_completions.d"))
|
|
(elvish-completions-dir
|
|
(string-append share "/elvish/lib"))
|
|
(man1 (string-append share "/man/man1")))
|
|
;; The completions are generated in build.rs.
|
|
(mkdir-p bash-completions-dir)
|
|
(mkdir-p elvish-completions-dir)
|
|
(for-each (lambda (file)
|
|
(install-file file man1))
|
|
(find-files "target/assets/man-pages" "\\.1$"))
|
|
(copy-file "target/assets/shell-completions/sqv.bash"
|
|
(string-append bash-completions-dir "/sqv"))
|
|
(install-file "target/assets/shell-completions/_sqv"
|
|
zsh-completions-dir)
|
|
(install-file "target/assets/shell-completions/sqv.fish"
|
|
fish-completions-dir)
|
|
(copy-file "target/assets/shell-completions/sqv.elv"
|
|
(string-append elvish-completions-dir "/sqv"))))))))
|
|
(home-page "https://sequoia-pgp.org/")
|
|
(synopsis "Simple OpenPGP signature verification program")
|
|
(description "@code{sqv} verifies detached OpenPGP signatures. It is a
|
|
replacement for @code{gpgv}. Unlike @code{gpgv}, it can take additional
|
|
constraints on the signature into account.
|
|
|
|
This Guix package is built to use the nettle cryptographic library.")
|
|
(license license:lgpl2.0+)))
|
|
|
|
;; There hasn't been a release cut since the tools were split from the library
|
|
;; so we use the 0.1.0 number from tools/Cargo.toml and the tag from the library.
|
|
(define-public sequoia-wot-tools
|
|
(package
|
|
(name "sequoia-wot-tools")
|
|
(version "0.1.0")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://gitlab.com/sequoia-pgp/sequoia-wot")
|
|
(commit "sequoia-wot/v0.13.2")))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32 "0vvq2izz2088x9jvii1xj14z4hls948wn18wb53fpahyhx8kkbvx"))))
|
|
(build-system cargo-build-system)
|
|
(arguments
|
|
(list
|
|
#:features '(list "sequoia-openpgp/crypto-nettle")
|
|
#:cargo-test-flags '(list "--" "--skip=gpg_trust_roots")
|
|
#:install-source? #f
|
|
#:phases
|
|
#~(modify-phases %standard-phases
|
|
(add-after 'unpack 'chdir
|
|
(lambda _
|
|
(delete-file "Cargo.lock")
|
|
(chdir "tools")))
|
|
(add-after 'install 'install-more
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(share (string-append out "/share"))
|
|
(man1 (string-append share "/man/man1")))
|
|
(for-each (lambda (file)
|
|
(install-file file man1))
|
|
(find-files "target/release" "\\.1$"))
|
|
(mkdir-p (string-append out "/etc/bash_completion.d"))
|
|
(mkdir-p (string-append share "/fish/vendor_completions.d"))
|
|
(mkdir-p (string-append share "/elvish/lib"))
|
|
(copy-file (car (find-files "target/release" "sq-wot.bash"))
|
|
(string-append out "/etc/bash_completion.d/sq-wot"))
|
|
(copy-file (car (find-files "target/release" "sq-wot.fish"))
|
|
(string-append
|
|
share "/fish/vendor_completions.d/sq-wot.fish"))
|
|
(copy-file (car (find-files "target/release" "sq-wot.elv"))
|
|
(string-append share "/elvish/lib/sq-wot"))
|
|
(install-file (car (find-files "target/release" "_sq-wot"))
|
|
(string-append
|
|
share "/zsh/site-functions"))))))))
|
|
(inputs
|
|
(cons* nettle openssl sqlite (cargo-inputs 'sequoia-wot-tools)))
|
|
(native-inputs
|
|
(list clang pkg-config))
|
|
(home-page "https://sequoia-pgp.org/")
|
|
(synopsis "Implementation of OpenPGP's web of trust")
|
|
(description
|
|
"This package provides an implementation of @code{OpenPGP's} web of trust.
|
|
|
|
This Guix package is built to use the nettle cryptographic library.")
|
|
(license license:lgpl2.0+)))
|
|
|
|
;;
|
|
|
|
(define-public sequoia
|
|
(package
|
|
(name "sequoia")
|
|
(version "1.22.0")
|
|
(source #f)
|
|
(build-system trivial-build-system)
|
|
(arguments
|
|
(list
|
|
#:modules '((guix build utils)
|
|
(guix build union)
|
|
(guix build gnu-build-system)
|
|
(guix build gremlin)
|
|
(guix elf))
|
|
#:builder
|
|
#~(begin
|
|
(use-modules (guix build utils)
|
|
(guix build union)
|
|
(guix build gnu-build-system)
|
|
(ice-9 match))
|
|
(let ((make-dynamic-linker-cache
|
|
(assoc-ref %standard-phases 'make-dynamic-linker-cache))
|
|
(ld.so.cache
|
|
(string-append #$output "/etc/ld.so.cache")))
|
|
(match %build-inputs
|
|
(((names . directories) ...)
|
|
(union-build #$output directories)))
|
|
(delete-file ld.so.cache)
|
|
(setenv "PATH"
|
|
(string-append (getenv "PATH") ":" #$glibc "/sbin"))
|
|
(make-dynamic-linker-cache #:outputs %outputs)))))
|
|
(inputs
|
|
(list ;glibc ;; for ldconfig in make-dynamic-linker-cache
|
|
sequoia-sq
|
|
sequoia-sqv
|
|
sequoia-wot-tools))
|
|
(home-page "https://sequoia-pgp.org")
|
|
(synopsis "New OpenPGP implementation (meta-package)")
|
|
(description "Sequoia is a new OpenPGP implementation, written in Rust,
|
|
consisting of several Rust crates/packages. This Guix meta-package combines
|
|
these packages into a single one for convenience. Anyhow, you should not
|
|
depend other packages on this one avoid excessive compile-times for users.")
|
|
(license license:lgpl2.0+)))
|