Server application for collaborative production of 3D assets and animations.
(define-module (vfx packages pijul)
  #:use-module (gnu packages)
  #:use-module (gnu packages rust)
  #:use-module (gnu packages crates-io)
  #:use-module (gnu packages crypto)
  #:use-module (gnu packages tls)
  #:use-module (gnu packages digest)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages m4)
  #:use-module (gnu packages commencement)
  #:use-module (gnu packages base)
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages compression)
  
  #:use-module (guix)
  #:use-module (guix build-system cargo)
  #:use-module ((guix licenses) #:prefix license:))

(define-public rust-sanakirja-core
  (package
    (name "rust-sanakirja-core")
    (version "1.2.16")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "sanakirja-core" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1asm3ss02ngrpbrvjwgvivq380k5diib3sbgsbvqaj2w8mr3wdak"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-crc32fast" ,rust-crc32fast-1)
                       ("rust-ed25519-zebra" ,rust-ed25519-zebra-2)
                       ("rust-uuid" ,rust-uuid-0.8))))
    (home-page "https://nest.pijul.com/pijul/sanakirja")
    (synopsis
     "Copy-on-write datastructures, storable on disk (or elsewhere) with a stable format.")
    (description
     "Copy-on-write datastructures, storable on disk (or elsewhere) with a stable
format.")
    (license (list license:expat license:asl2.0))))

(define-public rust-sanakirja
  (package
    (name "rust-sanakirja")
    (version "1.2.16")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "sanakirja" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0w3b8ifawfs839y54rwg8qj5al8n60rrszkdzjyms6dyh3rj8d6w"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-crc32fast" ,rust-crc32fast-1)
                       ("rust-fs2" ,rust-fs2-0.4)
                       ("rust-lazy-static" ,rust-lazy-static-1)
                       ("rust-log" ,rust-log-0.4)
                       ("rust-memmap" ,rust-memmap-0.7)
                       ("rust-parking-lot" ,rust-parking-lot-0.11)
                       ("rust-sanakirja-core" ,rust-sanakirja-core)
                       ("rust-thiserror" ,rust-thiserror-1))
       #:cargo-development-inputs (("rust-env-logger" ,rust-env-logger-0.8)
                                   ("rust-libc" ,rust-libc-0.2)
                                   ("rust-lmdb-rs" ,rust-lmdb-rs-0.7)
                                   ("rust-rand" ,rust-rand-0.8)
                                   ("rust-sled" ,rust-sled-0.34)
                                   ("rust-tempfile" ,rust-tempfile-3)
                                   ("rust-uuid" ,rust-uuid-0.8))))
    (home-page "https://nest.pijul.com/pijul/sanakirja")
    (synopsis
     "Copy-on-write datastructures, storable on disk (or elsewhere) with a stable format.")
    (description
     "Copy-on-write datastructures, storable on disk (or elsewhere) with a stable
format.")
    (license (list license:expat license:asl2.0))))

(define-public rust-pijul-macros
  (package
    (name "rust-pijul-macros")
    (version "0.5.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "pijul-macros" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0r3hivav1mzpzdpk2rj8flhl4vgp2r85gdi0kw5x8r8bv0y79cy2"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-proc-macro2" ,rust-proc-macro2-1)
                       ("rust-quote" ,rust-quote-1)
                       ("rust-regex" ,rust-regex-1)
                       ("rust-syn" ,rust-syn-1))))
    (home-page "https://nest.pijul.com/pijul/pijul")
    (synopsis "Macros used to write libpijul.")
    (description "Macros used to write libpijul.")
    (license license:gpl2)))

(define-public rust-path-slash-0.1
  (package
    (name "rust-path-slash")
    (version "0.1.5")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "path-slash" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "15mni0f28mblwd97192c4zyyi6054yljmiqrdb6bx97ga69hk2j9"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-development-inputs (("rust-lazy-static" ,rust-lazy-static-1))))
    (home-page "https://github.com/rhysd/path-slash")
    (synopsis "Conversion to/from a file path from/to slash path")
    (description "Conversion to/from a file path from/to slash path")
    (license license:expat)))

(define-public rust-page-size-0.5
  (package
    (name "rust-page-size")
    (version "0.5.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "page_size" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0qdm2b6h63bwxy8s6jccd1v30f6dysbq9ylfs0cdikwhs75n6xhv"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-libc" ,rust-libc-0.2)
                       ("rust-spin" ,rust-spin-0.9)
                       ("rust-winapi" ,rust-winapi-0.3))))
    (home-page "https://github.com/Elzair/page_size_rs")
    (synopsis
     "Provides an easy, fast, cross-platform way to retrieve the memory page size")
    (description
     "This package provides an easy, fast, cross-platform way to retrieve the memory
page size")
    (license (list license:expat license:asl2.0))))

(define-public rust-constant-time-eq-0.2
  (package
    (name "rust-constant-time-eq")
    (version "0.2.4")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "constant_time_eq" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0ycj3vn8g9lnkzv8wajz0r9rc2xgixs8j3pb0ivb7isxyv0qbbgk"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t))
    (home-page "https://github.com/cesarb/constant_time_eq")
    (synopsis "Compares two equal-sized byte strings in constant time.")
    (description "Compares two equal-sized byte strings in constant time.")
    (license (list license:cc0 license:expat-0 license:asl2.0))))

(define-public rust-blake3-1.3
  (package
    (name "rust-blake3")
    (version "1.3.3")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "blake3" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1vyckzpfq46dkxyvy12gkx4nddr5g93alh38i1ka8i4mm1l29bj2"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-arrayref" ,rust-arrayref-0.3)
                       ("rust-arrayvec" ,rust-arrayvec-0.7)
                       ("rust-cc" ,rust-cc-1)
                       ("rust-cfg-if" ,rust-cfg-if-1)
                       ("rust-constant-time-eq" ,rust-constant-time-eq-0.2)
		       ("rust-crypto-common" ,rust-crypto-common-0.1.6)
                       ("rust-digest" ,rust-digest-0.10)
                       ("rust-rayon" ,rust-rayon-1))
       #:cargo-development-inputs (("rust-hex" ,rust-hex-0.4)
                                   ("rust-hmac" ,rust-hmac-0.12)
                                   ("rust-page-size" ,rust-page-size-0.5)
                                   ("rust-rand" ,rust-rand-0.8)
                                   ("rust-rand-chacha" ,rust-rand-chacha-0.3))))
    (home-page "https://github.com/BLAKE3-team/BLAKE3")
    (synopsis "the BLAKE3 hash function")
    (description "the BLAKE3 hash function")
    (license (list license:cc0 license:asl2.0))))

