summary refs log tree commit diff
path: root/gnu/packages/golang.scm
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2018-11-05 23:56:22 +0100
committerMarius Bakke <mbakke@fastmail.com>2018-11-05 23:56:22 +0100
commitf4a5faa9dcadc698383e15743ac5f974ee0e3c8b (patch)
tree96124567d5604c496cf8d2848ffe348de0b701ac /gnu/packages/golang.scm
parent16b89ecc1f2f1f9651d119518c0e752b01f0f07b (diff)
parentadde15186da7529b85097fdafffc2a13b0e60bdf (diff)
downloadguix-f4a5faa9dcadc698383e15743ac5f974ee0e3c8b.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/golang.scm')
-rw-r--r--gnu/packages/golang.scm1026
1 files changed, 999 insertions, 27 deletions
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 7c026ff5f0..49fe34f13d 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -36,6 +36,7 @@
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (guix build-system go)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages gcc)
@@ -46,7 +47,9 @@
   #:use-module (gnu packages lua)
   #:use-module (gnu packages mp3)
   #:use-module (ice-9 match)
-  #:use-module (srfi srfi-1))
+  #:use-module (srfi srfi-1)
+  #:export (go-github-com-gogo-protobuf-union)
+  #:export (go-golang-org-x-crypto-union))
 
 ;; According to https://golang.org/doc/install/gccgo, gccgo-4.8.2 includes a
 ;; complete go-1.1.2 implementation, gccgo-4.9 includes a complete go-1.2
@@ -516,12 +519,23 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                  (substitute* (find-files "cmd" "\\.go")
                    (("/lib(64)?/ld-linux.*\\.so\\.[0-9]") loader))
                  #t)))
+           ;; Prevent installation of the build cache, which contains store
+           ;; references to most of the tools used to build Go and would
+           ;; unnecessarily increase the size of Go's closure if it was
+           ;; installed.
+           ;; TODO This should be moved into the 'install' phase when Go 1.9 is
+           ;; removed.
+           (add-before 'install 'delete-extraneous-files
+             (lambda _
+               (delete-file-recursively "../pkg/obj")
+               #t))
            (replace 'set-bootstrap-variables
              (lambda* (#:key outputs inputs #:allow-other-keys)
                ;; Tell the build system where to find the bootstrap Go.
                (let ((go  (assoc-ref inputs "go")))
                  (setenv "GOROOT_BOOTSTRAP" go)
-                 (setenv "GOGC" "400"))))))))))
+                 (setenv "GOGC" "400")
+                 #t)))))))))
 
 (define-public go go-1.9)
 
@@ -996,6 +1010,97 @@ Tiny Encryption Algorithm (XTEA) block cipher.")
       (home-page "https://go.googlesource.com/crypto/")
       (license license:bsd-3))))
 