(define-public rust-bs58-0.4
  (package
    (name "rust-bs58")
    (version "0.4.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "bs58" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1lr3vwzhhyica4y7rbkf26vr1h7vpjb1m6rml8zcqgw81c2y07vp"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-sha2" ,rust-sha2-0.9))
       #:cargo-development-inputs (("rust-assert-matches" ,rust-assert-matches-1)
                                   ("rust-base58" ,rust-base58-0.1)
                                   ("rust-criterion" ,rust-criterion-0.3)
                                   ("rust-rust-base58" ,rust-rust-base58-0.0.4))))
    (home-page "https://github.com/mycorrhiza/bs58-rs")
    (synopsis "Another Base58 codec implementation.")
    (description "Another Base58 codec implementation.")
    (license (list license:expat license:asl2.0))))

(define-public rust-diffs-0.4
  (package
    (name "rust-diffs")
    (version "0.4.1")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "diffs" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "07cpi60h9mddk62lysrybkrqlca8v8ffxhifv649x3fw250pn4d8"))))
    (build-system cargo-build-system)
    (home-page "https://nest.pijul.com/pijul/diffs")
    (synopsis
     "A number of diff algorithms, also called longest common subsequence.")
    (description
     "This package provides a number of diff algorithms, also called longest common
subsequence.")
    (license (list license:expat license:asl2.0))))

(define-public rust-zstd-seekable-0.1
  (package
    (name "rust-zstd-seekable")
    (version "0.1.7")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "zstd-seekable" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0bxzd71myj094hp03jpqbv1r80x0hk1ahsjwfv50j0wgx379jfry"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-cc" ,rust-cc-1)
                       ("rust-libc" ,rust-libc-0.2)
                       ("rust-pkg-config" ,rust-pkg-config-0.3)
                       ("rust-thiserror" ,rust-thiserror-1)
                       ("rust-threadpool" ,rust-threadpool-1))))
    (home-page "https://nest.pijul.com/pijul/zstd-seekable")
    (synopsis "Bindings to the seekable version of ZStandard.")
    (description "Bindings to the seekable version of ZStandard.")
    (license license:bsd-3)))

(define-public rust-liblmdb-sys-0.2
  (package
    (name "rust-liblmdb-sys")
    (version "0.2.2")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "liblmdb-sys" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0j9f9l6fbaaqfbvfmb9rd2b9acqjyh7pn1ma3bv0pxl0lnikivgy"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-gcc" ,rust-gcc-0.3)
                       ("rust-libc" ,rust-libc-0.2))))
    (home-page "https://github.com/vhbit/lmdb-rs")
    (synopsis "LMDB native lib")
    (description "LMDB native lib")
    (license license:expat)))

(define-public rust-lmdb-rs-0.7
  (package
    (name "rust-lmdb-rs")
    (version "0.7.6")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "lmdb-rs" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1rv7c7iwgbwx92igm2r3aza8phr0lvvwqd9gwjf655gp6fsfgvsa"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-bitflags" ,rust-bitflags-0.7)
                       ("rust-libc" ,rust-libc-0.2)
                       ("rust-liblmdb-sys" ,rust-liblmdb-sys-0.2)
                       ("rust-log" ,rust-log-0.3))))
    (home-page "https://github.com/vhbit/lmdb-rs")
    (synopsis "LMDB bindings")
    (description "LMDB bindings")
    (license license:expat)))

(define-public rust-rio-0.9
  (package
    (name "rust-rio")
    (version "0.9.4")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "rio" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0nv8wrnkd41flb32lmxb412l6m1790j12c3lg305764hcmbc564y"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
    (home-page "https://github.com/spacejam/rio")
    (synopsis
     "GPL-3.0 nice bindings for io_uring. MIT/Apache-2.0 license is available for spacejam's github sponsors.")
    (description
     "GPL-3.0 nice bindings for io_uring.  MIT/Apache-2.0 license is available for
spacejam's github sponsors.")
    (license license:gpl3)))

(define-public rust-crossbeam-epoch-0.9
  (package
    (name "rust-crossbeam-epoch")
    (version "0.9.13")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "crossbeam-epoch" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0nlxkmx3q93jvsshnmwaiich6bf7ddq1jzhzmaw4pxrf9hgsza81"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-autocfg" ,rust-autocfg-1)
                       ("rust-cfg-if" ,rust-cfg-if-1)
                       ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.8)
                       ("rust-loom" ,rust-loom-0.5)
                       ("rust-memoffset" ,rust-memoffset-0.7)
                       ("rust-scopeguard" ,rust-scopeguard-1))))
    (home-page
     "https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-epoch")
    (synopsis "Epoch-based garbage collection")
    (description "Epoch-based garbage collection")
    (license (list license:expat license:asl2.0))))

(define-public rust-sled-0.34
  (package
    (name "rust-sled")
    (version "0.34.7")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "sled" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0dcr2s7cylj5mb33ci3kpx7fz797jwvysnl5airrir9cgirv95kz"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-backtrace" ,rust-backtrace-0.3)
                       ("rust-color-backtrace" ,rust-color-backtrace-0.5)
                       ("rust-crc32fast" ,rust-crc32fast-1)
                       ("rust-crossbeam-epoch" ,rust-crossbeam-epoch-0.9)
                       ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.8)
                       ("rust-fs2" ,rust-fs2-0.4)
                       ("rust-fxhash" ,rust-fxhash-0.2)
                       ("rust-libc" ,rust-libc-0.2)
                       ("rust-log" ,rust-log-0.4)
                       ("rust-parking-lot" ,rust-parking-lot-0.11)
                       ("rust-rio" ,rust-rio-0.9)
                       ("rust-zstd" ,rust-zstd-0.9))
       #:cargo-development-inputs (("rust-byteorder" ,rust-byteorder-1)
                                   ("rust-env-logger" ,rust-env-logger-0.8)
                                   ("rust-log" ,rust-log-0.4)
                                   ("rust-quickcheck" ,rust-quickcheck-0.9)
                                   ("rust-rand" ,rust-rand-0.7)
                                   ("rust-rand-chacha" ,rust-rand-chacha-0.2)
                                   ("rust-rand-distr" ,rust-rand-distr-0.3)
                                   ("rust-zerocopy" ,rust-zerocopy-0.3))))
    (home-page "https://github.com/spacejam/sled")
    (synopsis
     "Lightweight high-performance pure-rust transactional embedded database.")
    (description
     "Lightweight high-performance pure-rust transactional embedded database.")
    (license (list license:expat license:asl2.0))))

(define-public rust-libsodium-sys-0.2
  (package
    (name "rust-libsodium-sys")
    (version "0.2.7")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "libsodium-sys" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1zcjka23grayr8kjrgbada6vwagp0kkni9m45v0gpbanrn3r6xvb"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-cc" ,rust-cc-1)
                       ("rust-libc" ,rust-libc-0.2)
                       ("rust-pkg-config" ,rust-pkg-config-0.3)
                       ("rust-walkdir" ,rust-walkdir-2))))
    (home-page "https://github.com/sodiumoxide/sodiumoxide.git")
    (synopsis "FFI binding to libsodium")
    (description "FFI binding to libsodium")
    (license (list license:expat license:asl2.0))))

(define-public rust-thrussh-libsodium-0.2
  (package
    (name "rust-thrussh-libsodium")
    (version "0.2.1")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "thrussh-libsodium" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "004mxns64gr3507dzr6s8vgd1478jcsgd2mw2cpbj73vs9q9rs6g"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-lazy-static" ,rust-lazy-static-1)
                       ("rust-libc" ,rust-libc-0.2)
                       ("rust-libsodium-sys" ,rust-libsodium-sys-0.2)
                       ("rust-pkg-config" ,rust-pkg-config-0.3)
                       ("rust-vcpkg" ,rust-vcpkg-0.2))))
    (home-page "https://nest.pijul.com/pijul_org/thrussh")
    (synopsis "Straightforward bindings to libsodium")
    (description "Straightforward bindings to libsodium")
    (license (list license:asl2.0 license:expat))))

(define-public rust-cryptovec-0.6
  (package
    (name "rust-cryptovec")
    (version "0.6.1")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "cryptovec" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1pqb2g1n3sx0d2cjiy06amcr2wlf9izwb4jj68nk5cmvlq9zmiyc"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2)
                       ("rust-winapi" ,rust-winapi-0.3))))
    (home-page "https://pijul.org/cryptovec")
    (synopsis "A vector which zeroes its memory on clears and reallocations.")
    (description
     "This package provides a vector which zeroes its memory on clears and
reallocations.")
    (license license:asl2.0)))

(define-public rust-zeroize-1
  (package
    (name "rust-zeroize")
    (version "1.3.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "zeroize" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1z8yix823b6lz878qwg6bvwhg3lb0cbw3c9yij9p8mbv7zdzfmj7"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-zeroize-derive" ,rust-zeroize-derive-1))))
    (home-page "https://github.com/RustCrypto/utils/tree/master/zeroize")
    (synopsis "Securely clear secrets from memory with a simple trait built on
stable Rust primitives which guarantee memory is zeroed using an
operation will not be 'optimized away' by the compiler.
Uses a portable pure Rust implementation that works everywhere,
even WASM!
")
    (description
     "Securely clear secrets from memory with a simple trait built on stable Rust
primitives which guarantee memory is zeroed using an operation will not be
optimized away by the compiler.  Uses a portable pure Rust implementation that
works everywhere, even WASM!")
    (license (list license:asl2.0 license:expat))))

(define-public rust-password-hash-0.2
  (package
    (name "rust-password-hash")
    (version "0.2.3")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "password-hash" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1rr4kd52ld978a2xhcvlc54p1d92yhxl9kvbajba7ia6rs5b5q3p"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-base64ct" ,rust-base64ct-1)
                       ("rust-rand-core" ,rust-rand-core-0.6)
                       ("rust-subtle" ,rust-subtle-2))))
    (home-page
     "https://github.com/RustCrypto/traits/tree/master/password-hash")
    (synopsis
     "Traits which describe the functionality of password hashing algorithms,
as well as a `no_std`-friendly implementation of the PHC string format
(a well-defined subset of the Modular Crypt Format a.k.a. MCF)
")
    (description
     "Traits which describe the functionality of password hashing algorithms, as well
as a `no_std`-friendly implementation of the PHC string format (a well-defined
subset of the Modular Crypt Format a.k.a.  MCF)")
    (license (list license:expat license:asl2.0))))

(define-public rust-pbkdf2-0.8
  (package
    (name "rust-pbkdf2")
    (version "0.8.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "pbkdf2" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1ykgicvyjm41701mzqhrfmiz5sm5y0zwfg6csaapaqaf49a54pyr"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-base64ct" ,rust-base64ct-1)
                       ("rust-crypto-mac" ,rust-crypto-mac-0.11)
                       ("rust-hmac" ,rust-hmac-0.11)
                       ("rust-password-hash" ,rust-password-hash-0.2)
                       ("rust-rayon" ,rust-rayon-1)
                       ("rust-sha-1" ,rust-sha-1-0.9)
                       ("rust-sha2" ,rust-sha2-0.9))))
    (home-page
     "https://github.com/RustCrypto/password-hashes/tree/master/pbkdf2")
    (synopsis "Generic implementation of PBKDF2")
    (description "Generic implementation of PBKDF2")
    (license (list license:expat license:asl2.0))))