+(define-public go-golang-org-x-crypto-ed25519
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-ed25519")
+    (arguments
+     (substitute-keyword-arguments (package-arguments go-golang-org-x-crypto-bcrypt)
+       ((#:import-path _)
+        "golang.org/x/crypto/ed25519")))
+    (synopsis "ED25519 in Go")
+    (description "This package provides a Go implementation of the ED25519
+signature algorithm.")))
+
+(define-public go-golang-org-x-crypto-ripemd160
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-ripemd160")
+    (arguments
+     (substitute-keyword-arguments (package-arguments go-golang-org-x-crypto-bcrypt)
+       ((#:import-path _)
+        "golang.org/x/crypto/ripemd160")))
+    (synopsis "RIPEMD-160 in Go")
+    (description "This package provides a Go implementation of the RIPEMD-160
+hash algorithm.")))
+
+(define-public go-golang-org-x-crypto-blake2s
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-blake2s")
+    (arguments
+     (substitute-keyword-arguments (package-arguments go-golang-org-x-crypto-bcrypt)
+       ((#:import-path _)
+        "golang.org/x/crypto/blake2s")))
+    (synopsis "BLAKE2s in Go")
+    (description "This package provides a Go implementation of the BLAKE2s
+hash algorithm.")))
+
+(define-public go-golang-org-x-crypto-sha3
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-sha3")
+    (arguments
+     (substitute-keyword-arguments (package-arguments go-golang-org-x-crypto-bcrypt)
+       ((#:import-path _)
+        "golang.org/x/crypto/sha3")))
+    (synopsis "SHA-3 in Go")
+    (description "This package provides a Go implementation of the SHA-3
+fixed-output-length hash functions and the SHAKE variable-output-length hash
+functions defined by FIPS-202.")))
+
+;; Go searches for library modules by looking in the GOPATH environment
+;; variable.  This variable is a list of paths.  However, Go does not
+;; keep searching on GOPATH if it tries and fails to import a module.
+;; So, we use a union for packages sharing a namespace.
+(define* (go-golang-org-x-crypto-union #:optional
+                                    (packages (list go-golang-org-x-crypto-blowfish
+                                                    go-golang-org-x-crypto-bcrypt
+                                                    go-golang-org-x-crypto-tea
+                                                    go-golang-org-x-crypto-xtea
+                                                    go-golang-org-x-crypto-pbkdf2
+                                                    go-golang-org-x-crypto-twofish
+                                                    go-golang-org-x-crypto-cast5
+                                                    go-golang-org-x-crypto-salsa20
+                                                    go-golang-org-x-crypto-ed25519
+                                                    go-golang-org-x-crypto-ripemd160
+                                                    go-golang-org-x-crypto-blake2s
+                                                    go-golang-org-x-crypto-sha3)))
+  (package
+    (name "go-golang-org-x-crypto")
+    (version (package-version go-golang-org-x-crypto-bcrypt))
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     '(#:modules ((guix build union))
+       #:builder (begin
+                   (use-modules (ice-9 match)
+                                (guix build union))
+                   (match %build-inputs
+                     (((names . directories) ...)
+                      (union-build (assoc-ref %outputs "out")
+                                   directories)
+                      #t)))))
+    (inputs (map (lambda (package)
+                   (list (package-name package) package))
+                 packages))
+    (synopsis "Union of the Go x crypto libraries")
+    (description "A union of the Golang cryptographic libraries.  A
+union is required because `go build` assumes that all of the headers and
+libraries are in the same directory.")
+    (home-page (package-home-page go-golang-org-x-crypto-bcrypt))
+    (license (package-license go-golang-org-x-crypto-bcrypt))))
+
 (define-public go-golang-org-x-net-ipv4
   (let ((commit "d866cfc389cec985d6fda2859936a575a55a3ab6")
         (revision "1"))
@@ -1476,31 +1581,6 @@ Features include:
 optimized for performance yet simple to use.")
       (license license:expat))))
 
-(define-public go-github-com-urfave-cli
-  (let ((commit "cfb38830724cc34fedffe9a2a29fb54fa9169cd1")
-        (revision "0"))
-    (package
-      (name "go-github-com-urfave-cli")
-      (version (git-version "0.0.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/urfave/cli.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0y6f4sbzkiiwrxbl15biivj8c7qwxnvm3zl2dd3mw4wzg4x10ygj"))))
-      (build-system go-build-system)
-      (arguments
-       '(#:import-path "github.com/urfave/cli"))
-      (home-page "https://github.com/urfave/cli")
-      (synopsis "Library for building command-line interfaces in Go")
-      (description "This package provides a library for building command-line
-interfaces in Go.")
-      (license license:expat))))
-
 (define-public go-github-com-blang-semver
   (let ((commit "60ec3488bfea7cca02b021d106d9911120d25fe9")
         (revision "0"))
@@ -2357,3 +2437,895 @@ and lookup requests.  Browse requests are not supported yet.")
       (synopsis "Go wrapper for taglib")
       (description "Go wrapper for taglib")
       (license license:unlicense))))
+
+(define* (go-github-com-gogo-protobuf-union
+           #:optional (packages (list go-github-com-gogo-protobuf
+                                      go-github-com-gogo-protobuf-protoc-gen-gogo)))
+  (package
+    (name "go-github-com-gogo-protobuf-union")
+    (version (package-version go-github-com-gogo-protobuf))
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     '(#:modules ((guix build union))
+       #:builder (begin
+                   (use-modules (ice-9 match)
+                                (guix build union))
+                   (match %build-inputs
+                     (((names . directories) ...)
+                      (union-build (assoc-ref %outputs "out")
+                                   directories)
+                      #t)))))
+    (inputs (map (lambda (package)
+                   (list (package-name package) package))
+                 packages))
+    (synopsis "Union of Go protobuf libraries")
+    (description "This is a union of Go protobuf libraries")
+    (home-page (package-home-page go-github-com-gogo-protobuf))
+    (license (package-license go-github-com-gogo-protobuf))))
+
+(define-public go-github-com-gogo-protobuf
+  (let ((commit "160de10b2537169b5ae3e7e221d28269ef40d311")
+        (revision "2"))
+    (package
+      (name "go-github-com-gogo-protobuf")
+      (version (git-version "0.5" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/gogo/protobuf")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0hxq28sgxym04rv0q40gpwkh4ni359q21hq3g78wwxwx4qfd4zwm"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/gogo/protobuf/proto"
+         #:unpack-path "github.com/gogo/protobuf"))
+      (propagated-inputs
+       `(("go-github-com-gogo-protobuf-protoc-gen-gogo"
+          ,go-github-com-gogo-protobuf-protoc-gen-gogo)))
+      (synopsis "Protocol Buffers for Go with Gadgets")
+      (description "Gogoprotobuf is a fork of golang/protobuf with extra code
+generation features.  This code generation is used to achieve:
+@itemize
+@item fast marshalling and unmarshalling
+@item more canonical Go structures
+@item goprotobuf compatibility
+@item less typing by optionally generating extra helper code
+@item peace of mind by optionally generating test and benchmark code
+@item other serialization formats
+@end itemize")
+      (home-page "https://github.com/gogo/protobuf")
+      (license license:bsd-3))))
+
+(define-public go-github-com-gogo-protobuf-protoc-gen-gogo
+  (let ((commit "efccd33a0c20aa078705571d5ddbfa14c8395a63")
+        (revision "0"))
+    (package
+      (name "go-github-com-gogo-protobuf-protoc-gen-gogo")
+      (version (git-version "0.2" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/gogo/protobuf")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "09kfa3aqmhh7p0rc6wd4fw5cjccidsk9vgcy13albv0g8vnbmmgw"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/gogo/protobuf/protoc-gen-gogo"
+         #:unpack-path "github.com/gogo/protobuf"))
+      (synopsis "Protocol Buffers for Go with Gadgets")
+      (description "Gogoprotobuf is a fork of golang/protobuf with extra code
+generation features.  This code generation is used to achieve:
+@itemize
+@item fast marshalling and unmarshalling
+@item more canonical Go structures
+@item goprotobuf compatibility
+@item less typing by optionally generating extra helper code
+@item peace of mind by optionally generating test and benchmark code
+@item other serialization formats
+@end itemize")
+      (home-page "https://github.com/gogo/protobuf")
+      (license license:bsd-3))))
+
+(define-public go-github-com-gogo-protobuf-proto
+  (let ((commit
+          "fd322a3c49630fe6d05737e2b7d9426e6680e28d")
+        (revision "0"))
+    (package
+      (name "go-github-com-gogo-protobuf-proto")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/gogo/protobuf.git")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+            (base32
+              "1zi85584dy91hyrwpanygz1pppi0chn3hzzv128i83i6j45a5fp9"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:unpack-path "github.com/gogo/protobuf"
+         #:import-path "github.com/gogo/protobuf/proto"))
+      (native-inputs `())
+      (home-page "https://github.com/gogo/protobuf")
+      (synopsis "XXX")
+      (description "XXX")
+      (license license:expat))))
+
+(define-public go-github-com-libp2p-go-flow-metrics
+  (let ((commit "7e5a55af485341567f98d6847a373eb5ddcdcd43")
+        (revision "0"))
+    (package
+      (name "go-github-com-libp2p-go-flow-metrics")
+      (version (git-version "0.2.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/libp2p/go-flow-metrics.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1p87iyk6q6f3g3xkncssx400qlld8f2z93qiz8m1f97grfyhjif1"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/libp2p/go-flow-metrics"
+         ;; TODO: Tests hang.
+         #:tests? #f))
+      (home-page
+       "https://github.com/libp2p/go-flow-metrics")
+      (synopsis "Simple library for tracking flow metrics")
+      (description "A simple alternative to rcrowley's @command{go-metrics}
+that's a lot faster (and only does simple bandwidth metrics).")
+      (license license:expat))))
+
+(define-public go-github-com-davecgh-go-spew
+  (let ((commit "d8f796af33cc11cb798c1aaeb27a4ebc5099927d")
+        (revision "0"))
+    (package
+      (name "go-github-com-davecgh-go-spew")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/davecgh/go-spew.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "19z27f306fpsrjdvkzd61w1bdazcdbczjyjck177g33iklinhpvx"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:unpack-path "github.com/davecgh/go-spew"
+         #:import-path "github.com/davecgh/go-spew/spew"))
+      (home-page "https://github.com/davecgh/go-spew")
+      (synopsis "Deep pretty printer for Go data structures to aid in debugging")
+      (description "Package @command{spew} implements a deep pretty printer
+for Go data structures to aid in debugging.
+
+A quick overview of the additional features spew provides over the built-in printing facilities for Go data types are as follows:
+
+@itemize
+@item Pointers are dereferenced and followed.
+@item Circular data structures are detected and handled properly.
+@item Custom Stringer/error interfaces are optionally invoked, including on
+unexported types.
+@item Custom types which only implement the Stringer/error interfaces via a
+pointer receiver are optionally invoked when passing non-pointer variables.
+@item Byte arrays and slices are dumped like the hexdump -C command which
+includes offsets, byte values in hex, and ASCII output (only when using Dump
+style).
+@end itemize\n")
+      (license license:isc))))
+
+(define-public go-github-com-btcsuite-btclog
+  (let ((commit "84c8d2346e9fc8c7b947e243b9c24e6df9fd206a")
+        (revision "0"))
+    (package
+      (name "go-github-com-btcsuite-btclog")
+      (version (git-version "0.0.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/btcsuite/btclog.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "02dl46wcnfpg9sqvg0ipipkpnd7lrf4fnvb9zy56jqa7mfcwc7wk"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/btcsuite/btclog"))
+      (home-page "https://github.com/btcsuite/btclog")
+      (synopsis "Subsystem aware logger for Go")
+      (description "Package @command{btclog} defines a logger interface and
+provides a default implementation of a subsystem-aware leveled logger
+implementing the same interface.")
+      (license license:isc))))
+
+(define-public go-github-com-btcsuite-btcd-btcec
+  (let ((commit "67e573d211ace594f1366b4ce9d39726c4b19bd0")
+        (revision "0"))
+    (package
+      (name "go-github-com-btcsuite-btcd-btcec")
+      (version (git-version "0.12.0-beta" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/btcsuite/btcd.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "04s92gsy71w1jirlr5lkk9y6r5cparbas7nmf6ywbp7kq7fn8ajn"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:unpack-path "github.com/btcsuite/btcd"
+         #:import-path "github.com/btcsuite/btcd/btcec"))
+      (native-inputs
+       `(("go-github-com-davecgh-go-spew" ,go-github-com-davecgh-go-spew)))
+      (home-page "https://github.com/btcsuite/btcd")
+      (synopsis "Elliptic curve cryptography to work with Bitcoin")
+      (description "Package @command{btcec} implements elliptic curve
+cryptography needed for working with Bitcoin (secp256k1 only for now).  It is
+designed so that it may be used with the standard crypto/ecdsa packages
+provided with Go.  A comprehensive suite of test is provided to ensure proper
+functionality.  Package @command{btcec} was originally based on work from
+ThePiachu which is licensed under the same terms as Go, but it has
+signficantly diverged since then.  The @command{btcsuite} developers original
+is licensed under the liberal ISC license.
+
+Although this package was primarily written for btcd, it has intentionally
+been designed so it can be used as a standalone package for any projects
+needing to use secp256k1 elliptic curve cryptography.")
+      (license license:isc))))
+
+(define-public go-github-com-minio-sha256-simd
+  (let ((commit "51976451ce1942acbb55707a983ed232fa027110")
+        (revision "0"))
+    (package
+      (name "go-github-com-minio-sha256-simd")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/minio/sha256-simd.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0kaxvpidf6ygkkb06vi95pirll31jnmywhyalfjvf7djhim2wr8f"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/minio/sha256-simd"))
+      (home-page "https://github.com/minio/sha256-simd")
+      (synopsis "Accelerate SHA256 computations in pure Go")
+      (description "Accelerate SHA256 computations in pure Go using AVX512 and
+AVX2 for Intel and ARM64 for ARM.  On AVX512 it provides an up to 8x
+improvement (over 3 GB/s per core) in comparison to AVX2.
+
+This package is designed as a replacement for @command{crypto/sha256}.  For
+Intel CPUs it has two flavors for AVX512 and AVX2 (AVX/SSE are also
+supported).  For ARM CPUs with the Cryptography Extensions, advantage is taken
+of the SHA2 instructions resulting in a massive performance improvement.
+
+This package uses Golang assembly.  The AVX512 version is based on the Intel's
+\"multi-buffer crypto library for IPSec\" whereas the other Intel
+implementations are described in \"Fast SHA-256 Implementations on Intel
+Architecture Processors\" by J. Guilford et al.")
+      (license license:asl2.0))))
+
+(define-public go-github-com-libp2p-go-libp2p-crypto
+  (let ((commit "7240b40a3ddc47c4d17c15baabcbe45e5219171b")
+        (revision "0"))
+    (package
+      (name "go-github-com-libp2p-go-libp2p-crypto")
+      (version (git-version "2.0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/libp2p/go-libp2p-crypto.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0qwpy57qv5143l9dlfwfvpqsxdd2i4zwnawx1w4pmgxxim3nw1wb"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/libp2p/go-libp2p-crypto"))
+      (native-inputs
+       `(("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
+         ("go-github-com-btcsuite-btcd-btcec" ,go-github-com-btcsuite-btcd-btcec)
+         ("go-github-com-gogo-protobuf-proto" ,go-github-com-gogo-protobuf-proto)
+         ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)))
+      (home-page
+       "https://github.com/libp2p/go-libp2p-crypto")
+      (synopsis "Various cryptographic utilities used by IPFS")
+      (description "Various cryptographic utilities used by IPFS")
+      (license license:expat))))
+
+(define-public go-github-com-mr-tron-base58
+  (let ((commit "d724c80ecac7b49e4e562d58b2b4f4ee4ed8c312")
+        (revision "0"))
+    (package
+      (name "go-github-com-mr-tron-base58")
+      (version (git-version "1.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mr-tron/base58.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "12qhgnn9wf3c1ang16r4i778whk4wsrj7d90h2xgmz4fi1469rqa"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:unpack-path "github.com/mr-tron/base58"
+         #:import-path "github.com/mr-tron/base58/base58"))
+      (home-page "https://github.com/mr-tron/base58")
+      (synopsis "Fast implementation of base58 encoding on Golang")
+      (description "Fast implementation of base58 encoding on Golang.  A
+trivial @command{big.Int} encoding benchmark results in 6 times faster
+encoding and 8 times faster decoding.")
+      (license license:expat))))
+
+(define-public go-github-com-gxed-hashland-keccakpg
+  (let ((commit "d9f6b97f8db22dd1e090fd0bbbe98f09cc7dd0a8")
+        (revision "0"))
+    (package
+      (name "go-github-com-gxed-hashland-keccakpg")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/gxed/hashland.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1q23y4lacsz46k9gmgfw4iwwydw36j2601rbidmmswl94grpc386"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:unpack-path "github.com/gxed/hashland"
+         #:import-path "github.com/gxed/hashland/keccakpg"))
+      (home-page "https://github.com/gxed/hashland")
+      (synopsis "Implements the Keccak (SHA-3) hash algorithm in Go")
+      (description "Package @command{keccak} implements the Keccak (SHA-3)
+hash algorithm.  See http://keccak.noekeon.org.")
+      (license license:expat))))
+
+(define-public go-github-com-minio-blake2b-simd
+  (let ((commit "3f5f724cb5b182a5c278d6d3d55b40e7f8c2efb4")
+        (revision "0"))
+    (package
+      (name "go-github-com-minio-blake2b-simd")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/minio/blake2b-simd.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0b6jbnj62c0gmmfd4zdmh8xbg01p80f13yygir9xprqkzk6fikmd"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/minio/blake2b-simd"))
+      (home-page "https://github.com/minio/blake2b-simd")
+      (synopsis "Fast hashing in pure Go of BLAKE2b with SIMD instructions")
+      (description "This package was initially based on the pure go BLAKE2b
+implementation of Dmitry Chestnykh and merged with the (cgo dependent) AVX
+optimized BLAKE2 implementation (which in turn is based on the official
+implementation.  It does so by using Go's Assembler for amd64 architectures
+with a golang only fallback for other architectures.
+
+In addition to AVX there is also support for AVX2 as well as SSE.  Best
+performance is obtained with AVX2 which gives roughly a 4X performance
+increase approaching hashing speeds of 1GB/sec on a single core.")
+      (license license:asl2.0))))
+
+(define-public go-github-com-spaolacci-murmur3
+  (let ((commit "f09979ecbc725b9e6d41a297405f65e7e8804acc")
+        (revision "0"))
+    (package
+      (name "go-github-com-spaolacci-murmur3")
+      (version (git-version "1.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/spaolacci/murmur3.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1lv3zyz3jy2d76bhvvs8svygx66606iygdvwy5cwc0p5z8yghq25"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/spaolacci/murmur3"))
+      (home-page "https://github.com/spaolacci/murmur3")
+      (synopsis "Native MurmurHash3 Go implementation")
+      (description "Native Go implementation of Austin Appleby's third
+MurmurHash revision (aka MurmurHash3).
+
+Reference algorithm has been slightly hacked as to support the streaming mode
+required by Go's standard Hash interface.")
+      (license license:bsd-3))))
+
+(define-public go-github-com-multiformats-go-multihash
+  (let ((commit "97cdb562a04c6ef66d8ed40cd62f8fbcddd396d6")
+        (revision "0"))
+    (package
+      (name "go-github-com-multiformats-go-multihash")
+      (version (git-version "1.0.8" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/multiformats/go-multihash.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "02wd9akrwy4y5m0nig9m24p14bjjgb4n1djydrq8cm4yhbvjrrk0"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/multiformats/go-multihash"))
+      (native-inputs
+       `(("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
+         ("go-github-com-gxed-hashland-keccakpg" ,go-github-com-gxed-hashland-keccakpg)
+         ("go-github-com-minio-blake2b-simd" ,go-github-com-minio-blake2b-simd)
+         ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
+         ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
+         ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))))
+      (home-page "https://github.com/multiformats/go-multihash")
+      (synopsis "Multihash implementation in Go")
+      (description "Multihash implementation in Go.")
+      (license license:expat))))
+
+(define-public go-github-com-libp2p-go-libp2p-peer
+  (let ((commit "993d742bc29dcf4894b7730ba610fd78900be76c")
+        (revision "0"))
+    (package
+      (name "go-github-com-libp2p-go-libp2p-peer")
+      (version (git-version "2.3.8" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/libp2p/go-libp2p-peer.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1h96qjdi0i1wbr0jliap2903mycphas3ny0zdrm77yca9plcnphh"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/libp2p/go-libp2p-peer"))
+      (native-inputs
+       `(("go-github-com-libp2p-go-libp2p-crypto" ,go-github-com-libp2p-go-libp2p-crypto)
+         ("go-github-com-gogo-protobuf-proto" ,go-github-com-gogo-protobuf-proto)
+         ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
+         ("go-github-com-minio-blake2b-simd" ,go-github-com-minio-blake2b-simd)
+         ("go-github-com-btcsuite-btcd-btcec" ,go-github-com-btcsuite-btcd-btcec)
+         ("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
+         ("go-github-com-multiformats-go-multihash" ,go-github-com-multiformats-go-multihash)
+         ("go-github-com-gxed-hashland-keccakpg" ,go-github-com-gxed-hashland-keccakpg)
+         ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
+         ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))))
+      (home-page "https://github.com/libp2p/go-libp2p-peer")
+      (synopsis "PKI based identities for use in go-libp2p")
+      (description "PKI based identities for use in @command{go-libp2p}.")
+      (license license:expat))))
+
+(define-public go-github-com-libp2p-go-libp2p-protocol
+  (let ((commit "b29f3d97e3a2fb8b29c5d04290e6cb5c5018004b")
+        (revision "0"))
+    (package
+      (name "go-github-com-libp2p-go-libp2p-protocol")
+      (version (git-version "1.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/libp2p/go-libp2p-protocol.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1xgjfnx9zcqglg9li29wdqywsp8hz22wx6phns9zscni2jsfidld"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path
+         "github.com/libp2p/go-libp2p-protocol"))
+      (home-page "https://github.com/libp2p/go-libp2p-protocol")
+      (synopsis "Type for protocol strings in Golang")
+      (description "Just a type for protocol strings.  Nothing more.")
+      (license license:expat))))
+
+(define-public go-github-com-libp2p-go-libp2p-metrics
+  (let ((commit "a10ff6e75dae3c868023867e8caa534a04bdc624")
+        (revision "0"))
+    (package
+      (name "go-github-com-libp2p-go-libp2p-metrics")
+      (version (git-version "2.1.6" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/libp2p/go-libp2p-metrics.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "05wy0cq4h6yg9bzgapcvm2criwriicbswx80ma82gyn4a9fdrk8m"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/libp2p/go-libp2p-metrics"))
+      (native-inputs
+       `(("go-github-com-libp2p-go-flow-metrics" ,go-github-com-libp2p-go-flow-metrics)
+         ("go-github-com-libp2p-go-libp2p-peer" ,go-github-com-libp2p-go-libp2p-peer)
+         ("go-github-com-libp2p-go-libp2p-protocol" ,go-github-com-libp2p-go-libp2p-protocol)
+         ("go-github-com-libp2p-go-libp2p-crypto" ,go-github-com-libp2p-go-libp2p-crypto)
+         ("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
+         ("go-github-com-multiformats-go-multihash" ,go-github-com-multiformats-go-multihash)
+         ("go-github-com-btcsuite-btcd-btcec" ,go-github-com-btcsuite-btcd-btcec)
+         ("go-github-com-gogo-protobuf-proto" ,go-github-com-gogo-protobuf-proto)
+         ("go-github-com-gxed-hashland-keccakpg" ,go-github-com-gxed-hashland-keccakpg)
+         ("go-github-com-minio-blake2b-simd" ,go-github-com-minio-blake2b-simd)
+         ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
+         ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
+         ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))))
+      (home-page "https://github.com/libp2p/go-libp2p-metrics")
+      (synopsis "Connection wrapper for go-libp2p that provides bandwidth metrics")
+      (description "A connection wrapper for @command{go-libp2p} that provides bandwidth
+statistics for wrapped connections.")
+      (license license:expat))))
+
+(define-public go-github-com-mitchellh-go-homedir
+  (let ((commit "ae18d6b8b3205b561c79e8e5f69bff09736185f4")
+        (revision "0"))
+    (package
+      (name "go-github-com-mitchellh-go-homedir")
+      (version (git-version "1.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mitchellh/go-homedir.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0f0z0aa4wivk4z1y503dmnw0k0g0g403dly8i4q263gfshs82sbq"))))
+      (build-system go-build-system)
+      (arguments
+       (quote (#:import-path "github.com/mitchellh/go-homedir"
+               ;; TODO: Tests fail because it tries to access home.
+               #:tests? #f)))
+      (home-page "https://github.com/mitchellh/go-homedir")
+      (synopsis "Go library for detecting and expanding the user's home directory without cgo")
+      (description "This is a Go library for detecting the user's home
+directory without the use of @command{cgo}, so the library can be used in
+cross-compilation environments.
+
+Usage is simple, just call homedir.Dir() to get the home directory for a user,
+and homedir.Expand() to expand the @command{~} in a path to the home
+directory.
+
+Why not just use @command{os/user}?  The built-in @command{os/user} package
+requires cgo on Darwin systems.  This means that any Go code that uses that
+package cannot cross compile.  But 99% of the time the use for
+@command{os/user} is just to retrieve the home directory, which we can do for
+the current user without cgo.  This library does that, enabling
+cross-compilation.")
+      (license license:expat))))
+
+(define-public go-github-com-multiformats-go-multiaddr
+  (let ((commit "fe1c46f8be5af4aff4db286e08839295bd922efb")
+        (revision "0"))
+    (package
+      (name "go-github-com-multiformats-go-multiaddr")
+      (version (git-version "1.3.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/multiformats/go-multiaddr.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0p5f8h098a4yjjmzsgqs7vhx1iqifb8izwg3559cr4h7clkpzznh"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path
+         "github.com/multiformats/go-multiaddr"))
+      (native-inputs
+       `(("go-github-com-multiformats-go-multihash" ,go-github-com-multiformats-go-multihash)
+         ("go-github-com-gxed-hashland-keccakpg" ,go-github-com-gxed-hashland-keccakpg)
+         ("go-github-com-minio-blake2b-simd" ,go-github-com-minio-blake2b-simd)
+         ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
+         ("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
+         ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
+         ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))))
+      (home-page "https://github.com/multiformats/go-multiaddr")
+      (synopsis "Composable and future-proof network addresses")
+      (description "Multiaddr is a standard way to represent addresses that
+does the following:
+
+@itemize
+@item Support any standard network protocols.
+@item Self-describe (include protocols).
+@item Have a binary packed format.
+@item Have a nice string representation.
+@item Encapsulate well.
+@end itemize\n")
+      (license license:expat))))
+
+(define-public go-github-com-multiformats-go-multiaddr-net
+  (let ((commit "1cb9a0e8a6de3c8a10f6cee60d01d793603c4f7e")
+        (revision "0"))
+    (package
+      (name "go-github-com-multiformats-go-multiaddr-net")
+      (version (git-version "1.6.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/multiformats/go-multiaddr-net.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1ypgi47xdz3bh8lh7f8cmk7w3ql9g4izx5l3kzdg9gda1xn5zxq3"))))
+      (build-system go-build-system)
+      (arguments
+       (quote (#:import-path "github.com/multiformats/go-multiaddr-net"
+               ;; TODO: Tests fail because they try to access the network.
+               #:tests? #f)))
+      (native-inputs
+       `(("go-github-com-multiformats-go-multiaddr" ,go-github-com-multiformats-go-multiaddr)
+         ("go-github-com-multiformats-go-multihash" ,go-github-com-multiformats-go-multihash)
+         ("go-github-com-gxed-hashland-keccakpg" ,go-github-com-gxed-hashland-keccakpg)
+         ("go-github-com-minio-blake2b-simd" ,go-github-com-minio-blake2b-simd)
+         ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
+         ("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
+         ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
+         ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))))
+      (home-page "https://github.com/multiformats/go-multiaddr-net")
+      (synopsis "Multiaddress net tools")
+      (description "This package provides Multiaddr specific versions of
+common functions in stdlib's @command{net} package.  This means wrappers of
+standard net symbols like @command{net.Dial} and @command{net.Listen}, as well
+as conversion to and from @command{net.Addr}.")
+      (license license:expat))))
+
+(define-public go-github-com-whyrusleeping-tar-utils
+  (let ((commit "8c6c8ba81d5c71fd69c0f48dbde4b2fb422b6dfc")
+        (revision "0"))
+    (package
+      (name "go-github-com-whyrusleeping-tar-utils")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/whyrusleeping/tar-utils.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "14jjdw3yics0k467xsyk388684wdpi0bbx8nqj0y4pqxa0s0in6s"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path
+         "github.com/whyrusleeping/tar-utils"))
+      (home-page "https://github.com/whyrusleeping/tar-utils")
+      (synopsis "Tar utilities extracted from go-ipfs codebase")
+      (description "Tar utilities extracted from @command{go-ipfs} codebase.")
+      (license license:expat))))
+
+(define-public go-github-com-cheekybits-is
+  (let ((commit "68e9c0620927fb5427fda3708222d0edee89eae9")
+        (revision "0"))
+    (package
+      (name "go-github-com-cheekybits-is")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/cheekybits/is.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1mkbyzhwq3rby832ikq00nxv3jnckxsm3949wkxd8ya9js2jmg4d"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/cheekybits/is"))
+      (home-page "https://github.com/cheekybits/is")
+      (synopsis "Mini testing helper for Go")
+      (description "A mini testing helper for Go.
+
+@itemize
+@item It has a simple interface (@command{is.OK} and @command{is.Equal}).
+@item It plugs into existing Go toolchain (uses @command{testing.T}).
+@item It's obvious for newcomers.
+@item It also gives you @command{is.Panic} and @command{is.PanicWith} helpers
+- because testing panics is ugly.
+@end itemize\n")
+      (license license:expat))))
+
+(define-public go-github-com-sabhiram-go-gitignore
+  (let ((commit "d3107576ba9425fc1c85f4b3569c4631b805a02e")
+        (revision "0"))
+    (package
+      (name "go-github-com-sabhiram-go-gitignore")
+      (version (git-version "1.0.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/sabhiram/go-gitignore.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1rdwyxgcsiwgmlqnc3k6h300mzlvjc3j21np4yh1h476wc8dvl0l"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path
+         "github.com/sabhiram/go-gitignore"))
+      (native-inputs
+       `(("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify)))
+      (home-page "https://github.com/sabhiram/go-gitignore")
+      (synopsis "Gitignore parser for Go")
+      (description "A @command{.gitignore} parser for Go.")
+      (license license:expat))))
+
+(define-public go-github-com-urfave-cli
+  (let ((commit "934abfb2f102315b5794e15ebc7949e4ca253920")
+        (revision "0"))
+    (package
+      (name "go-github-com-urfave-cli")
+      (version (git-version "1.19.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/urfave/cli.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0c5r8pgj3k48dfcwj8lw3cxkwkl8vh0fhvz5snfdwd0bcxdqx1yq"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/urfave/cli"))
+      (home-page "https://github.com/urfave/cli")
+      (synopsis "Simple, fast, and fun package for building command line apps in Go")
+      (description "@command{cli} is a simple, fast, and fun package for
+building command line apps in Go.  The goal is to enable developers to write
+fast and distributable command line applications in an expressive way.")
+      (license license:expat))))
+
+(define-public go-github-com-whyrusleeping-json-filter
+  (let ((commit "ff25329a9528f01c5175414f16cc0a6a162a5b8b")
+        (revision "0"))
+    (package
+      (name "go-github-com-whyrusleeping-json-filter")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/whyrusleeping/json-filter.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0cai0drvx4c8j686l908vpcsz3mw3vxi3ziz94b0f3c5ylpj07j7"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path
+         "github.com/whyrusleeping/json-filter"))
+      (home-page "https://github.com/whyrusleeping/json-filter")
+      (synopsis "Library to query JSON objects marshalled into map[string]interface")
+      (description "A library to query JSON objects marshalled into
+@command{map[string]interface{}}.")
+      (license license:expat))))
+
+(define-public go-github-com-whyrusleeping-progmeter
+  (let ((commit "f3e57218a75b913eff88d49a52c1debf9684ea04")
+        (revision "0"))
+    (package
+      (name "go-github-com-whyrusleeping-progmeter")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/whyrusleeping/progmeter.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0xs8rz6yhpvj9512c5v3b8dwr2kivywnyyfxzdfbr6fy1xc8zskb"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path
+         "github.com/whyrusleeping/progmeter"))
+      (home-page "https://github.com/whyrusleeping/progmeter")
+      (synopsis "Progress meter for Go")
+      (description "Progress meter for Go.")
+      (license license:expat))))
+
+(define-public go-github-com-whyrusleeping-stump
+  (let ((commit "206f8f13aae1697a6fc1f4a55799faf955971fc5")
+        (revision "0"))
+    (package
+      (name "go-github-com-whyrusleeping-stump")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/whyrusleeping/stump.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1s40qdppjnk8gijk7x6kbviiqz62nz3h6gic2q9cwcmq8r5isw7n"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/whyrusleeping/stump"))
+      (home-page "https://github.com/whyrusleeping/stump")
+      (synopsis "Very basic logging package for Go")
+      (description "A simple log library, for when you don't really care to
+have super fancy logs.")
+      (license license:expat))))
+
+(define-public go-github-com-kr-fs
+  (let ((commit "1455def202f6e05b95cc7bfc7e8ae67ae5141eba")
+        (revision "0"))
+    (package
+      (name "go-github-com-kr-fs")
+      (version (git-version "0.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/kr/fs.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "11zg176x9hr9q7fsk95r6q0wf214gg4czy02slax4x56n79g6a7q"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/kr/fs"))
+      (home-page "https://github.com/kr/fs")
+      (synopsis "Filesystem-related functions for Go")
+      (description "Package fs provides filesystem-related functions.")
+      (license license:bsd-3))))