(define-public rust-blowfish-0.8
  (package
    (name "rust-blowfish")
    (version "0.8.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "blowfish" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1ax736islxcbghc2lqq4vy7zn6qdigrls71lwg11m3743pyg6gzy"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-byteorder" ,rust-byteorder-1)
                       ("rust-cipher" ,rust-cipher-0.3)
                       ("rust-opaque-debug" ,rust-opaque-debug-0.3))))
    (home-page "https://github.com/RustCrypto/block-ciphers")
    (synopsis "Blowfish block cipher")
    (description "Blowfish block cipher")
    (license (list license:expat license:asl2.0))))

(define-public rust-bcrypt-pbkdf-0.6
  (package
    (name "rust-bcrypt-pbkdf")
    (version "0.6.2")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "bcrypt-pbkdf" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1ms9c5z90n5szx5nbxrqaihny5fs3sl6a1pm3szr5g86jlxw0f3w"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-blowfish" ,rust-blowfish-0.8)
                       ("rust-crypto-mac" ,rust-crypto-mac-0.11)
                       ("rust-pbkdf2" ,rust-pbkdf2-0.8)
                       ("rust-sha2" ,rust-sha2-0.9)
                       ("rust-zeroize" ,rust-zeroize-1))))
    (home-page
     "https://github.com/RustCrypto/password-hashes/tree/master/bcrypt-pbkdf")
    (synopsis "bcrypt-pbkdf password-based key derivation function")
    (description "bcrypt-pbkdf password-based key derivation function")
    (license (list license:expat license:asl2.0))))

(define-public rust-yasna-0.4
  (package
    (name "rust-yasna")
    (version "0.4.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "yasna" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0xgsvxqnycdakh6j3hg4dk3mylrpnba50w0d36vg5k311sfs4qp2"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-bit-vec" ,rust-bit-vec-0.6)
                       ("rust-chrono" ,rust-chrono-0.4)
                       ("rust-num-bigint" ,rust-num-bigint-0.4))
       #:cargo-development-inputs (("rust-num-traits" ,rust-num-traits-0.2))))
    (home-page "https://github.com/qnighy/yasna.rs")
    (synopsis "ASN.1 library for Rust")
    (description "ASN.1 library for Rust")
    (license (list license:expat license:asl2.0))))

(define-public rust-rust-base58-0.0.4
  (package
    (name "rust-rust-base58")
    (version "0.0.4")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "rust-base58" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0fa4y2jjjmg1a0cr3gz4z8rkic0hx2vx5nm23za9lwf6rlgvj4xk"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-num" ,rust-num-0.4))
       #:cargo-development-inputs (("rust-rand" ,rust-rand-0.8))))
    (home-page "https://github.com/nham/rust-base58")
    (synopsis "Simple library for converting to and from base-58 strings.
")
    (description "Simple library for converting to and from base-58 strings.")
    (license (list license:expat license:asl2.0))))

(define-public rust-ed25519-zebra-1
  (package
    (name "rust-ed25519-zebra")
    (version "1.0.1")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "ed25519-zebra" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1zyi37p8p1qqbbkd27w52zvx5cj9b56rvc17jiw9d71j3gziynn8"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-curve25519-dalek" ,rust-curve25519-dalek-3)
                       ("rust-hex" ,rust-hex-0.4)
                       ("rust-rand-core" ,rust-rand-core-0.5)
                       ("rust-serde" ,rust-serde-1)
                       ("rust-sha2" ,rust-sha2-0.9)
                       ("rust-thiserror" ,rust-thiserror-1))
       #:cargo-development-inputs (("rust-bincode" ,rust-bincode-1)
                                   ("rust-criterion" ,rust-criterion-0.3)
                                   ("rust-rand" ,rust-rand-0.7))))
    (home-page "https://github.com/ZcashFoundation/ed25519-zebra")
    (synopsis "Zcash-flavored Ed25519 for use in Zebra.")
    (description "Zcash-flavored Ed25519 for use in Zebra.")
    (license (list license:expat license:asl2.0))))

(define-public rust-tracing-error-0.1
  (package
    (name "rust-tracing-error")
    (version "0.1.2")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "tracing-error" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "092y3357af6058mdw7nmr7sysqdka8b4cyaqz940fl2a7nwc1mxl"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-tracing" ,rust-tracing-0.1)
                       ("rust-tracing-subscriber" ,rust-tracing-subscriber-0.2))))
    (home-page "https://tokio.rs")
    (synopsis "Utilities for enriching errors with `tracing`.
")
    (description "Utilities for enriching errors with `tracing`.")
    (license license:expat)))

(define-public rust-owo-colors-1
  (package
    (name "rust-owo-colors")
    (version "1.4.2")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "owo-colors" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0rybl2lvhaycpkpaq45099idp5ny7nv4sqsafz0cvfqw1wjfy9vz"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-atty" ,rust-atty-0.2))))
    (home-page "https://github.com/jam1garner/owo-colors")
    (synopsis "Zero-allocation terminal colors that'll make people go owo")
    (description "Zero-allocation terminal colors that'll make people go owo")
    (license license:expat)))

(define-public rust-color-spantrace-0.1
  (package
    (name "rust-color-spantrace")
    (version "0.1.6")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "color-spantrace" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1lb2li71zvpxp80nck98gcqbqm3dnmp43pnlvm52z9x8livy9vmn"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-once-cell" ,rust-once-cell-1)
                       ("rust-owo-colors" ,rust-owo-colors-1)
                       ("rust-tracing-core" ,rust-tracing-core-0.1)
                       ("rust-tracing-error" ,rust-tracing-error-0.1))))
    (home-page "https://github.com/yaahc/color-spantrace")
    (synopsis
     "A pretty printer for tracing_error::SpanTrace based on color-backtrace")
    (description
     "This package provides a pretty printer for tracing_error::SpanTrace based on
color-backtrace")
    (license (list license:expat license:asl2.0))))

(define-public rust-color-eyre-0.5
  (package
    (name "rust-color-eyre")
    (version "0.5.11")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "color-eyre" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1dspj58bk57f9hiqlvbz25rik92i4a95iwa2dl4pg8g8grlqa60z"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-backtrace" ,rust-backtrace-0.3)
                       ("rust-color-spantrace" ,rust-color-spantrace-0.1)
                       ("rust-eyre" ,rust-eyre-0.6)
                       ("rust-indenter" ,rust-indenter-0.3)
                       ("rust-once-cell" ,rust-once-cell-1)
                       ("rust-owo-colors" ,rust-owo-colors-1)
                       ("rust-tracing-error" ,rust-tracing-error-0.1)
                       ("rust-url" ,rust-url-2))))
    (home-page "https://github.com/yaahc/color-eyre")
    (synopsis
     "An error report handler for panics and eyre::Reports for colorful, consistent, and well formatted error reports for all kinds of errors.")
    (description
     "An error report handler for panics and eyre::Reports for colorful, consistent,
and well formatted error reports for all kinds of errors.")
    (license (list license:expat license:asl2.0))))

(define-public rust-ed25519-zebra-2
  (package
    (name "rust-ed25519-zebra")
    (version "2.2.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "ed25519-zebra" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0284mnhc2514b9hzyhgcf8vfggwdqwyx8vsawckv9m3dmxv8n4ha"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-curve25519-dalek" ,rust-curve25519-dalek-3)
                       ("rust-hex" ,rust-hex-0.4)
                       ("rust-rand-core" ,rust-rand-core-0.5)
                       ("rust-serde" ,rust-serde-1)
                       ("rust-sha2" ,rust-sha2-0.9)
                       ("rust-thiserror" ,rust-thiserror-1))
       #:cargo-development-inputs (("rust-bincode" ,rust-bincode-1)
                                   ("rust-color-eyre" ,rust-color-eyre-0.5)
                                   ("rust-criterion" ,rust-criterion-0.3)
                                   ("rust-ed25519-zebra" ,rust-ed25519-zebra-1)
                                   ("rust-once-cell" ,rust-once-cell-1)
                                   ("rust-rand" ,rust-rand-0.7))))
    (home-page "https://github.com/ZcashFoundation/ed25519-zebra")
    (synopsis "Zcash-flavored Ed25519 for use in Zebra.")
    (description "Zcash-flavored Ed25519 for use in Zebra.")
    (license (list license:expat license:asl2.0))))

(define-public rust-nix-0.26
  (package
    (name "rust-nix")
    (version "0.26.2")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "nix" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "06lfvjhsj5zlslsg2jhijrm69npprmsh7r1667qnl7c2jv8s7pdz"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-bitflags" ,rust-bitflags-1)
                       ("rust-cfg-if" ,rust-cfg-if-1)
                       ("rust-libc" ,rust-libc-0.2)
                       ("rust-memoffset" ,rust-memoffset-0.7)
                       ("rust-pin-utils" ,rust-pin-utils-0.1)
                       ("rust-static-assertions" ,rust-static-assertions-1))))
    (home-page "https://github.com/nix-rust/nix")
    (synopsis "Rust friendly bindings to *nix APIs")
    (description "Rust friendly bindings to *nix APIs")
    (license license:expat)))

(define-public rust-pager-0.16
  (package
    (name "rust-pager")
    (version "0.16.1")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "pager" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "10188qgnsz988g30fvl4whkljh2zl4gpbp6kc48bpywpbhd23695"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-errno" ,rust-errno-0.2)
                       ("rust-libc" ,rust-libc-0.2))))
    (home-page "https://gitlab.com/imp/pager-rs.git")
    (synopsis "Helps pipe your output through an external pager")
    (description "Helps pipe your output through an external pager")
    (license (list license:asl2.0 license:expat))))

(define-public rust-ctrlc-3.2
  (package
    (name "rust-ctrlc")
    (version "3.2.4")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "ctrlc" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0wfxpdjhmn7qff51wcrirmxgf7sr45pxhzyqm40ja4ar7ipclc8n"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-nix" ,rust-nix-0.26)
                       ("rust-windows-sys" ,rust-windows-sys-0.42))
       #:cargo-development-inputs (("rust-windows-sys" ,rust-windows-sys-0.42))))
    (home-page "https://github.com/Detegr/rust-ctrlc")
    (synopsis "Easy Ctrl-C handler for Rust projects")
    (description "Easy Ctrl-C handler for Rust projects")
    (license (list license:expat license:asl2.0))))

(define-public rust-encoding-rs-0.8.31
  (package
    (name "rust-encoding-rs")
    (version "0.8.31")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "encoding_rs" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0azc6rblf75vd862ymjahdfch27j1sshb7zynshrx7ywi5an6llq"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-cfg-if" ,rust-cfg-if-1)
                       ("rust-packed-simd-2" ,rust-packed-simd-2-0.3)
                       ("rust-serde" ,rust-serde-1))
       #:cargo-development-inputs (("rust-bincode" ,rust-bincode-1)
                                   ("rust-serde-derive" ,rust-serde-derive-1)
                                   ("rust-serde-json" ,rust-serde-json-1))))
    (home-page "https://docs.rs/encoding_rs/")
    (synopsis "A Gecko-oriented implementation of the Encoding Standard")
    (description
     "This package provides a Gecko-oriented implementation of the Encoding Standard")
    (license (list license:expat license:bsd-3))))

(define-public rust-slab-0.4
  (package
    (name "rust-slab")
    (version "0.4.7")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "slab" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1vyw3rkdfdfkzfa1mh83s237sll8v5kazfwxma60bq4b59msf526"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-autocfg" ,rust-autocfg-1)
                       ("rust-serde" ,rust-serde-1))))
    (home-page "https://github.com/tokio-rs/slab")
    (synopsis "Pre-allocated storage for a uniform data type")
    (description "Pre-allocated storage for a uniform data type")
    (license license:expat)))

(define-public rust-tokio-util-0.7
  (package
    (name "rust-tokio-util")
    (version "0.7.4")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "tokio-util" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0h67jb56bsxy4pi1a41pda8d52569ci5clvqv3c6cg9vy1sy1chb"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-bytes" ,rust-bytes-1)
                       ("rust-futures-core" ,rust-futures-core-0.3)
                       ("rust-futures-io" ,rust-futures-io-0.3)
                       ("rust-futures-sink" ,rust-futures-sink-0.3)
                       ("rust-futures-util" ,rust-futures-util-0.3)
                       ("rust-hashbrown" ,rust-hashbrown-0.12)
                       ("rust-pin-project-lite" ,rust-pin-project-lite-0.2)
                       ("rust-slab" ,rust-slab-0.4)
                       ("rust-tokio" ,rust-tokio-1)
                       ("rust-tracing" ,rust-tracing-0.1))))
    (home-page "https://tokio.rs")
    (synopsis "Additional utilities for working with Tokio.
")
    (description "Additional utilities for working with Tokio.")
    (license license:expat)))

(define-public rust-tokio-stream-0.1.11
  (package
    (name "rust-tokio-stream")
    (version "0.1.11")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "tokio-stream" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1ki3aafl33qyqmahhp4i5da1ig0im2a89cpqr5xwsg270h27fq6n"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-futures-core" ,rust-futures-core-0.3)
                       ("rust-pin-project-lite" ,rust-pin-project-lite-0.2)
                       ("rust-tokio" ,rust-tokio-1)
                       ("rust-tokio-util" ,rust-tokio-util-0.7))
       #:cargo-development-inputs (("rust-async-stream" ,rust-async-stream-0.3)
                                   ("rust-futures" ,rust-futures-0.3)
                                   ("rust-parking-lot" ,rust-parking-lot-0.12)
                                   ("rust-proptest" ,rust-proptest-1)
                                   ("rust-tokio" ,rust-tokio-1))))
    (home-page "https://tokio.rs")
    (synopsis "Utilities to work with `Stream` and `tokio`.")
    (description "Utilities to work with `Stream` and `tokio`.")
    (license license:expat)))

(define-public rust-libpijul
  (package
    (name "rust-libpijul")
    (version "1.0.0-beta.3")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "libpijul" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "05jmq8iyxd8pzfxqmg4wfcljia43if6sg9spbxkaa29vsd88f85w"))
	      (patches (search-patches "vfx/patches/libpijul-fix-ed25519-dalek-call.patch"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-adler32" ,rust-adler32-1)
                       ("rust-aes" ,rust-aes-0.7)
                       ("rust-bincode" ,rust-bincode-1)
                       ("rust-bitflags" ,rust-bitflags-1)
                       ("rust-blake3" ,rust-blake3-1.3)
                       ("rust-bs58" ,rust-bs58-0.4)
                       ("rust-byteorder" ,rust-byteorder-1)
                       ("rust-canonical-path" ,rust-canonical-path-2)
                       ("rust-cfg-if" ,rust-cfg-if-1)
                       ("rust-chrono" ,rust-chrono-0.4)
                       ("rust-crossbeam-deque" ,rust-crossbeam-deque-0.8)
                       ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.8)
                       ("rust-curve25519-dalek" ,rust-curve25519-dalek-3)
                       ("rust-data-encoding" ,rust-data-encoding-2)
                       ("rust-diffs" ,rust-diffs-0.4)
                       ("rust-ed25519-dalek" ,rust-ed25519-dalek-1)
                       ("rust-encoding-rs" ,rust-encoding-rs-0.8.31)
                       ("rust-flate2" ,rust-flate2-1)
                       ("rust-generic-array" ,rust-generic-array-0.14)
                       ("rust-hmac" ,rust-hmac-0.11)
                       ("rust-ignore" ,rust-ignore-0.4)
                       ("rust-lazy-static" ,rust-lazy-static-1)
                       ("rust-log" ,rust-log-0.4)
                       ("rust-lru-cache" ,rust-lru-cache-0.1)
                       ("rust-memchr" ,rust-memchr-2)
                       ("rust-nom" ,rust-nom-7)
                       ("rust-parking-lot" ,rust-parking-lot-0.11)
                       ("rust-path-slash" ,rust-path-slash-0.1)
                       ("rust-pbkdf2" ,rust-pbkdf2-0.9)
                       ("rust-pijul-macros" ,rust-pijul-macros)
                       ("rust-rand" ,rust-rand-0.8)
                       ("rust-rand-core" ,rust-rand-core-0.6)
                       ("rust-regex" ,rust-regex-1)
                       ("rust-sanakirja" ,rust-sanakirja)
                       ("rust-serde" ,rust-serde-1)
                       ("rust-serde-derive" ,rust-serde-derive-1)
                       ("rust-serde-json" ,rust-serde-json-1)
                       ("rust-sha2" ,rust-sha2-0.9)
                       ("rust-tar" ,rust-tar-0.4)
                       ("rust-tempfile" ,rust-tempfile-3)
                       ("rust-thiserror" ,rust-thiserror-1)
                       ("rust-tokio" ,rust-tokio-1)
                       ("rust-toml" ,rust-toml-0.5)
                       ("rust-twox-hash" ,rust-twox-hash-1)
                       ("rust-zstd-seekable" ,rust-zstd-seekable-0.1))))
    (home-page "https://nest.pijul.com/pijul/libpijul")
    (synopsis
     "Core library of Pijul, a distributed version control system based on a sound theory of collaborative work.")
    (description
     "Core library of Pijul, a distributed version control system based on a sound
theory of collaborative work.")
    (license license:gpl2+)))

(define-public rust-edit-0.1
  (package
    (name "rust-edit")
    (version "0.1.4")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "edit" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1d7v2yd2jckqr1v4rd1fgihqnad5wlxgkxbb9kg1ysdwyxqslqn5"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-shell-words" ,rust-shell-words-1)
                       ("rust-tempfile" ,rust-tempfile-3)
                       ("rust-which" ,rust-which-4))))
    (home-page "https://github.com/milkey-mouse/edit")
    (synopsis "Open a file in the default text editor")
    (description "Open a file in the default text editor")
    (license license:cc0)))

(define-public rust-os-type-2
  (package
    (name "rust-os-type")
    (version "2.6.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "os_type" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "19bv5jq9z04bw3kf9qdxw76yngjy9g5dmxnqdr8nf0d3xv048kg2"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-regex" ,rust-regex-1))))
    (home-page "https://github.com/schultyy/os_type")
    (synopsis "Detect the operating system type")
    (description "Detect the operating system type")
    (license license:expat)))

(define-public rust-human-panic-1
  (package
    (name "rust-human-panic")
    (version "1.0.3")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "human-panic" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0djfad84iwl86kabj8rqfhv5nn1qi1fd9hb7z72xgjxb02jmgwrr"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-backtrace" ,rust-backtrace-0.3)
                       ("rust-os-type" ,rust-os-type-2)
                       ("rust-serde" ,rust-serde-1)
                       ("rust-serde-derive" ,rust-serde-derive-1)
                       ("rust-termcolor" ,rust-termcolor-1)
                       ("rust-toml" ,rust-toml-0.5)
                       ("rust-uuid" ,rust-uuid-0.8))))
    (home-page "https://github.com/yoshuawuyts/human-panic")
    (synopsis "Panic messages for humans")
    (description "Panic messages for humans")
    (license (list license:expat license:asl2.0))))

(define-public rust-rlimit-0.6
  (package
    (name "rust-rlimit")
    (version "0.6.2")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "rlimit" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "09hpr6dfrx7xzlps7g25akqp2p32190vhcj3ymid6vrpaiaz42yc"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
    (home-page "https://github.com/Nugine/rlimit/")
    (synopsis "Resource limits")
    (description "Resource limits")
    (license license:expat)))

(define-public rust-whoami-1
  (package
    (name "rust-whoami")
    (version "1.3.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "whoami" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1qr6ais0yikqyf8bh05ry854lkhpxkfkggd9c717v8nw1hgwgns5"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-wasm-bindgen" ,rust-wasm-bindgen-0.2)
                       ("rust-web-sys" ,rust-web-sys-0.3))))
    (home-page "https://github.com/ardaku/whoami/blob/stable/CHANGELOG.md")
    (synopsis "Retrieve the current user and environment.")
    (description "Retrieve the current user and environment.")
    (license (list license:asl2.0 license:boost1.0 license:expat))))

(define-public rust-thrussh-0.33
  (package
    (name "rust-thrussh")
    (version "0.33.5")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "thrussh" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1y1nhpg9l8jwjv59am9kmf9gib2j58c1qm36dvgq7pwsi8il0rcf"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-bitflags" ,rust-bitflags-1)
                       ("rust-byteorder" ,rust-byteorder-1)
                       ("rust-cryptovec" ,rust-cryptovec-0.6)
                       ("rust-digest" ,rust-digest-0.9)
                       ("rust-flate2" ,rust-flate2-1)
                       ("rust-futures" ,rust-futures-0.3)
                       ("rust-generic-array" ,rust-generic-array-0.14)
                       ("rust-log" ,rust-log-0.4)
                       ("rust-openssl" ,rust-openssl-0.10)
                       ("rust-rand" ,rust-rand-0.8)
                       ("rust-sha2" ,rust-sha2-0.9)
                       ("rust-thiserror" ,rust-thiserror-1)
                       ("rust-thrussh-keys" ,rust-thrussh-keys-0.21)
                       ("rust-thrussh-libsodium" ,rust-thrussh-libsodium-0.2)
                       ("rust-tokio" ,rust-tokio-1))
       #:cargo-development-inputs (("rust-anyhow" ,rust-anyhow-1)
                                   ("rust-env-logger" ,rust-env-logger-0.7)
                                   ("rust-tokio" ,rust-tokio-1))))
    (home-page "https://pijul.org/thrussh")
    (synopsis "A client and server SSH library.")
    (description "This package provides a client and server SSH library.")
    (license license:asl2.0)))

(define-public rust-thrussh-config-0.5
  (package
    (name "rust-thrussh-config")
    (version "0.5.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "thrussh-config" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1ygm5vdy180gslgmbd0v722ap451pw8cwaba0g0dzx5gg3cl9h37"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-dirs-next" ,rust-dirs-next-2)
                       ("rust-futures" ,rust-futures-0.3)
                       ("rust-log" ,rust-log-0.4)
                       ("rust-thiserror" ,rust-thiserror-1)
                       ("rust-tokio" ,rust-tokio-1)
                       ("rust-whoami" ,rust-whoami-1))))
    (home-page "https://nest.pijul.com/pijul/thrussh")
    (synopsis
     "Utilities to parse .ssh/config files, including helpers to implement ProxyCommand in Thrussh.")
    (description
     "Utilities to parse .ssh/config files, including helpers to implement
ProxyCommand in Thrussh.")
    (license license:asl2.0)))

(define-public rust-thrussh-keys-0.21
  (package
    (name "rust-thrussh-keys")
    (version "0.21.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "thrussh-keys" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1azmv32m5jpxsflj4dq62i84mv2cavc354r8yy98vc9j54dcab57"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-aes" ,rust-aes-0.7)
                       ("rust-bcrypt-pbkdf" ,rust-bcrypt-pbkdf-0.6)
                       ("rust-bit-vec" ,rust-bit-vec-0.6)
                       ("rust-block-modes" ,rust-block-modes-0.8)
                       ("rust-byteorder" ,rust-byteorder-1)
                       ("rust-cryptovec" ,rust-cryptovec-0.6)
                       ("rust-data-encoding" ,rust-data-encoding-2)
                       ("rust-dirs" ,rust-dirs-3)
                       ("rust-futures" ,rust-futures-0.3)
                       ("rust-hmac" ,rust-hmac-0.11)
                       ("rust-log" ,rust-log-0.4)
                       ("rust-md5" ,rust-md5-0.7)
                       ("rust-num-bigint" ,rust-num-bigint-0.4)
                       ("rust-num-integer" ,rust-num-integer-0.1)
                       ("rust-openssl" ,rust-openssl-0.10)
                       ("rust-pbkdf2" ,rust-pbkdf2-0.8)
                       ("rust-rand" ,rust-rand-0.8)
                       ("rust-serde" ,rust-serde-1)
                       ("rust-serde-derive" ,rust-serde-derive-1)
                       ("rust-sha2" ,rust-sha2-0.9)
                       ("rust-thiserror" ,rust-thiserror-1)
                       ("rust-thrussh-libsodium" ,rust-thrussh-libsodium-0.2)
                       ("rust-tokio" ,rust-tokio-1)
                       ("rust-tokio-stream" ,rust-tokio-stream-0.1.11)
                       ("rust-yasna" ,rust-yasna-0.4))
       #:cargo-development-inputs (("rust-env-logger" ,rust-env-logger-0.8)
                                   ("rust-tempdir" ,rust-tempdir-0.3))))
    (home-page "https://pijul.org/thrussh")
    (synopsis
     "Deal with SSH keys: load them, decrypt them, call an SSH agent.")
    (description
     "Deal with SSH keys: load them, decrypt them, call an SSH agent.")
    (license license:asl2.0)))

(define-public rust-typenum-1
  (package
    (name "rust-typenum")
    (version "1.16.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "typenum" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1fhb9iaqyjn4dzn2vl86kxjhp4xpw5gynczlnqzf4x6rjgpn2ya9"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs (("rust-scale-info" ,rust-scale-info-1))))
    (home-page "https://github.com/paholg/typenum")
    (synopsis
     "Typenum is a Rust library for type-level numbers evaluated at
    compile time. It currently supports bits, unsigned integers, and signed
    integers. It also provides a type-level array of type-level numbers, but its
    implementation is incomplete.")
    (description
     "Typenum is a Rust library for type-level numbers evaluated at compile time.  It
currently supports bits, unsigned integers, and signed integers.  It also
provides a type-level array of type-level numbers, but its implementation is
incomplete.")
    (license (list license:expat license:asl2.0))))

(define-public rust-crypto-common-0.1.6
  (package
    (name "rust-crypto-common")
    (version "0.1.6")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "crypto-common" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1cvby95a6xg7kxdz5ln3rl9xh66nz66w46mm3g56ri1z5x815yqv"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs (("rust-generic-array" ,rust-generic-array-0.14)
                       ("rust-rand-core" ,rust-rand-core-0.6)
                       ("rust-typenum" ,rust-typenum-1))))
    (home-page "https://github.com/RustCrypto/traits")
    (synopsis "Common cryptographic traits")
    (description "Common cryptographic traits")
    (license (list license:expat license:asl2.0))))

(define-public pijul
  (package
    (name "pijul")
    (version "1.0.0-beta.2")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "pijul" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1ibdf3k3rgx3pr3j8yp4xrm0zz0laxa7ys7kz2lb1niwh6pp024y"))))
    (build-system cargo-build-system)
    (native-inputs (list pkg-config bash-minimal m4 gcc-toolchain gnu-make autoconf-2.71 automake-1.16.5 autobuild binutils libtool-2.4.7))
    (inputs
     `(("openssl" ,openssl)
       ("xxhash" ,xxhash)
       ("libsodium" ,libsodium)
       ("zstd:lib" ,zstd "lib")))
    (arguments
     `(#:cargo-inputs (("rust-anyhow" ,rust-anyhow-1)
                       ("rust-atty" ,rust-atty-0.2)
                       ("rust-bincode" ,rust-bincode-1)
                       ("rust-byteorder" ,rust-byteorder-1)
                       ("rust-bytes" ,rust-bytes-1)
                       ("rust-canonical-path" ,rust-canonical-path-2)
                       ("rust-chrono" ,rust-chrono-0.4)
                       ("rust-clap" ,rust-clap-3)
                       ("rust-ctrlc" ,rust-ctrlc-3.2)
                       ("rust-data-encoding" ,rust-data-encoding-2)
                       ("rust-dirs-next" ,rust-dirs-next-2)
                       ("rust-edit" ,rust-edit-0.1)
                       ("rust-env-logger" ,rust-env-logger-0.8)
                       ("rust-fs2" ,rust-fs2-0.4)
                       ("rust-futures" ,rust-futures-0.3)
                       ("rust-futures-util" ,rust-futures-util-0.3)
                       ("rust-git2" ,rust-git2-0.13)
                       ("rust-human-panic" ,rust-human-panic-1)
                       ("rust-ignore" ,rust-ignore-0.4)
                       ("rust-lazy-static" ,rust-lazy-static-1)
                       ("rust-libpijul" ,rust-libpijul)
                       ("rust-log" ,rust-log-0.4)
                       ("rust-num-cpus" ,rust-num-cpus-1)
                       ("rust-pager" ,rust-pager-0.16)
                       ("rust-path-slash" ,rust-path-slash-0.1)
                       ("rust-rand" ,rust-rand-0.8)
                       ("rust-regex" ,rust-regex-1)
                       ("rust-reqwest" ,rust-reqwest-0.11)
                       ("rust-rlimit" ,rust-rlimit-0.6)
                       ("rust-rpassword" ,rust-rpassword-5)
                       ("rust-sanakirja" ,rust-sanakirja)
                       ("rust-serde" ,rust-serde-1)
                       ("rust-serde-derive" ,rust-serde-derive-1)
                       ("rust-serde-json" ,rust-serde-json-1)
                       ("rust-termcolor" ,rust-termcolor-1)
                       ("rust-terminal-size" ,rust-terminal-size-0.1)
                       ("rust-thiserror" ,rust-thiserror-1)
                       ("rust-thrussh" ,rust-thrussh-0.33)
                       ("rust-thrussh-config" ,rust-thrussh-config-0.5)
                       ("rust-thrussh-keys" ,rust-thrussh-keys-0.21)
                       ("rust-tokio" ,rust-tokio-1)
                       ("rust-toml" ,rust-toml-0.5)
                       ("rust-url" ,rust-url-2)
                       ("rust-whoami" ,rust-whoami-1))
       #:phases
       (modify-phases %standard-phases
                  (add-after 'unpack 'set-shell-for-configure-script
                    (lambda _
                      (setenv "SHELL" (which "sh"))
		      (setenv "CONFIG_SHELL" (which "sh")))))))
    (home-page "https://nest.pijul.com/pijul/pijul")
    (synopsis "A distributed version control system.")
    (description "This package provides a distributed version control system.")
    (license license:gpl2+)))