projects/guix·blob ruby-team · refs

2528 lines · 97.3 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2018 Pierre Neidhardt <[email protected]>
3;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <[email protected]>
4;;; Copyright © 2019, 2020 Martin Becze <[email protected]>
5;;; Copyright © 2020, 2021, 2022 Michael Rohleder <[email protected]>
6;;; Copyright © 2022 Maxime Devos <[email protected]>
7;;; Copyright © 2023, 2024, 2025 Artyom V. Poptsov <[email protected]>
8;;; Copyright © 2024-2025 Sharlatan Hellseher <[email protected]>
9;;; Copyright © 2024 Giacomo Leidi <[email protected]>
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26(define-module (gnu packages ipfs)
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (guix packages)
29 #:use-module (guix gexp)
30 #:use-module (guix git-download)
31 #:use-module (guix download)
32 #:use-module (guix build-system go)
33 #:use-module (guix utils)
34 #:use-module (gnu packages databases)
35 #:use-module (gnu packages gcc)
36 #:use-module (gnu packages golang)
37 #:use-module (gnu packages golang-build)
38 #:use-module (gnu packages golang-check)
39 #:use-module (gnu packages golang-compression)
40 #:use-module (gnu packages golang-crypto)
41 #:use-module (gnu packages golang-maths)
42 #:use-module (gnu packages golang-web)
43 #:use-module (gnu packages golang-xyz)
44 #:use-module (gnu packages prometheus)
45 #:use-module (gnu packages python)
46 #:use-module (gnu packages shells)
47 #:use-module (gnu packages specifications))
48
49(define-public go-github-com-ceramicnetwork-go-dag-jose
50 (package
51 (name "go-github-com-ceramicnetwork-go-dag-jose")
52 (version "0.1.1")
53 (source
54 (origin
55 (method git-fetch)
56 (uri (git-reference
57 (url "https://github.com/ceramicnetwork/go-dag-jose")
58 (commit (string-append "v" version))))
59 (file-name (git-file-name name version))
60 (sha256
61 (base32 "0g34dwlnq07zg176bdhp2hcg1hg5l55s0a6hk4kiq37vm01w68j7"))
62 (snippet
63 #~(begin (use-modules (guix build utils))
64 ;; Delete git submodule.
65 (delete-file-recursively ".ipld")))))
66 (build-system go-build-system)
67 (arguments
68 (list
69 #:import-path "github.com/ceramicnetwork/go-dag-jose"
70 #:phases
71 #~(modify-phases %standard-phases
72 ;; XXX: Workaround for go-build-system's lack of Go modules
73 ;; support.
74 (delete 'build)
75 (replace 'check
76 (lambda* (#:key tests? import-path #:allow-other-keys)
77 (when tests?
78 (with-directory-excursion (string-append "src/" import-path)
79 (invoke "go" "test" "-v" "./..."))))))))
80 (native-inputs
81 (list go-github-com-stretchr-testify
82 go-github-com-frankban-quicktest
83 go-github-com-warpfork-go-testmark))
84 (propagated-inputs
85 (list go-github-com-go-jose-go-jose-v4
86 go-github-com-ipfs-go-cid
87 go-github-com-ipld-go-ipld-prime
88 go-github-com-multiformats-go-multibase
89 go-github-com-multiformats-go-multihash
90 go-golang-org-x-crypto
91 go-pgregory-net-rapid))
92 (home-page "https://github.com/ceramicnetwork/go-dag-jose")
93 (synopsis "Implementation of the IPLD dag-jose codec")
94 (description
95 "This is an implementation of the IPLD
96@@url{https://ipld.io/specs/codecs/dag-jose/spec/,dag-jose codec}.")
97 (license license:expat)))
98
99(define-public go-github-com-ipfs-bbloom
100 (package
101 (name "go-github-com-ipfs-bbloom")
102 (version "0.1.0")
103 (source
104 (origin
105 (method git-fetch)
106 (uri (git-reference
107 (url "https://github.com/ipfs/bbloom")
108 (commit (string-append "v" version))))
109 (file-name (git-file-name name version))
110 (sha256
111 (base32 "0k3bwhp0vc4ivnw32q8gi974xcqwjw2471lz4qkypxi7ld8clgmj"))))
112 (build-system go-build-system)
113 (arguments
114 (list
115 #:import-path "github.com/ipfs/bbloom"))
116 (home-page "https://github.com/ipfs/bbloom")
117 (synopsis "Fast bit set Bloom filter")
118 (description
119 "This package implements a fast bloom filter with real @code{bitset} and
120JSONMarshal/JSONUnmarshal to store/reload the Bloom filter. It's an
121alternative fork of @url{https://github.com/gxed/bbloom}.")
122 (license (list license:expat ; bbloom.go
123 license:public-domain)))) ; siphash.go
124
125(define-public go-github-com-ipfs-boxo
126 (package
127 (name "go-github-com-ipfs-boxo")
128 (version "0.41.0")
129 (source
130 (origin
131 (method git-fetch)
132 (uri (git-reference
133 (url "https://github.com/ipfs/boxo")
134 (commit (string-append "v" version))))
135 (file-name (git-file-name name version))
136 (sha256
137 (base32 "1py1p8ijxj16k2l8szrrjw7raf63m44wdrwlaa63rfc7c9fd5nni"))
138 (modules '((guix build utils)))
139 (snippet
140 #~(begin
141 ;; Submodules with their own go.mod files and packaged separately:
142 (delete-file-recursively "examples")))))
143 (build-system go-build-system)
144 (arguments
145 (list
146 #:skip-build? #t
147 #:embed-files #~(list "sorted-network-list.bin")
148 #:import-path "github.com/ipfs/boxo"
149 #:test-flags
150 #~(list "-skip" (string-join
151 ;; Network access is required.
152 (list "TestAddNewDNSResolver"
153 "TestOverrideDNSDefaults"
154 ;; failed to fetch from remote (failed to fetch
155 ;; config: Get
156 ;; "https://conf.ipfs-mainnet.org/autoconf.json"
157 "TestRealAutoConfURL")
158 "|"))
159 #:phases
160 #~(modify-phases %standard-phases
161 (add-before 'check 'pre-check
162 (lambda* (#:key tests? import-path #:allow-other-keys)
163 ;; See: <https://go.dev/blog/synctest>.
164 (setenv "GODEBUG" "asynctimerchan=0"))))))
165 (native-inputs
166 (list go-github-com-libp2p-go-libp2p-kad-dht-bootstrap
167 go-github-com-libp2p-go-libp2p
168 go-github-com-stretchr-testify))
169 (propagated-inputs
170 (list go-github-com-alecthomas-units
171 go-github-com-cespare-xxhash-v2
172 go-github-com-crackcomm-go-gitignore
173 go-github-com-cskr-pubsub
174 go-github-com-dustin-go-humanize
175 go-github-com-gabriel-vasile-mimetype
176 go-github-com-gammazero-chanqueue
177 go-github-com-gammazero-deque
178 go-github-com-google-uuid
179 go-github-com-gorilla-mux
180 go-github-com-hashicorp-golang-lru-v2
181 go-github-com-ipfs-bbloom
182 go-github-com-ipfs-go-bitfield
183 go-github-com-ipfs-go-block-format
184 go-github-com-ipfs-go-cid
185 go-github-com-ipfs-go-cidutil
186 go-github-com-ipfs-go-datastore
187 go-github-com-ipfs-go-detect-race
188 go-github-com-ipfs-go-dsqueue
189 go-github-com-ipfs-go-ipfs-delay
190 go-github-com-ipfs-go-ipfs-redirects-file
191 go-github-com-ipfs-go-ipld-format
192 go-github-com-ipfs-go-ipld-legacy
193 go-github-com-ipfs-go-log-v2
194 go-github-com-ipfs-go-metrics-interface
195 go-github-com-ipfs-go-peertaskqueue
196 go-github-com-ipfs-go-test
197 go-github-com-ipfs-go-unixfsnode
198 go-github-com-ipld-go-car-v2
199 go-github-com-ipld-go-codec-dagpb
200 go-github-com-ipld-go-ipld-prime
201 go-github-com-libp2p-go-buffer-pool
202 go-github-com-libp2p-go-doh-resolver
203 go-github-com-libp2p-go-libp2p-record
204 go-github-com-libp2p-go-libp2p-routing-helpers
205 go-github-com-libp2p-go-libp2p-testing
206 go-github-com-libp2p-go-msgio
207 go-github-com-miekg-dns
208 go-github-com-mr-tron-base58
209 go-github-com-multiformats-go-base32
210 go-github-com-multiformats-go-multiaddr
211 go-github-com-multiformats-go-multiaddr-dns
212 go-github-com-multiformats-go-multibase
213 go-github-com-multiformats-go-multicodec
214 go-github-com-multiformats-go-multihash
215 go-github-com-multiformats-go-multistream
216 go-github-com-polydawn-refmt
217 go-github-com-prometheus-client-golang
218 go-github-com-prometheus-client-model
219 go-github-com-slok-go-http-metrics
220 go-github-com-spaolacci-murmur3
221 go-github-com-whyrusleeping-base32
222 go-github-com-whyrusleeping-chunker
223 go-go-opencensus-io
224 go-go-opentelemetry-io-contrib-instrumentation-net-http-otelhttp
225 go-go-opentelemetry-io-otel
226 go-go-opentelemetry-io-otel-exporters-otlp-otlptrace-otlptracegrpc
227 go-go-opentelemetry-io-otel-exporters-otlp-otlptrace-otlptracehttp
228 go-go-opentelemetry-io-otel-exporters-stdout-stdouttrace
229 go-go-opentelemetry-io-otel-sdk
230 go-go-opentelemetry-io-otel-trace
231 go-go-uber-org-zap
232 go-golang-org-x-exp
233 go-golang-org-x-oauth2
234 go-golang-org-x-sync
235 go-golang-org-x-sys
236 go-google-golang-org-protobuf))
237 (home-page "https://github.com/ipfs/boxo")
238 (synopsis "Collection of reference libraries for building IPFS applications")
239 (description
240 "This package provides a set of libraries for building IPFS applications
241and implementations in Golang.
242
243Included subpackaged:
244@itemize
245@item @code{bitswap} - implementation of the bitswap protocol, the data
246trading module for ipfs
247
248@item @code{blockservice} - implements a BlockService interface that
249provides a single GetBlock/AddBlock interface that seamlessly retrieves data
250either locally or from a remote peer through the exchange
251
252@item @code{blockstore} - implements a thin wrapper over a datastore,
253giving a clean interface for Getting and Putting block objects
254
255@item @code{datastore/dshelp} - provides utilities for parsing and creating
256datastore keys used by go-ipfs
257
258@item @code{exchange} - defines the IPFS exchange interface
259
260@item @code{files} - file interfaces and utils used in Golang implementations
261of IPFS
262
263@item @code{filestore} - implements a Blockstore which is able to read certain
264blocks of data directly from its original location in the filesystem
265
266@item @code{ipld/unixfs} - provides additinoal @code{importer}, @code{io},
267@code{mod}, @code{hamt}, @code{archive} and @code{test} packages
268
269@item @code{ipld/merkledag} - implements the IPFS Merkle DAG data structures
270
271@item @code{ipns} - reference implementation of the IPNS Record and
272Verification specification
273
274@item @code{mfs} - implements an in memory model of a mutable IPFS filesystem
275
276@item @code{path} - contains utilities to work with IPFS paths
277@end itemize")
278 (license (list license:expat license:asl2.0))))
279
280(define-public go-github-com-ipfs-go-bitfield
281 (package
282 (name "go-github-com-ipfs-go-bitfield")
283 (version "1.1.0")
284 (source
285 (origin
286 (method git-fetch)
287 (uri (git-reference
288 (url "https://github.com/ipfs/go-bitfield")
289 (commit (string-append "v" version))))
290 (file-name (git-file-name name version))
291 (sha256
292 (base32 "1zhgwdg2kizhk0hb9q5p0pwrwldd2pacz8l1pnapxh6qm3fqs663"))))
293 (build-system go-build-system)
294 (arguments
295 (list
296 #:import-path "github.com/ipfs/go-bitfield"))
297 (home-page "https://github.com/ipfs/go-bitfield")
298 (synopsis "Allocated up-front Bitfield for Golang")
299 (description
300 "This package implements bitfields to the standard library's @code{big.Int}
301with some optimizations for use in IPFS.")
302 (license (list license:expat license:asl2.0))))
303
304(define-public go-github-com-ipfs-go-block-format
305 (package
306 (name "go-github-com-ipfs-go-block-format")
307 (version "0.2.0")
308 (source
309 (origin
310 (method git-fetch)
311 (uri (git-reference
312 (url "https://github.com/ipfs/go-block-format")
313 (commit (string-append "v" version))))
314 (file-name (git-file-name name version))
315 (sha256
316 (base32 "0pd8ww06ss922g3w2fgi3w0q66y2mkb9b2q9x5qxabrjj65xranz"))))
317 (build-system go-build-system)
318 (arguments
319 (list
320 #:import-path "github.com/ipfs/go-block-format"))
321 (propagated-inputs
322 (list go-github-com-multiformats-go-multihash
323 go-github-com-multiformats-go-varint
324 go-github-com-ipfs-go-cid
325 go-github-com-ipfs-go-ipfs-util))
326 (home-page "https://github.com/ipfs/go-block-format")
327 (synopsis "Set of interfaces for CID addressable blocks of data")
328 (description
329 "Package @code{blocks} contains the lowest level of @acronym{IPLD,
330InterPlanetary Linked Data} data structures. A block is raw data accompanied
331by a @acronym{Content Identifiers,CID}. The CID contains the multihash
332corresponding to the block.")
333 (license license:expat)))
334
335(define-public go-github-com-ipfs-go-cidutil
336 (package
337 (name "go-github-com-ipfs-go-cidutil")
338 (version "0.1.0")
339 (source
340 (origin
341 (method git-fetch)
342 (uri (git-reference
343 (url "https://github.com/ipfs/go-cidutil")
344 (commit (string-append "v" version))))
345 (file-name (git-file-name name version))
346 (sha256
347 (base32 "0j18wf42rfxrrh2fjdbjsjvjqxwgvg46b9wl6y5ig22fx5hvpm1n"))))
348 (build-system go-build-system)
349 (arguments
350 (list
351 #:import-path "github.com/ipfs/go-cidutil"))
352 (propagated-inputs
353 (list go-github-com-ipfs-go-cid
354 go-github-com-multiformats-go-multibase
355 go-github-com-multiformats-go-multicodec
356 go-github-com-multiformats-go-multihash))
357 (home-page "https://github.com/ipfs/go-cidutil")
358 (synopsis "Utility functions and types for working with CIDs")
359 (description
360 "@code{go-cidutil} implements various utilities and helper functions for working
361with @url{https://github.com/ipld/cid, CIDs}.")
362 (license license:expat)))
363
364(define-public go-github-com-ipfs-go-ds-badger4
365 (package
366 (name "go-github-com-ipfs-go-ds-badger4")
367 (version "0.1.8")
368 (source
369 (origin
370 (method git-fetch)
371 (uri (git-reference
372 (url "https://github.com/ipfs/go-ds-badger4")
373 (commit (string-append "v" version))))
374 (file-name (git-file-name name version))
375 (sha256
376 (base32 "1gyzywd74cb8jl0zr8b3fjjmd8rsabwk5rj17nhagigps4971h1a"))))
377 (build-system go-build-system)
378 (arguments
379 (list
380 #:import-path "github.com/ipfs/go-ds-badger4"))
381 (native-inputs
382 (list go-github-com-stretchr-testify
383 go-go-uber-org-zap))
384 (propagated-inputs
385 (list go-github-com-dgraph-io-badger-v4
386 go-github-com-ipfs-go-datastore
387 go-github-com-ipfs-go-detect-race
388 go-github-com-ipfs-go-log-v2))
389 (home-page "https://github.com/ipfs/go-ds-badger4")
390 (synopsis "Datastore implementation using Badger v4 as backend")
391 (description
392 "This package implements a Badger v4 (a key-value database) backed
393datastore for IPFS.")
394 (license (list license:expat license:asl2.0))))
395
396(define-public go-github-com-ipfs-go-ds-dynamodb
397 (package
398 (name "go-github-com-ipfs-go-ds-dynamodb")
399 (version "0.2.0")
400 (source
401 (origin
402 (method git-fetch)
403 (uri (git-reference
404 (url "https://github.com/ipfs/go-ds-dynamodb")
405 (commit (string-append "v" version))))
406 (file-name (git-file-name name version))
407 (sha256
408 (base32 "1z155ajpx52v71hsdjz5950z1w0qmp6c7lsqmsa9qyn7x21g7p0g"))))
409 (build-system go-build-system)
410 (arguments
411 (list
412 #:tests? #f ; tests need Docker or local DynamoDB Java app
413 #:import-path "github.com/ipfs/go-ds-dynamodb"))
414 (propagated-inputs
415 (list go-github-com-aws-aws-sdk-go
416 go-github-com-ipfs-go-datastore
417 go-github-com-ipfs-go-log-v2))
418 (home-page "https://github.com/ipfs/go-ds-dynamodb")
419 (synopsis "DynamoDB datastore implementation")
420 (description
421 "This is an implementation of @url{https://github.com/ipfs/go-datastore,
422go-datastore} that is backed by @code{DynamoDB}.
423
424ddbds includes support for optimized prefix queries. When you setup your
425table's key schema correctly and register it with ddbds, then incoming queries
426that match the schema will be converted into DynamoDB queries instead of table
427scans, enabling high performance, ordered, high-cardinality prefix queries.")
428 (license (list license:expat license:asl2.0))))
429
430(define-public go-github-com-ipfs-go-ds-flatfs
431 (package
432 (name "go-github-com-ipfs-go-ds-flatfs")
433 (version "0.5.5")
434 (source
435 (origin
436 (method git-fetch)
437 (uri (git-reference
438 (url "https://github.com/ipfs/go-ds-flatfs")
439 (commit (string-append "v" version))))
440 (file-name (git-file-name name version))
441 (sha256
442 (base32 "1m5fxxdn2zj9i9nm8fdyll4wcgaknfg3vj07959mj06hwc9r3z3c"))))
443 (build-system go-build-system)
444 (arguments
445 (list
446 #:import-path "github.com/ipfs/go-ds-flatfs"))
447 (propagated-inputs
448 (list go-github-com-ipfs-go-datastore
449 go-github-com-ipfs-go-log
450 go-github-com-jbenet-goprocess))
451 (home-page "https://github.com/ipfs/go-ds-flatfs")
452 (synopsis "Datastore with sharded directories and flat files")
453 (description
454 "Package flatfs is a Datastore implementation that stores all objects in
455a two-level directory structure in the local file system, regardless of the
456hierarchy of the keys.")
457 (license license:expat)))
458
459(define-public go-github-com-ipfs-go-ds-measure
460 (package
461 (name "go-github-com-ipfs-go-ds-measure")
462 (version "0.2.0")
463 (source
464 (origin
465 (method git-fetch)
466 (uri (git-reference
467 (url "https://github.com/ipfs/go-ds-measure")
468 (commit (string-append "v" version))))
469 (file-name (git-file-name name version))
470 (sha256
471 (base32 "14p3681sb1h81qxkwblngvy72yrd73drcvamgc3v7za734l9f54b"))))
472 (build-system go-build-system)
473 (arguments
474 (list
475 #:import-path "github.com/ipfs/go-ds-measure"))
476 (propagated-inputs
477 (list go-github-com-ipfs-go-datastore
478 go-github-com-ipfs-go-metrics-interface))
479 (home-page "https://github.com/ipfs/go-ds-measure")
480 (synopsis "Datastore implementation that keeps metrics on all calls made")
481 (description
482 "Package measure provides a Datastore wrapper that records metrics using
483@url{https://github.com/ipfs/go-metrics-interface}.")
484 (license license:expat)))
485
486(define-public go-github-com-ipfs-go-ds-pebble
487 (package
488 (name "go-github-com-ipfs-go-ds-pebble")
489 (version "0.5.9")
490 (source
491 (origin
492 (method git-fetch)
493 (uri (git-reference
494 (url "https://github.com/ipfs/go-ds-pebble")
495 (commit (string-append "v" version))))
496 (file-name (git-file-name name version))
497 (sha256
498 (base32 "0s1r3d4msxcbfm1ii39882vpka6ncq5bknp3al3gbs6wg3sa70bk"))))
499 (build-system go-build-system)
500 (arguments
501 (list
502 #:import-path "github.com/ipfs/go-ds-pebble"
503 #:build-flags #~(list "-tags" "external_libzstd")
504 #:test-flags #~(list "-tags" "external_libzstd")))
505 (propagated-inputs
506 (list go-github-com-cockroachdb-pebble-v2
507 go-github-com-ipfs-go-datastore
508 go-github-com-ipfs-go-log-v2))
509 (home-page "https://github.com/ipfs/go-ds-pebble")
510 (synopsis "Pebble-backed datastore")
511 (description
512 "This is a simple adapter to plug in
513@url{https://github.com/cockroachdb/pebble, cockroachdb/pebble} as a backend
514anywhere that accepts a @url{https://github.com/ipfs/go-datastore,
515go-datastore}.")
516 (license (list license:asl2.0 license:expat))))
517
518(define-public go-github-com-ipfs-go-dsqueue
519 (package
520 (name "go-github-com-ipfs-go-dsqueue")
521 (version "0.2.0")
522 (source
523 (origin
524 (method git-fetch)
525 (uri (git-reference
526 (url "https://github.com/ipfs/go-dsqueue")
527 (commit (string-append "v" version))))
528 (file-name (git-file-name name version))
529 (sha256
530 (base32 "0bz6b0541i0aisfjj45gw044yi78523ma98cnj1hbrx028480chb"))))
531 (build-system go-build-system)
532 (arguments
533 (list
534 #:import-path "github.com/ipfs/go-dsqueue"
535 #:phases
536 #~(modify-phases %standard-phases
537 (add-before 'check 'pre-check
538 (lambda* (#:key tests? import-path #:allow-other-keys)
539 ;; See: <https://go.dev/blog/synctest>.
540 (setenv "GOEXPERIMENT" "synctest")
541 (setenv "GODEBUG" "asynctimerchan=0"))))))
542 (native-inputs
543 (list go-github-com-ipfs-go-test))
544 (propagated-inputs
545 (list go-github-com-gammazero-deque
546 go-github-com-hashicorp-golang-lru-v2
547 go-github-com-ipfs-go-cid
548 go-github-com-ipfs-go-datastore
549 go-github-com-ipfs-go-ds-leveldb
550 go-github-com-ipfs-go-log-v2))
551 (home-page "https://github.com/ipfs/go-dsqueue")
552 (synopsis "Buffered FIFO interface to datastore")
553 (description
554 "Package dsqueue provides a buffered FIFO interface to the datastore for
555storing and retrieving items. Queued items are persisted across restarts.")
556 ;; SPDX-License-Identifier: Apache-2.0 OR MIT
557 (license (list license:expat license:asl2.0))))
558
559(define-public go-github-com-ipfs-go-fs-lock
560 (package
561 (name "go-github-com-ipfs-go-fs-lock")
562 (version "0.1.1")
563 (source
564 (origin
565 (method git-fetch)
566 (uri (git-reference
567 (url "https://github.com/ipfs/go-fs-lock")
568 (commit (string-append "v" version))))
569 (file-name (git-file-name name version))
570 (sha256
571 (base32 "14m5038067px6vvqyvx6449f0f62nj8d0p5hkf9rj8ykfahs80ff"))))
572 (build-system go-build-system)
573 (arguments
574 (list
575 #:import-path "github.com/ipfs/go-fs-lock"))
576 (propagated-inputs
577 (list go-github-com-ipfs-go-ipfs-util
578 go-github-com-ipfs-go-log-v2
579 go-go4-org
580 go-golang-org-x-sys))
581 (home-page "https://github.com/ipfs/go-fs-lock")
582 (synopsis "Filesystem based locking")
583 (description
584 "This package implements a filesystem based locking.")
585 (license license:expat)))
586
587(define-public go-github-com-ipfs-go-ipfs-blocksutil
588 (package
589 (name "go-github-com-ipfs-go-ipfs-blocksutil")
590 (version "0.0.2")
591 (source
592 (origin
593 (method git-fetch)
594 (uri (git-reference
595 (url "https://github.com/ipfs/go-ipfs-blocksutil")
596 (commit (string-append "v" version))))
597 (file-name (git-file-name name version))
598 (sha256
599 (base32 "0g6b4b2b5wp5r0dh20qdfdm76qnh421y8lgz4381r02q2flh57dv"))))
600 (build-system go-build-system)
601 (arguments
602 (list
603 #:import-path "github.com/ipfs/go-ipfs-blocksutil"))
604 (propagated-inputs
605 (list go-github-com-ipfs-go-block-format))
606 (home-page "https://github.com/ipfs/go-ipfs-blocksutil")
607 (synopsis "Utility functions for working with IPFS blocks")
608 (description
609 "This package provides an utility functions for working with
610@url{https://github.com/ipfs/go-block-format, IPFS blocks}.")
611 (license license:expat)))
612
613(define-public go-github-com-ipfs-go-ipfs-cmds
614 (package
615 (name "go-github-com-ipfs-go-ipfs-cmds")
616 (version "0.16.1")
617 (source
618 (origin
619 (method git-fetch)
620 (uri (git-reference
621 (url "https://github.com/ipfs/go-ipfs-cmds")
622 (commit (string-append "v" version))))
623 (file-name (git-file-name name version))
624 (sha256
625 (base32 "01cnpzbacdcbzi6lbppyn6vczrjvayh6s0fqm0mcaym1xi61y8jh"))))
626 (build-system go-build-system)
627 (arguments
628 (list
629 #:import-path "github.com/ipfs/go-ipfs-cmds"
630 #:phases
631 #~(modify-phases %standard-phases
632 (add-after 'unpack 'remove-examples
633 (lambda* (#:key import-path #:allow-other-keys)
634 (with-directory-excursion (string-append "src/" import-path)
635 (delete-file-recursively "examples")))))))
636 (propagated-inputs
637 (list go-github-com-ipfs-boxo
638 go-github-com-ipfs-go-log-v2
639 go-github-com-rs-cors
640 go-github-com-texttheater-golang-levenshtein
641 go-golang-org-x-term))
642 (home-page "https://github.com/ipfs/go-ipfs-cmds")
643 (synopsis "IPFS commands package")
644 (description
645 "Package cmds helps building both standalone and client-server
646applications.")
647 (license license:expat)))
648
649(define-public go-github-com-ipfs-go-ipfs-delay
650 (package
651 (name "go-github-com-ipfs-go-ipfs-delay")
652 (version "0.0.1")
653 (source
654 (origin
655 (method git-fetch)
656 (uri (git-reference
657 (url "https://github.com/ipfs/go-ipfs-delay")
658 (commit (string-append "v" version))))
659 (file-name (git-file-name name version))
660 (sha256
661 (base32 "0a5acj622sk1hibnh893mya4h86nsy1dan0wlh9q444c04iqpviw"))))
662 (build-system go-build-system)
663 (arguments
664 (list
665 #:import-path "github.com/ipfs/go-ipfs-delay"))
666 (home-page "https://github.com/ipfs/go-ipfs-delay")
667 (synopsis "Configurable delays to other objects")
668 (description
669 "This package implements a threadsafe configurable delays to other
670objects.")
671 (license license:expat)))
672
673(define-public go-github-com-ipfs-go-ipfs-ds-help
674 (package
675 (name "go-github-com-ipfs-go-ipfs-ds-help")
676 (version "1.1.1")
677 (source
678 (origin
679 (method git-fetch)
680 (uri (git-reference
681 (url "https://github.com/ipfs/go-ipfs-ds-help")
682 (commit (string-append "v" version))))
683 (file-name (git-file-name name version))
684 (sha256
685 (base32 "1xmn9pdyrcim9ahqs9pkh0c9ac71gilb3pb48kcagq8zxf22i4bj"))))
686 (build-system go-build-system)
687 (arguments
688 (list
689 #:import-path "github.com/ipfs/go-ipfs-ds-help"))
690 (propagated-inputs
691 (list go-github-com-ipfs-go-cid
692 go-github-com-ipfs-go-datastore
693 go-github-com-multiformats-go-base32
694 go-github-com-multiformats-go-multihash))
695 (home-page "https://github.com/ipfs/go-ipfs-ds-help")
696 (synopsis "Utilities for parsing and creating datastore keys")
697 (description
698 "@code{go-ipfs-ds-help} provides utilities for parsing and creating datastore
699keys used by @code{go-ipfs} (Kubo).")
700 (license license:expat)))
701
702(define-public go-github-com-ipfs-go-datastore
703 (package
704 (name "go-github-com-ipfs-go-datastore")
705 (version "0.9.1")
706 (source
707 (origin
708 (method git-fetch)
709 (uri (git-reference
710 (url "https://github.com/ipfs/go-datastore")
711 (commit (string-append "v" version))))
712 (modules '((guix build utils)))
713 (snippet
714 #~(begin
715 ;; Submodules with their own go.mod files and packaged separately:
716 ;;
717 ;; - github.com/ipfs/go-datastore/fuzz
718 (delete-file-recursively "fuzz")))
719 (file-name (git-file-name name version))
720 (sha256
721 (base32 "0di34lwvp4smzm6xwg26bz8f4hsyqhbq5n4cs8ppf2k8vaazb1ip"))))
722 (build-system go-build-system)
723 (arguments
724 (list
725 #:import-path "github.com/ipfs/go-datastore"
726 #:phases
727 #~(modify-phases %standard-phases
728 (add-after 'unpack 'remove-examples
729 (lambda* (#:key tests? import-path #:allow-other-keys)
730 (with-directory-excursion (string-append "src/" import-path)
731 (for-each delete-file-recursively
732 (list "examples"))))))))
733 (native-inputs
734 (list go-github-com-stretchr-testify))
735 (propagated-inputs
736 (list go-github-com-google-uuid
737 go-github-com-ipfs-go-detect-race
738 go-github-com-ipfs-go-ipfs-delay
739 go-go-opentelemetry-io-otel
740 go-go-opentelemetry-io-otel-trace))
741 (home-page "https://github.com/ipfs/go-datastore")
742 (synopsis "Key-value datastore interfaces")
743 (description
744 "Datastore is a generic layer of abstraction for data store and database access.
745It is a simple API with the aim to enable application development in a
746datastore-agnostic way, allowing datastores to be swapped seamlessly without
747changing application code. Thus, one can leverage different datastores with
748different strengths without committing the application to one datastore
749throughout its lifetime.")
750 (license license:expat)))
751
752(define-public go-github-com-ipfs-go-ds-badger
753 (package
754 (name "go-github-com-ipfs-go-ds-badger")
755 (version "0.3.4")
756 (source
757 (origin
758 (method git-fetch)
759 (uri (git-reference
760 (url "https://github.com/ipfs/go-ds-badger")
761 (commit (string-append "v" version))))
762 (file-name (git-file-name name version))
763 (sha256
764 (base32 "0ywq8cs6yf5vqfbw6rd5pw79sqljd87qi0ykv4gg736s7g7mkjr6"))))
765 (build-system go-build-system)
766 (arguments
767 (list
768 ;; XXX: Tests time out, figure out workaround.
769 #:tests? #f
770 #:import-path "github.com/ipfs/go-ds-badger"))
771 (propagated-inputs
772 (list go-github-com-dgraph-io-badger
773 go-github-com-ipfs-go-datastore
774 go-github-com-ipfs-go-log-v2
775 go-github-com-jbenet-goprocess))
776 (home-page "https://github.com/ipfs/go-ds-badger")
777 (synopsis "Datastore implementation using badger as backend")
778 (description
779 "This package provides a @acronym{DS, Data Store} implementation backed
780by @url{https://dgraph.io/docs/badger,Badger}.")
781 (license license:expat)))
782
783(define-public go-github-com-ipfs-go-ds-leveldb
784 (package
785 (name "go-github-com-ipfs-go-ds-leveldb")
786 (version "0.5.0")
787 (source
788 (origin
789 (method git-fetch)
790 (uri (git-reference
791 (url "https://github.com/ipfs/go-ds-leveldb")
792 (commit (string-append "v" version))))
793 (file-name (git-file-name name version))
794 (sha256
795 (base32 "1hi7vmjpzzh00zcf0638rvgiqj4j8difz5kzr0pilr0z6zcb7dq3"))))
796 (build-system go-build-system)
797 (arguments
798 (list
799 #:import-path "github.com/ipfs/go-ds-leveldb"))
800 (propagated-inputs
801 (list go-github-com-ipfs-go-datastore go-github-com-syndtr-goleveldb))
802 (home-page "https://github.com/ipfs/go-ds-leveldb")
803 (synopsis "Implementation of go-datastore using leveldb")
804 (description
805 "This package implements the
806@url{https://github.com/ipfs/go-datastore,go-datastore} interface using a
807LevelDB backend.")
808 (license license:expat)))
809
810(define-public go-github-com-ipfs-go-detect-race
811 (package
812 (name "go-github-com-ipfs-go-detect-race")
813 (version "0.0.1")
814 (source
815 (origin
816 (method git-fetch)
817 (uri (git-reference
818 (url "https://github.com/ipfs/go-detect-race")
819 (commit (string-append "v" version))))
820 (file-name (git-file-name name version))
821 (sha256
822 (base32 "0rqb0q66d7z852j5mhlr025dz698c44w014g4mx587amr1rvwqna"))))
823 (build-system go-build-system)
824 (arguments
825 (list
826 #:import-path "github.com/ipfs/go-detect-race"))
827 (home-page "https://github.com/ipfs/go-detect-race")
828 (synopsis "Detect if compiled with race")
829 (description "Check if the race detector is running.")
830 (license license:expat)))
831
832(define-public go-github-com-ipfs-go-ipfs-exchange-interface
833 (package
834 (name "go-github-com-ipfs-go-ipfs-exchange-interface")
835 (version "0.2.1")
836 (source
837 (origin
838 (method git-fetch)
839 (uri (git-reference
840 (url "https://github.com/ipfs/go-ipfs-exchange-interface")
841 (commit (string-append "v" version))))
842 (file-name (git-file-name name version))
843 (sha256
844 (base32 "0h5jizhjq4yz9sikqc6yhv5gsb8fgv67v0qjzagyhfznfx8kwv1d"))))
845 (build-system go-build-system)
846 (arguments
847 (list
848 #:import-path "github.com/ipfs/go-ipfs-exchange-interface"))
849 (propagated-inputs
850 (list go-github-com-ipfs-go-block-format
851 go-github-com-ipfs-go-cid))
852 (home-page "https://github.com/ipfs/go-ipfs-exchange-interface")
853 (synopsis "The IPFS Exchange interface")
854 (description
855 "@code{go-ipfs-exchange-interface} defines the IPFS exchange interface.")
856 (license license:expat)))
857
858(define-public go-github-com-ipfs-go-ipfs-pq
859 (package
860 (name "go-github-com-ipfs-go-ipfs-pq")
861 (version "0.0.3")
862 (source
863 (origin
864 (method git-fetch)
865 (uri (git-reference
866 (url "https://github.com/ipfs/go-ipfs-pq")
867 (commit (string-append "v" version))))
868 (file-name (git-file-name name version))
869 (sha256
870 (base32 "0zi177lysf6f2zap9l0yxcw4r2xvjiji1yb1jzdmiif2ahvi0v84"))))
871 (build-system go-build-system)
872 (arguments
873 (list
874 #:import-path "github.com/ipfs/go-ipfs-pq"
875 ;; By using Go version higher than 1.21 one test keep failing with
876 ;; error: the values were not returned in sorted order.
877 #:test-flags #~(list "-skip" "TestCorrectnessOfPop")))
878 (home-page "https://github.com/ipfs/go-ipfs-pq")
879 (synopsis "Priority queue used by go-ipfs")
880 (description "Package pq implements a priority queue.")
881 (license license:expat)))
882
883(define-public go-github-com-ipfs-go-ipfs-redirects-file
884 (package
885 (name "go-github-com-ipfs-go-ipfs-redirects-file")
886 (version "0.1.1")
887 (source
888 (origin
889 (method git-fetch)
890 (uri (git-reference
891 (url "https://github.com/ipfs/go-ipfs-redirects-file")
892 (commit (string-append "v" version))))
893 (file-name (git-file-name name version))
894 (sha256
895 (base32 "16lisd5jbniang85jzfwfigw0kmz73913fsrfj49nh92mpw50qpz"))))
896 (build-system go-build-system)
897 (arguments
898 (list
899 #:import-path "github.com/ipfs/go-ipfs-redirects-file"))
900 (native-inputs
901 (list go-github-com-tj-assert))
902 (propagated-inputs
903 (list go-github-com-pkg-errors
904 go-github-com-ucarion-urlpath))
905 (home-page "https://github.com/ipfs/go-ipfs-redirects-file")
906 (synopsis "IPFS Web Gateway _redirects file format parser")
907 (description
908 "Package redirects provides Netlify style _redirects file format
909parsing.")
910 (license license:expat)))
911
912(define-public go-github-com-ipfs-go-ipfs-routing
913 (package
914 (name "go-github-com-ipfs-go-ipfs-routing")
915 (version "0.3.1")
916 (source
917 (origin
918 (method git-fetch)
919 (uri (git-reference
920 (url "https://github.com/ipfs/go-ipfs-routing")
921 (commit (string-append "v" version))))
922 (file-name (git-file-name name version))
923 (sha256
924 (base32 "0j5pyp35z0jnqzz7iiknqx3234swqrpqz478ng8al3b6gqaza9ks"))))
925 (build-system go-build-system)
926 (arguments
927 (list
928 #:skip-build? #t
929 #:import-path "github.com/ipfs/go-ipfs-routing"
930 ;; One test fails with error: panic: protobuf tag not enough fields in
931 ;; Record.state.
932 #:test-flags #~(list "-skip" "TestOfflineRouterStorage")))
933 (native-inputs
934 (list go-github-com-libp2p-go-libp2p-testing))
935 (propagated-inputs
936 (list go-github-com-gogo-protobuf
937 go-github-com-ipfs-go-cid
938 go-github-com-ipfs-go-datastore
939 go-github-com-ipfs-go-ipfs-delay
940 go-github-com-ipfs-go-ipfs-ds-help
941 go-github-com-ipfs-go-ipfs-util
942 go-github-com-ipfs-go-log
943 go-github-com-libp2p-go-libp2p
944 go-github-com-libp2p-go-libp2p-record
945 go-github-com-multiformats-go-multiaddr
946 go-github-com-multiformats-go-multihash))
947 (home-page "https://github.com/ipfs/go-ipfs-routing")
948 (synopsis "P2P routing implementations used in IPFS")
949 (description
950 "This package provides P2P routing implementations for IPFS
951development.")
952 (license license:expat)))
953
954(define-public go-github-com-ipfs-go-ipfs-util
955 (package
956 (name "go-github-com-ipfs-go-ipfs-util")
957 (version "0.0.3")
958 (source
959 (origin
960 (method git-fetch)
961 (uri (git-reference
962 (url "https://github.com/ipfs/go-ipfs-util")
963 (commit (string-append "v" version))))
964 (file-name (git-file-name name version))
965 (sha256
966 (base32 "0x80c6a50zcv473xx0b39sz2xkwpiw3nmmjf51k5x7a4rx0rgvx4"))))
967 (build-system go-build-system)
968 (propagated-inputs (list go-github-com-mr-tron-base58
969 go-github-com-multiformats-go-multihash))
970 (arguments
971 (list
972 #:import-path "github.com/ipfs/go-ipfs-util"))
973 (home-page "https://github.com/ipfs/go-ipfs-util")
974 (synopsis "Common utilities used by @code{go-ipfs} and related packages")
975 (description
976 "Common utilities used by @code{go-ipfs} and other related Go packages.")
977 (license license:expat)))
978
979(define-public go-github-com-ipfs-go-ipld-cbor
980 (package
981 (name "go-github-com-ipfs-go-ipld-cbor")
982 (version "0.1.0")
983 (source
984 (origin
985 (method git-fetch)
986 (uri (git-reference
987 (url "https://github.com/ipfs/go-ipld-cbor")
988 (commit (string-append "v" version))))
989 (file-name (git-file-name name version))
990 (sha256
991 (base32 "0yxk4sbf1fk9aaizzpz3h30049wqvaz0s3jnbdd5akhj7wg89h21"))))
992 (build-system go-build-system)
993 (arguments
994 (list
995 #:import-path "github.com/ipfs/go-ipld-cbor"))
996 (propagated-inputs
997 (list go-github-com-ipfs-go-block-format
998 go-github-com-ipfs-go-cid
999 go-github-com-ipfs-go-ipfs-util
1000 go-github-com-ipfs-go-ipld-format
1001 go-github-com-multiformats-go-multihash
1002 go-github-com-polydawn-refmt
1003 go-github-com-whyrusleeping-cbor-gen))
1004 (home-page "https://github.com/ipfs/go-ipld-cbor")
1005 (synopsis "@acronym{Concise Binary Object Representation, CBOR}
1006implementation of @code{go-ipld-format}")
1007 (description
1008 "An implementation of a @url{https://cbor.io/, CBOR} encoded merkledag object.")
1009 (license license:expat)))
1010
1011(define-public go-github-com-ipfs-go-ipld-format
1012 (package
1013 (name "go-github-com-ipfs-go-ipld-format")
1014 (version "0.6.0")
1015 (source
1016 (origin
1017 (method git-fetch)
1018 (uri (git-reference
1019 (url "https://github.com/ipfs/go-ipld-format")
1020 (commit (string-append "v" version))))
1021 (file-name (git-file-name name version))
1022 (sha256
1023 (base32 "0zl172ncmx9h5z2p3d0j1377xm9glw4zfyamks31p0pvvx2kyn7c"))))
1024 (build-system go-build-system)
1025 (arguments
1026 (list
1027 #:import-path "github.com/ipfs/go-ipld-format"))
1028 (propagated-inputs
1029 (list go-github-com-multiformats-go-multihash
1030 go-github-com-ipfs-go-block-format
1031 go-github-com-ipfs-go-cid))
1032 (home-page "https://github.com/ipfs/go-ipld-format")
1033 (synopsis "IPLD Node and Resolver interfaces in Go")
1034 (description
1035 "@code{go-ipld-format} is a set of interfaces that a type needs to implement in
1036order to be a part of the @acronym{IPLD, InterPlanetary Linked Data} merkle-forest.")
1037 (license license:expat)))
1038
1039(define-public go-github-com-ipfs-go-ipld-git
1040 (package
1041 (name "go-github-com-ipfs-go-ipld-git")
1042 (version "0.1.1")
1043 (source
1044 (origin
1045 (method git-fetch)
1046 (uri (git-reference
1047 (url "https://github.com/ipfs/go-ipld-git")
1048 (commit (string-append "v" version))))
1049 (file-name (git-file-name name version))
1050 (sha256
1051 (base32 "1v52qzgmx7qym0qzkzkry2kfj58f9hh7c8qycg74sqbd9zb1ynjj"))))
1052 (build-system go-build-system)
1053 (arguments
1054 (list
1055 ;; XXX: It requires .git/objects, check if it's applicable to generate
1056 ;; git repo during check phase with make-test-repo.sh.
1057 #:tests? #f
1058 #:import-path "github.com/ipfs/go-ipld-git"
1059 #:phases
1060 #~(modify-phases %standard-phases
1061 (add-after 'unpack 'remove-test-data-files
1062 (lambda* (#:key import-path #:allow-other-keys)
1063 (with-directory-excursion (string-append "src/" import-path)
1064 (for-each delete-file
1065 (list "testdata.tar.gz"
1066 "codecov.yml"
1067 "make-test-repo.sh"))))))))
1068 (propagated-inputs
1069 (list go-github-com-multiformats-go-multihash
1070 go-github-com-ipld-go-ipld-prime
1071 go-github-com-ipfs-go-cid
1072 go-github-com-ipfs-go-block-format))
1073 (home-page "https://github.com/ipfs/go-ipld-git")
1074 (synopsis "IPLD handlers for git objects")
1075 (description
1076 "This is an IPLD codec which handles git objects. Objects are transformed into
1077IPLD graph as detailed below. Objects are demonstrated here using both
1078@url{https://ipld.io/docs/schemas/,IPLD Schemas} and example JSON forms.")
1079 (license license:expat)))
1080
1081(define-public go-github-com-ipfs-go-ipld-legacy
1082 (package
1083 (name "go-github-com-ipfs-go-ipld-legacy")
1084 (version "0.2.1")
1085 (source
1086 (origin
1087 (method git-fetch)
1088 (uri (git-reference
1089 (url "https://github.com/ipfs/go-ipld-legacy")
1090 (commit (string-append "v" version))))
1091 (file-name (git-file-name name version))
1092 (sha256
1093 (base32 "0sc2zc3lyxy30fzynwdpfrl8jhh1ynwixn1crrv8hzn93yix6550"))))
1094 (build-system go-build-system)
1095 (arguments
1096 (list
1097 #:import-path "github.com/ipfs/go-ipld-legacy"))
1098 (native-inputs
1099 (list go-github-com-stretchr-testify))
1100 (propagated-inputs
1101 (list go-github-com-ipfs-go-block-format
1102 go-github-com-ipfs-go-cid
1103 go-github-com-ipfs-go-ipld-format
1104 go-github-com-ipld-go-ipld-prime))
1105 (home-page "https://github.com/ipfs/go-ipld-legacy")
1106 (synopsis "Translation layer for IPLD legacy code")
1107 (description
1108 "@code{go-ipld-format} is a translation layer between
1109@code{go-ipld-prime} nodes and @code{go-ipld-format} legacy interface.")
1110 (license (list license:expat license:asl2.0))))
1111
1112(define-public go-github-com-ipfs-go-libdht
1113 (package
1114 (name "go-github-com-ipfs-go-libdht")
1115 (version "0.5.0")
1116 (source
1117 (origin
1118 (method git-fetch)
1119 (uri (git-reference
1120 (url "https://github.com/ipfs/go-libdht")
1121 (commit (string-append "v" version))))
1122 (file-name (git-file-name name version))
1123 (sha256
1124 (base32 "139zzvs9c65k6agfpy412y9bb4pfxdmwvwjbvndx9gd615qhxzak"))))
1125 (build-system go-build-system)
1126 (arguments
1127 (list
1128 #:skip-build? #t
1129 #:import-path "github.com/ipfs/go-libdht"))
1130 (native-inputs
1131 (list go-github-com-stretchr-testify))
1132 (home-page "https://github.com/ipfs/go-libdht")
1133 (synopsis "go-libdht")
1134 (description
1135 "@code{go-libdht} is a generic toolbox designed for the implementation
1136and experimentation of @acronym{Distributed Hash Tables, DHT} in Go. It
1137establishes foundational types and interfaces applicable across a broad
1138spectrum of DHTs, especially those sharing a similar topology. By offering
1139reusable components like keys and routing tables, @code{go-libdht} streamlines
1140the DHT implementation process. Using @code{go-libdht}, developers can
1141seamlessly craft their own DHTs using the provided modular components.")
1142 (license (list license:expat license:asl2.0))))
1143
1144(define-public go-github-com-ipfs-go-metrics-interface
1145 (package
1146 (name "go-github-com-ipfs-go-metrics-interface")
1147 (version "0.3.0")
1148 (source
1149 (origin
1150 (method git-fetch)
1151 (uri (git-reference
1152 (url "https://github.com/ipfs/go-metrics-interface")
1153 (commit (string-append "v" version))))
1154 (file-name (git-file-name name version))
1155 (sha256
1156 (base32 "0d7jh9aclmxq4z5hynn4lc0ab8c8rip92xkc224vjw2y7kg6jyvg"))))
1157 (build-system go-build-system)
1158 (arguments
1159 (list
1160 #:import-path "github.com/ipfs/go-metrics-interface"))
1161 (propagated-inputs
1162 (list go-github-com-ipfs-go-cid
1163 go-github-com-ipfs-go-datastore
1164 go-github-com-multiformats-go-base32
1165 go-github-com-multiformats-go-multihash))
1166 (home-page "https://github.com/ipfs/go-metrics-interface")
1167 ;; XXX: The project neither has no a proper description, nor a README, see
1168 ;; <https://github.com/ipfs/go-metrics-interface/issues/1>.
1169 (synopsis "Metrics interface for IPFS")
1170 (description
1171 "Metrics interface for IPFS (Kubo).")
1172 (license license:expat)))
1173
1174(define-public go-github-com-ipfs-go-metrics-prometheus
1175 (package
1176 (name "go-github-com-ipfs-go-metrics-prometheus")
1177 (version "0.1.0")
1178 (source
1179 (origin
1180 (method git-fetch)
1181 (uri (git-reference
1182 (url "https://github.com/ipfs/go-metrics-prometheus")
1183 (commit (string-append "v" version))))
1184 (file-name (git-file-name name version))
1185 (sha256
1186 (base32 "12bvlg1pnwxyfn8paxf0viky5mv5isdql29mflvjhgs5g48mnc3s"))))
1187 (build-system go-build-system)
1188 (arguments
1189 (list
1190 #:import-path "github.com/ipfs/go-metrics-prometheus"))
1191 (propagated-inputs
1192 (list go-github-com-ipfs-go-log-v2
1193 go-github-com-ipfs-go-metrics-interface
1194 go-github-com-prometheus-client-golang))
1195 (home-page "https://github.com/ipfs/go-metrics-prometheus")
1196 (synopsis "Prometheus bindings for go-metrics-interface")
1197 (description
1198 "This package provides Prometheus bindings used in IPFS development.")
1199 (license license:expat)))
1200
1201(define-public go-github-com-ipfs-go-peertaskqueue
1202 (package
1203 (name "go-github-com-ipfs-go-peertaskqueue")
1204 (version "0.8.2")
1205 (source
1206 (origin
1207 (method git-fetch)
1208 (uri (git-reference
1209 (url "https://github.com/ipfs/go-peertaskqueue")
1210 (commit (string-append "v" version))))
1211 (file-name (git-file-name name version))
1212 (sha256
1213 (base32 "0mz6kj0d23p7hfmcrh8l0khj6gx9f58v2ls5336im6yw4vkzr711"))))
1214 (build-system go-build-system)
1215 (arguments
1216 (list
1217 #:import-path "github.com/ipfs/go-peertaskqueue"))
1218 (propagated-inputs
1219 (list go-github-com-filecoin-project-go-clock
1220 go-github-com-ipfs-go-ipfs-pq
1221 go-github-com-libp2p-go-libp2p))
1222 (home-page "https://github.com/ipfs/go-peertaskqueue")
1223 (synopsis "Prioritized queue of abstract tasks distributed among peers")
1224 (description
1225 "This package implements a prioritized list of tasks to be executed on
1226peers.")
1227 (license (list license:asl2.0 license:expat))))
1228
1229(define-public go-github-com-ipfs-go-test
1230 (package
1231 (name "go-github-com-ipfs-go-test")
1232 (version "0.2.3")
1233 (source
1234 (origin
1235 (method git-fetch)
1236 (uri (git-reference
1237 (url "https://github.com/ipfs/go-test")
1238 (commit (string-append "v" version))))
1239 (file-name (git-file-name name version))
1240 (sha256
1241 (base32 "0f19bz83lnmp9qqmiz09b163sgrx5rganbv2ppxq9nrbk3b88d78"))))
1242 (build-system go-build-system)
1243 (arguments
1244 (list
1245 #:import-path "github.com/ipfs/go-test"))
1246 (native-inputs
1247 (list go-github-com-stretchr-testify))
1248 (propagated-inputs
1249 (list go-github-com-ipfs-go-block-format
1250 go-github-com-ipfs-go-cid
1251 go-github-com-libp2p-go-libp2p
1252 go-github-com-multiformats-go-multiaddr
1253 go-github-com-multiformats-go-multicodec
1254 go-github-com-multiformats-go-multihash))
1255 (home-page "https://github.com/ipfs/go-test")
1256 (synopsis "Testing utilty library for IPFS")
1257 (description
1258 "This package profides a test utility code used across many different
1259IPFS related projects.")
1260 (license (list license:asl2.0 license:expat))))
1261
1262(define-public go-github-com-ipfs-go-unixfsnode
1263 (package
1264 (name "go-github-com-ipfs-go-unixfsnode")
1265 (version "1.10.0")
1266 (source
1267 (origin
1268 (method git-fetch)
1269 (uri (git-reference
1270 (url "https://github.com/ipfs/go-unixfsnode")
1271 (commit (string-append "v" version))))
1272 (file-name (git-file-name name version))
1273 (sha256
1274 (base32 "0rn4x8f9a1ipwz0rg19ylbyh2s3q81vpnlan9yjscnfxx1r6gdbg"))))
1275 (build-system go-build-system)
1276 (arguments
1277 (list
1278 #:import-path "github.com/ipfs/go-unixfsnode"
1279 ;; Full test suites requires Box, which introduce cycle.
1280 #:test-subdirs #~(list ".")))
1281 (native-inputs
1282 (list go-github-com-stretchr-testify))
1283 (propagated-inputs
1284 (list ;; go-github-com-ipfs-boxo ; introduce cycle
1285 go-github-com-ipfs-go-bitfield
1286 go-github-com-ipfs-go-cid
1287 go-github-com-ipfs-go-ipld-format
1288 go-github-com-ipfs-go-test
1289 go-github-com-ipld-go-car-v2
1290 go-github-com-ipld-go-codec-dagpb
1291 go-github-com-ipld-go-ipld-prime
1292 go-github-com-multiformats-go-multicodec
1293 go-github-com-multiformats-go-multihash
1294 go-github-com-spaolacci-murmur3
1295 go-google-golang-org-protobuf))
1296 (home-page "https://github.com/ipfs/go-unixfsnode")
1297 (synopsis "ADL IPLD prime node implementation of protobuf")
1298 (description
1299 "This is an IPLD ADL that provides string based pathing for protobuf
1300nodes. The top level node behaves like a map where @code{LookupByString}
1301returns the Hash property on the Link in the protobufs list of Links whos Name
1302property matches the key. This should enable selector traversals that work
1303based of paths.")
1304 (license (list license:asl2.0 license:expat))))
1305
1306;; XXX: This repository has been archived by the owner on Jun 20, 2023. It is
1307;; now read-only. We highly recommend switching to the maintained version at
1308;; https://github.com/ipfs/boxo/tree/main/verifcid. It's still in use by some
1309;; dependencies chain for unbundled inputs in Kubo.
1310(define-public go-github-com-ipfs-go-verifcid
1311 (package
1312 (name "go-github-com-ipfs-go-verifcid")
1313 (version "0.0.3")
1314 (source
1315 (origin
1316 (method git-fetch)
1317 (uri (git-reference
1318 (url "https://github.com/ipfs/go-verifcid")
1319 (commit (string-append "v" version))))
1320 (file-name (git-file-name name version))
1321 (sha256
1322 (base32 "05i6wp2nln0mlr1pivmva7j6bwa09k7jl04acx1lw65h4d9nxsjm"))))
1323 (build-system go-build-system)
1324 (arguments
1325 (list
1326 #:import-path "github.com/ipfs/go-verifcid"))
1327 (native-inputs
1328 (list go-github-com-stretchr-testify))
1329 (propagated-inputs
1330 (list go-github-com-ipfs-go-cid go-github-com-multiformats-go-multihash))
1331 (home-page "https://github.com/ipfs/go-verifcid")
1332 (synopsis "CID security code")
1333 (description
1334 "@code{go-verifcid} provides @url{https://github.com/ipld/cid, CID} security
1335code prior to it getting merged into @code{go-cid}.")
1336 ;; This library is dual-licensed under Apache 2.0 and MIT terms:
1337 ;; LICENSE-MIT and LICENSE-APACHE.
1338 (license (list license:expat license:asl2.0))))
1339
1340(define-public go-github-com-ipfs-shipyard-nopfs
1341 (package
1342 (name "go-github-com-ipfs-shipyard-nopfs")
1343 (version "0.0.14")
1344 (source
1345 (origin
1346 (method git-fetch)
1347 (uri (git-reference
1348 (url "https://github.com/ipfs-shipyard/nopfs")
1349 (commit (string-append "v" version))))
1350 (file-name (git-file-name name version))
1351 (sha256
1352 (base32 "1qbp7hny0v6n74agh1ym98ndnnr53aq1hd6ybm5q214fah7k23r7"))
1353 (modules '((guix build utils)))
1354 (snippet
1355 #~(begin
1356 ;; Submodules with their own go.mod files and packaged separately:
1357 ;;
1358 ;; - github.com/ipfs-shipyard/nopfs/ipfs
1359 ;; - github.com/ipfs-shipyard/nopfs/nopfs-kubo-plugin
1360 (for-each delete-file-recursively
1361 (list "ipfs" "nopfs-kubo-plugin"))))))
1362 (build-system go-build-system)
1363 (arguments
1364 (list
1365 #:import-path "github.com/ipfs-shipyard/nopfs"))
1366 (propagated-inputs
1367 (list go-github-com-fsnotify-fsnotify
1368 go-github-com-ipfs-boxo
1369 go-github-com-ipfs-go-cid
1370 go-github-com-ipfs-go-log-v2
1371 go-github-com-multiformats-go-multicodec
1372 go-github-com-multiformats-go-multihash
1373 go-go-uber-org-multierr
1374 go-gopkg-in-yaml-v3))
1375 (home-page "https://github.com/ipfs-shipyard/nopfs")
1376 (synopsis "Content-blocking-layer capabilities for IPFS")
1377 (description
1378 "Package nopfs implements content blocking for the IPFS stack.")
1379 (license license:asl2.0)))
1380
1381(define-public go-github-com-ipfs-shipyard-nopfs-ipfs
1382 (package
1383 (name "go-github-com-ipfs-shipyard-nopfs-ipfs")
1384 (version "0.25.0")
1385 (source
1386 (origin
1387 (method git-fetch)
1388 (uri (git-reference
1389 (url "https://github.com/ipfs-shipyard/nopfs")
1390 (commit (go-version->git-ref version
1391 #:subdir "ipfs"))))
1392 (file-name (git-file-name name version))
1393 (sha256
1394 (base32 "00lwizzdfdx6kynxddal3all6q9dhwqanpkw0d0vxlwik4nkvxa5"))
1395 (modules '((guix build utils)
1396 (ice-9 ftw)
1397 (srfi srfi-26)))
1398 (snippet
1399 #~(begin
1400 ;; XXX: 'delete-all-but' is copied from the turbovnc package.
1401 ;; Consider to implement it as re-usable procedure in
1402 ;; guix/build/utils or guix/build-system/go.
1403 (define (delete-all-but directory . preserve)
1404 (with-directory-excursion directory
1405 (let* ((pred (negate (cut member <>
1406 (cons* "." ".." preserve))))
1407 (items (scandir "." pred)))
1408 (for-each (cut delete-file-recursively <>) items))))
1409 (delete-all-but "." "ipfs")))))
1410 (build-system go-build-system)
1411 (arguments
1412 (list
1413 #:embed-files #~(list "sorted-network-list.bin")
1414 #:import-path "github.com/ipfs-shipyard/nopfs/ipfs"
1415 #:unpack-path "github.com/ipfs-shipyard/nopfs"))
1416 (propagated-inputs
1417 (list go-github-com-ipfs-boxo
1418 go-github-com-ipfs-go-block-format
1419 go-github-com-ipfs-go-cid
1420 go-github-com-ipfs-go-log-v2
1421 go-github-com-ipfs-shipyard-nopfs
1422 go-github-com-ipld-go-ipld-prime
1423 go-github-com-libp2p-go-libp2p
1424 go-github-com-libp2p-go-libp2p-kad-dht))
1425 (home-page "https://github.com/ipfs-shipyard/nopfs")
1426 (synopsis "IPFS library helpers and wrappers")
1427 (description
1428 "Package ipfs provides wrapper implementations of key layers in the
1429go-ipfs stack to enable content-blocking.")
1430 (license license:asl2.0)))
1431
1432(define-public go-github-com-ipld-go-car-v2
1433 (package
1434 (name "go-github-com-ipld-go-car-v2")
1435 (version "2.14.2")
1436 (source
1437 (origin
1438 (method git-fetch)
1439 (uri (git-reference
1440 (url "https://github.com/ipld/go-car")
1441 (commit (string-append "v" version))))
1442 (file-name (git-file-name name version))
1443 (sha256
1444 (base32 "08zkz73r76va2hvrg6gixc0nfdwwsigdncsl9h6b5ibb11zwa0gn"))))
1445 (build-system go-build-system)
1446 (arguments
1447 (list
1448 ;; Version 2 is part of the same source and located in "v2" directory.
1449 #:import-path "github.com/ipld/go-car/v2"
1450 #:unpack-path "github.com/ipld/go-car"
1451 #:phases
1452 #~(modify-phases %standard-phases
1453 ;; Tests requiring github.com/ipfs/go-unixfsnode and indrodusing
1454 ;; cylcle.
1455 (add-before 'check 'remove-failing-test-files
1456 (lambda* (#:key unpack-path #:allow-other-keys)
1457 (with-directory-excursion (string-append "src/" unpack-path)
1458 (for-each delete-file
1459 (list "v2/selective_test.go"
1460 "v2/writer_test.go"))))))))
1461 (native-inputs
1462 (list go-github-com-stretchr-testify))
1463 (propagated-inputs
1464 (list go-github-com-ipfs-go-block-format
1465 go-github-com-ipfs-go-cid
1466 go-github-com-ipfs-go-ipld-cbor
1467 go-github-com-ipfs-go-ipld-format
1468 go-github-com-ipld-go-codec-dagpb
1469 go-github-com-ipld-go-ipld-prime
1470 go-github-com-multiformats-go-multicodec
1471 go-github-com-multiformats-go-multihash
1472 go-github-com-multiformats-go-varint
1473 go-github-com-petar-gollrb
1474 go-github-com-whyrusleeping-cbor
1475 go-golang-org-x-exp))
1476 (home-page "https://github.com/ipld/go-car")
1477 (synopsis "Content addressible archive utility")
1478 (description
1479 "Package car allows inspecting and reading CARv2 files, described at
1480@url{https://ipld.io/specs/transport/car}.")
1481 ;; This library is dual-licensed under Apache 2.0 and MIT terms.
1482 (license (list license:expat license:asl2.0))))
1483
1484(define-public go-github-com-ipld-go-codec-dagpb
1485 (package
1486 (name "go-github-com-ipld-go-codec-dagpb")
1487 (version "1.6.0")
1488 (source
1489 (origin
1490 (method git-fetch)
1491 (uri (git-reference
1492 (url "https://github.com/ipld/go-codec-dagpb")
1493 (commit (string-append "v" version))))
1494 (file-name (git-file-name name version))
1495 (sha256
1496 (base32 "1jbrwbgr222wsi95gdflbj350csja6k8vphdq7c9bm50ipr8bvkq"))))
1497 (build-system go-build-system)
1498 (arguments
1499 (list
1500 #:import-path "github.com/ipld/go-codec-dagpb"))
1501 (propagated-inputs
1502 (list go-github-com-ipfs-go-cid
1503 go-github-com-ipld-go-ipld-prime
1504 go-google-golang-org-protobuf))
1505 (home-page "https://github.com/ipld/go-codec-dagpb/")
1506 (synopsis "Implementation of the DAG-PB spec for Go")
1507 (description
1508 "An implementation of the @url{https://ipld.io/, IPLD DAG-PB} spec for
1509@code{go-ipld-prime}.")
1510 (license (list license:expat license:asl2.0))))
1511
1512(define-public go-github-com-ipld-go-ipld-prime
1513 (package
1514 (name "go-github-com-ipld-go-ipld-prime")
1515 (version "0.21.0")
1516 (source
1517 (origin
1518 (method git-fetch)
1519 (uri (git-reference
1520 (url "https://github.com/ipld/go-ipld-prime")
1521 (commit (string-append "v" version))))
1522 (file-name (git-file-name name version))
1523 (sha256
1524 (base32 "1ycb08h0hvq3mw3sbjkjzp5sfcxmss155jxiv5gjg7myxvzk91ja"))))
1525 (build-system go-build-system)
1526 (arguments
1527 (list
1528 #:import-path "github.com/ipld/go-ipld-prime"
1529 ;; XXX: More input requires to cover all shipped go packages.
1530 #:test-subdirs #~(list ".")
1531 #:phases
1532 #~(modify-phases %standard-phases
1533 (add-after 'unpack 'copy-ipld-specfs
1534 (lambda* (#:key import-path #:allow-other-keys)
1535 (copy-recursively
1536 (string-append #$(this-package-native-input
1537 "specification-ipld")
1538 "/share/ipld/")
1539 (string-append "src/" import-path "/ipld")))))))
1540 (native-inputs
1541 (list go-github-com-frankban-quicktest
1542 go-github-com-warpfork-go-testmark
1543 specification-ipld))
1544 (propagated-inputs
1545 (list go-github-com-google-go-cmp
1546 go-github-com-ipfs-go-block-format
1547 go-github-com-ipfs-go-cid
1548 go-github-com-multiformats-go-multicodec
1549 go-github-com-multiformats-go-multihash
1550 go-github-com-polydawn-refmt
1551 go-gopkg-in-yaml-v2))
1552 (home-page "https://github.com/ipld/go-ipld-prime")
1553 (synopsis "Golang interfaces for the IPLD Data Model")
1554 (description
1555 "@code{go-ipld-prime} is an implementation of the IPLD spec interfaces, a
1556batteries-included codec implementations of IPLD for CBOR and JSON, and tooling for
1557basic operations on IPLD objects (traversals, etc).")
1558 (license license:expat)))
1559
1560(define-public go-github-com-ipfs-go-log-v2
1561 (package
1562 (name "go-github-com-ipfs-go-log-v2")
1563 (version "2.9.1")
1564 (source
1565 (origin
1566 (method git-fetch)
1567 (uri (git-reference
1568 (url "https://github.com/ipfs/go-log")
1569 (commit (string-append "v" version))))
1570 (file-name (git-file-name name version))
1571 (sha256
1572 (base32 "16sm3y7n05gjfzc77d38iscq3pdg0kr3p95izxp70y8pfrpfacs5"))))
1573 (build-system go-build-system)
1574 (arguments
1575 (list
1576 #:import-path "github.com/ipfs/go-log/v2"))
1577 (native-inputs
1578 (list go-github-com-stretchr-testify))
1579 (propagated-inputs
1580 (list go-github-com-mattn-go-isatty
1581 go-go-uber-org-zap))
1582 (home-page "https://github.com/ipfs/go-log")
1583 (synopsis "Logging library used by @code{go-ipfs}")
1584 (description
1585 "@code{go-log} wraps @url{https://github.com/uber-go/zap, zap} to provide
1586a logging facade. @code{go-log} manages logging instances and allows for
1587their levels to be controlled individually.")
1588 (license license:expat)))
1589
1590(define-public go-github-com-ipfs-go-log
1591 (package
1592 (inherit go-github-com-ipfs-go-log-v2)
1593 (name "go-github-com-ipfs-go-log")
1594 (version "1.0.5")
1595 (source
1596 (origin
1597 (method git-fetch)
1598 (uri (git-reference
1599 (url "https://github.com/ipfs/go-log")
1600 (commit (string-append "v" version))))
1601 (file-name (git-file-name name version))
1602 (sha256
1603 (base32 "0gj2yqrv6wgpkv6f9c1anmw5kwg59plv0jrcxb3zmjrnk8fsn1jr"))))
1604 (propagated-inputs
1605 (list go-github-com-gogo-protobuf
1606 go-github-com-ipfs-go-log-v2
1607 go-github-com-opentracing-opentracing-go
1608 go-go-uber-org-zap))
1609 (arguments
1610 (list
1611 #:import-path "github.com/ipfs/go-log"))))
1612
1613(define-public go-github-com-ipshipyard-p2p-forge
1614 (package
1615 (name "go-github-com-ipshipyard-p2p-forge")
1616 (version "0.5.1")
1617 (source
1618 (origin
1619 (method git-fetch)
1620 (uri (git-reference
1621 (url "https://github.com/ipshipyard/p2p-forge")
1622 (commit (string-append "v" version))))
1623 (file-name (git-file-name name version))
1624 (sha256
1625 (base32 "0qh820v738fn1k5scd99v230s4xcz26wg2s41farirhdjx8lmzc6"))))
1626 (build-system go-build-system)
1627 (arguments
1628 (list
1629 ;; TODO: Enalbe when all missing inputs are packaged, using for Kubo as
1630 ;; source only package.
1631 #:skip-build? #t
1632 #:tests? #f
1633 #:import-path "github.com/ipshipyard/p2p-forge"))
1634 (propagated-inputs
1635 (list go-github-com-aws-aws-sdk-go
1636 go-github-com-caddyserver-certmagic
1637 ;; go-github-com-coredns-caddy
1638 ;; go-github-com-coredns-coredns
1639 go-github-com-felixge-httpsnoop
1640 go-github-com-ipfs-go-datastore
1641 go-github-com-ipfs-go-ds-badger4
1642 go-github-com-ipfs-go-ds-dynamodb
1643 go-github-com-ipfs-go-log-v2
1644 go-github-com-joho-godotenv
1645 go-github-com-letsencrypt-pebble-v2
1646 go-github-com-libp2p-go-libp2p
1647 go-github-com-mholt-acmez-v3
1648 go-github-com-miekg-dns
1649 go-github-com-multiformats-go-multiaddr
1650 go-github-com-multiformats-go-multiaddr-dns
1651 go-github-com-multiformats-go-multibase
1652 go-github-com-prometheus-client-golang
1653 go-github-com-slok-go-http-metrics
1654 go-go-uber-org-zap))
1655 (home-page "https://github.com/ipshipyard/p2p-forge")
1656 (synopsis "Authoritative DNS server for distributing DNS subdomains to libp2p peers")
1657 (description
1658 "This package provides an Authoritative DNS server and HTTP+libp2p API
1659for distributing DNS subdomains with CA-signed TLS certificates to libp2p
1660peers.")
1661 (license (list license:asl2.0 license:expat))))
1662
1663(define-public go-github-com-libp2p-go-cidranger
1664 (package
1665 (name "go-github-com-libp2p-go-cidranger")
1666 (version "1.1.0")
1667 (source
1668 (origin
1669 (method git-fetch)
1670 (uri (git-reference
1671 (url "https://github.com/libp2p/go-cidranger")
1672 (commit (string-append "v" version))))
1673 (file-name (git-file-name name version))
1674 (sha256
1675 (base32 "05hzlk5hx7qna5znr3q1crr0qb7h8yrv1v96pj015dh0kbdkdaba"))))
1676 (build-system go-build-system)
1677 (arguments
1678 (list
1679 ;; XXX: Check if the most of the tests may be enabled:
1680 ;; src/github.com/libp2p/go-cidranger/trie_test.go:557:8: cannot use
1681 ;; 4294967295 (untyped int constant) as int value in assignment
1682 ;; (overflows).
1683 #:tests? (and (target-64bit?)
1684 (not (%current-target-system)))
1685 #:import-path "github.com/libp2p/go-cidranger"))
1686 (native-inputs
1687 (list go-github-com-stretchr-testify))
1688 (propagated-inputs
1689 (list go-github-com-ipfs-go-detect-race))
1690 (home-page "https://github.com/libp2p/go-cidranger")
1691 (synopsis "Fast IP to CIDR lookup in Golang")
1692 (description
1693 "Fast IP to @url{https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing,
1694CIDR} block(s) lookup using trie in Golang, inspired by
1695@url{https://vincent.bernat.im/en/blog/2017-ipv4-route-lookup-linux, IPv4
1696route lookup Linux}. Possible use cases include detecting if a IP address is
1697from published cloud provider CIDR blocks (e.g. 52.95.110.1 is contained in
1698published AWS Route53 CIDR 52.95.110.0/24), IP routing rules, etc.")
1699 (license license:expat)))
1700
1701(define-public go-github-com-libp2p-go-doh-resolver
1702 (package
1703 (name "go-github-com-libp2p-go-doh-resolver")
1704 (version "0.4.0")
1705 (source
1706 (origin
1707 (method git-fetch)
1708 (uri (git-reference
1709 (url "https://github.com/libp2p/go-doh-resolver")
1710 (commit (string-append "v" version))))
1711 (file-name (git-file-name name version))
1712 (sha256
1713 (base32 "0asni7f3gd65bjfqz99fqchz9y75cpgmfwkkhsbq0y2dydagw666"))))
1714 (build-system go-build-system)
1715 (arguments
1716 (list
1717 #:import-path "github.com/libp2p/go-doh-resolver"))
1718 (native-inputs
1719 (list go-github-com-stretchr-testify))
1720 (propagated-inputs
1721 (list go-github-com-ipfs-go-log-v2
1722 go-github-com-miekg-dns
1723 go-github-com-multiformats-go-multiaddr-dns))
1724 (home-page "https://github.com/libp2p/go-doh-resolver")
1725 (synopsis "DNS over HTTPS resolver")
1726 (description
1727 "This package provides an implementation DNS over HTTPS resolver as
1728specified in @url{https://datatracker.ietf.org/doc/html/rfc8484, RFC 8484}.")
1729 (license license:expat)))
1730
1731(define-public go-github-com-libp2p-go-libp2p
1732 (package
1733 (name "go-github-com-libp2p-go-libp2p")
1734 (version "0.47.0")
1735 (source
1736 (origin
1737 (method git-fetch)
1738 (uri (git-reference
1739 (url "https://github.com/libp2p/go-libp2p")
1740 (commit (string-append "v" version))))
1741 (file-name (git-file-name name version))
1742 (sha256
1743 (base32 "1kz7rfmgnxcjcy0ixy6gib9ppndmhkm1zdljvlzvgxnd9jdz00x4"))
1744 (modules '((guix build utils)))
1745 (snippet
1746 #~(begin
1747 ;; Submodules with their own go.mod files and packaged separately:
1748 ;;
1749 ;; - github.com/libp2p/go-libp2p/scripts/test_analysis
1750 ;; - github.com/libp2p/go-libp2p/test-plans/m/v2
1751 (for-each delete-file-recursively
1752 (list "scripts/test_analysis" "test-plans"))))))
1753 (build-system go-build-system)
1754 (arguments
1755 (list
1756 #:embed-files #~(list "sorted-network-list.bin")
1757 #:import-path "github.com/libp2p/go-libp2p"
1758 ;; XXX: Check how to enable the most of the tests, see GitHub Actions
1759 ;; workflow files of the project.
1760 #:test-subdirs #~(list "core/..." ".")
1761 #:phases
1762 #~(modify-phases %standard-phases
1763 (add-after 'unpack 'remove-examples
1764 (lambda* (#:key import-path #:allow-other-keys)
1765 (with-directory-excursion (string-append "src/" import-path)
1766 (delete-file-recursively "examples")))))))
1767 (native-inputs
1768 (list go-github-com-libp2p-go-libp2p-testing
1769 go-github-com-stretchr-testify
1770 go-go-uber-org-mock
1771 go-github-com-marcopolo-simnet
1772 go-go-uber-org-goleak))
1773 (propagated-inputs
1774 (list go-github-com-benbjohnson-clock
1775 go-github-com-davidlazar-go-crypto
1776 go-github-com-decred-dcrd-dcrec-secp256k1-v4
1777 go-github-com-flynn-noise
1778 go-github-com-google-gopacket
1779 go-github-com-gorilla-websocket
1780 go-github-com-hashicorp-golang-lru-arc-v2
1781 go-github-com-hashicorp-golang-lru-v2
1782 go-github-com-huin-goupnp
1783 go-github-com-ipfs-go-cid
1784 go-github-com-ipfs-go-datastore
1785 go-github-com-ipfs-go-log-v2
1786 go-github-com-jackpal-go-nat-pmp
1787 go-github-com-jbenet-go-temp-err-catcher
1788 go-github-com-klauspost-compress
1789 go-github-com-koron-go-ssdp
1790 go-github-com-libp2p-go-buffer-pool
1791 go-github-com-libp2p-go-flow-metrics
1792 go-github-com-libp2p-go-libp2p-asn-util
1793 go-github-com-libp2p-go-msgio
1794 go-github-com-libp2p-go-netroute
1795 go-github-com-libp2p-go-reuseport
1796 go-github-com-libp2p-go-yamux-v5
1797 go-github-com-libp2p-zeroconf-v2
1798 go-github-com-marten-seemann-tcp
1799 go-github-com-mikioh-tcpinfo
1800 go-github-com-mr-tron-base58
1801 go-github-com-multiformats-go-base32
1802 go-github-com-multiformats-go-multiaddr
1803 go-github-com-multiformats-go-multiaddr-dns
1804 go-github-com-multiformats-go-multiaddr-fmt
1805 go-github-com-multiformats-go-multibase
1806 go-github-com-multiformats-go-multicodec
1807 go-github-com-multiformats-go-multihash
1808 go-github-com-multiformats-go-multistream
1809 go-github-com-multiformats-go-varint
1810 go-github-com-pbnjay-memory
1811 go-github-com-pion-datachannel
1812 go-github-com-pion-ice-v4
1813 go-github-com-pion-logging
1814 go-github-com-pion-sctp
1815 go-github-com-pion-stun
1816 go-github-com-pion-webrtc-v4
1817 go-github-com-prometheus-client-golang
1818 go-github-com-prometheus-client-model
1819 go-github-com-quic-go-quic-go
1820 go-github-com-quic-go-webtransport-go
1821 go-go-uber-org-fx
1822 go-go-uber-org-zap
1823 go-golang-org-x-crypto
1824 go-golang-org-x-sync
1825 go-golang-org-x-sys
1826 go-golang-org-x-time
1827 go-golang-org-x-tools
1828 go-google-golang-org-protobuf))
1829 (home-page "https://github.com/libp2p/go-libp2p")
1830 (synopsis "LIBP2P networking stack implementation in Golang")
1831 (description
1832 "This package provides a networking stack and library modularized out of
1833@url{https://github.com/ipfs/ipfs,The IPFS Project} as specified in
1834@url{https://github.com/libp2p/specs,libp2p}.")
1835 (license license:expat)))
1836
1837(define-public go-github-com-libp2p-go-libp2p-gostream
1838 (package
1839 (name "go-github-com-libp2p-go-libp2p-gostream")
1840 (version "0.6.0")
1841 (source
1842 (origin
1843 (method git-fetch)
1844 (uri (git-reference
1845 (url "https://github.com/libp2p/go-libp2p-gostream")
1846 (commit (string-append "v" version))))
1847 (file-name (git-file-name name version))
1848 (sha256
1849 (base32 "1zq5vhjj590azc1gwwiyqilf9ifxp8nz4hziz0fxs5ly2xhjj1mw"))))
1850 (build-system go-build-system)
1851 (arguments
1852 (list
1853 ;; XXX: Broken upstream, see
1854 ;; <https://github.com/libp2p/go-libp2p-gostream/issues/90>
1855 #:tests? #f
1856 #:import-path "github.com/libp2p/go-libp2p-gostream"
1857 ;; src/github.com/libp2p/go-libp2p-asn-util/asn.go:12:12: pattern
1858 ;; sorted-network-list.bin: cannot embed irregular file
1859 ;; sorted-network-list.bin
1860 #:embed-files #~(list "sorted-network-list\\.bin")))
1861 (native-inputs
1862 (list go-github-com-stretchr-testify))
1863 (propagated-inputs
1864 (list go-github-com-libp2p-go-libp2p
1865 go-github-com-multiformats-go-multiaddr))
1866 (home-page "https://github.com/libp2p/go-libp2p-gostream")
1867 (synopsis "Golang @code{net} wrappers for libp2p")
1868 (description
1869 "This package provides a replacement of the standard @code{net} stack in
1870Go with @url{https://github.com/libp2p/libp2p, LibP2P} streams.")
1871 (license license:expat)))
1872
1873(define-public go-github-com-libp2p-go-libp2p-http
1874 (package
1875 (name "go-github-com-libp2p-go-libp2p-http")
1876 (version "0.5.0")
1877 (source
1878 (origin
1879 (method git-fetch)
1880 (uri (git-reference
1881 (url "https://github.com/libp2p/go-libp2p-http")
1882 (commit (string-append "v" version))))
1883 (file-name (git-file-name name version))
1884 (sha256
1885 (base32 "0v65xjj1ljpx9bfwqivgncc6imrykw1dd8m2zvaqiygv0dirzkzn"))))
1886 (build-system go-build-system)
1887 (arguments
1888 (list
1889 ;; XXX: Broken upstream, see
1890 ;; <https://github.com/libp2p/go-libp2p-http/issues/94>
1891 #:tests? #f
1892 #:import-path "github.com/libp2p/go-libp2p-http"
1893 ;; src/github.com/libp2p/go-libp2p-asn-util/asn.go:12:12: pattern
1894 ;; sorted-network-list.bin: cannot embed irregular file
1895 ;; sorted-network-list.bin
1896 #:embed-files #~(list "sorted-network-list\\.bin")))
1897 (native-inputs
1898 (list go-github-com-stretchr-testify))
1899 (propagated-inputs
1900 (list go-github-com-libp2p-go-libp2p
1901 go-github-com-libp2p-go-libp2p-gostream
1902 go-github-com-multiformats-go-multiaddr))
1903 (home-page "https://github.com/libp2p/go-libp2p-http")
1904 (synopsis "HTTP on top of libp2p")
1905 (description
1906 "Package p2phttp allows to serve HTTP endpoints and make HTTP requests
1907through @url{https://github.com/libp2p/libp2p, LibP2P} using Go's standard
1908@code{http} and @code{net} stacks.")
1909 (license license:expat)))
1910
1911(define-public go-github-com-libp2p-go-libp2p-kad-dht
1912 (package
1913 (name "go-github-com-libp2p-go-libp2p-kad-dht")
1914 (version "0.40.0")
1915 (source
1916 (origin
1917 (method git-fetch)
1918 (uri (git-reference
1919 (url "https://github.com/libp2p/go-libp2p-kad-dht")
1920 (commit (string-append "v" version))))
1921 (file-name (git-file-name name version))
1922 (sha256
1923 (base32 "118sw150wdmrqvpqddjqa75ik9j3fza8m6dmhf1ai6pii3sgrg6n"))))
1924 (build-system go-build-system)
1925 (arguments
1926 (list
1927 #:embed-files #~(list "sorted-network-list.bin")
1928 #:import-path "github.com/libp2p/go-libp2p-kad-dht"
1929 ;; Error: "[]" should have 3 item(s), but has 0
1930 #:test-flags #~(list "-skip" "TestIPDiversityFilter/Different_IPv6_blocks")
1931 #:phases
1932 #~(modify-phases %standard-phases
1933 (add-before 'check 'pre-check
1934 (lambda* (#:key tests? import-path #:allow-other-keys)
1935 ;; See: <https://go.dev/blog/synctest>.
1936 (setenv "GODEBUG" "asynctimerchan=0"))))))
1937 (native-inputs
1938 (list go-github-com-ipfs-go-test
1939 go-github-com-ipfs-go-detect-race
1940 go-github-com-libp2p-go-libp2p
1941 go-github-com-multiformats-go-multistream
1942 go-github-com-ipfs-go-ds-pebble
1943 go-github-com-stretchr-testify))
1944 (propagated-inputs
1945 (list go-github-com-gammazero-deque
1946 go-github-com-google-gopacket
1947 go-github-com-google-uuid
1948 go-github-com-guillaumemichel-reservedpool
1949 go-github-com-hashicorp-golang-lru
1950 go-github-com-ipfs-boxo
1951 go-github-com-ipfs-go-cid
1952 go-github-com-ipfs-go-datastore
1953 go-github-com-ipfs-go-dsqueue
1954 go-github-com-ipfs-go-libdht
1955 go-github-com-ipfs-go-log-v2
1956 go-github-com-libp2p-go-libp2p-kbucket
1957 go-github-com-libp2p-go-libp2p-record
1958 go-github-com-libp2p-go-libp2p-routing-helpers
1959 go-github-com-libp2p-go-libp2p-testing
1960 go-github-com-libp2p-go-libp2p-xor
1961 go-github-com-libp2p-go-msgio
1962 go-github-com-libp2p-go-netroute
1963 go-github-com-multiformats-go-base32
1964 go-github-com-multiformats-go-multiaddr
1965 go-github-com-multiformats-go-multibase
1966 go-github-com-multiformats-go-multihash
1967 go-github-com-whyrusleeping-go-keyspace
1968 go-go-opentelemetry-io-otel
1969 go-go-opentelemetry-io-otel-metric
1970 go-go-opentelemetry-io-otel-trace
1971 go-go-uber-org-zap
1972 go-gonum-org-v1-gonum
1973 go-google-golang-org-protobuf))
1974 (home-page "https://github.com/libp2p/go-libp2p-kad-dht")
1975 (synopsis "Kademlia DHT implementation on go-libp2p")
1976 (description
1977 "Package dht implements a distributed hash table that satisfies the IPFS
1978routing interface as specified in @url{https://github.com/libp2p/specs,
1979kab-dht}. This DHT is modeled after Kademlia with S/Kademlia modifications.")
1980 (license license:expat)))
1981
1982(define-public go-github-com-libp2p-go-libp2p-kad-dht-bootstrap
1983 (hidden-package
1984 (package/inherit go-github-com-libp2p-go-libp2p-kad-dht
1985 (arguments
1986 (list
1987 #:skip-build? #t
1988 #:tests? #f
1989 #:import-path "github.com/libp2p/go-libp2p-kad-dht"))
1990 (propagated-inputs
1991 (list go-github-com-libp2p-go-libp2p-kbucket
1992 go-github-com-hashicorp-golang-lru
1993 go-github-com-whyrusleeping-go-keyspace
1994 go-gonum-org-v1-gonum)))))
1995
1996(define-public go-github-com-libp2p-go-libp2p-kbucket
1997 (package
1998 (name "go-github-com-libp2p-go-libp2p-kbucket")
1999 (version "0.8.0")
2000 (source
2001 (origin
2002 (method git-fetch)
2003 (uri (git-reference
2004 (url "https://github.com/libp2p/go-libp2p-kbucket")
2005 (commit (string-append "v" version))))
2006 (file-name (git-file-name name version))
2007 (sha256
2008 (base32 "0imhamd18v5q4c7r92janx8pc51gbcdbxgbq3cl0n0j27ddc7f19"))))
2009 (build-system go-build-system)
2010 (arguments
2011 (list
2012 #:skip-build? #t ; cycles with Boxo
2013 #:import-path "github.com/libp2p/go-libp2p-kbucket"
2014 ;; src/github.com/libp2p/go-libp2p-asn-util/asn.go:12:12: pattern
2015 ;; sorted-network-list.bin: cannot embed irregular file
2016 ;; sorted-network-list.bin
2017 #:embed-files #~(list "sorted-network-list\\.bin")
2018 ;; Run portion of tests to bypath cycle with Boxo.
2019 #:test-subdirs #~(list "peerdiversity/...")))
2020 (native-inputs
2021 (list go-github-com-stretchr-testify))
2022 (propagated-inputs
2023 (list go-github-com-ipfs-go-log-v2
2024 go-github-com-libp2p-go-cidranger
2025 go-github-com-libp2p-go-libp2p
2026 go-github-com-libp2p-go-libp2p-asn-util
2027 go-github-com-minio-sha256-simd
2028 go-github-com-multiformats-go-multiaddr
2029 go-github-com-multiformats-go-multihash))
2030 (home-page "https://github.com/libp2p/go-libp2p-kbucket")
2031 (synopsis "Kbucket implementation for use as a routing table")
2032 (description
2033 "Package kbucket implements a kademlia k-bucket routing table.")
2034 (license license:expat)))
2035
2036(define-public go-github-com-libp2p-go-libp2p-pubsub
2037 (package
2038 (name "go-github-com-libp2p-go-libp2p-pubsub")
2039 (version "0.16.0")
2040 (source
2041 (origin
2042 (method git-fetch)
2043 (uri (git-reference
2044 (url "https://github.com/libp2p/go-libp2p-pubsub")
2045 (commit (string-append "v" version))))
2046 (file-name (git-file-name name version))
2047 (sha256
2048 (base32 "03nh7lbzy51yyfgi6lqlyxz91il05axvis0nq3zfi8c98dadzr5j"))))
2049 (build-system go-build-system)
2050 (arguments
2051 (list
2052 #:import-path "github.com/libp2p/go-libp2p-pubsub"
2053 #:test-flags
2054 #~(list "-short"
2055 "-skip" (string-join
2056 ;; Expencive tests, which takes more than 10s to pass
2057 ;; and accumulate hard timeout; succeeded after 235.9
2058 ;; seconds with 16 threads.
2059 (list "TestBasicSeqnoValidatorReplay"
2060 "TestLastSeenCacheNotFoundAfterExpire"
2061 "TestConfigurableMaxMessageSize"
2062 "TestFloodSubPluggableProtocol/won"
2063 "TestGossipsubAttackSpamIHAVE"
2064 "TestGossipsubFanoutMaintenance"
2065 "TestGossipsubGossip"
2066 "TestGossipsubOpportunisticGrafting"
2067 "TestGossipsubRPCFragmentation"
2068 "TestGossipsubStarTopology"
2069 "TestGossipsubStarTopologyWithSignedPeerRecords"
2070 "TestPairwiseInteractionWithPartialMessages"
2071 "TestPeerDisconnect")
2072 "|"))
2073 ;; src/github.com/libp2p/go-libp2p-asn-util/asn.go:12:12: pattern
2074 ;; sorted-network-list.bin: cannot embed irregular file
2075 ;; sorted-network-list.bin
2076 #:embed-files #~(list "sorted-network-list\\.bin")))
2077 (native-inputs
2078 (list go-github-com-libp2p-go-libp2p-testing))
2079 (propagated-inputs
2080 (list go-github-com-benbjohnson-clock
2081 go-github-com-gogo-protobuf
2082 go-github-com-libp2p-go-buffer-pool
2083 go-github-com-libp2p-go-libp2p
2084 go-github-com-libp2p-go-msgio
2085 go-github-com-multiformats-go-multiaddr
2086 go-github-com-multiformats-go-varint))
2087 (home-page "https://github.com/libp2p/go-libp2p-pubsub")
2088 (synopsis "PubSub implementation for go-libp2p")
2089 (description
2090 "This package provides facilities for the Publish/Subscribe pattern of
2091message propagation, also known as overlay multicast. The implementation
2092provides topic-based pubsub, with pluggable routing algorithms.")
2093 (license (list license:asl2.0 license:expat))))
2094
2095(define-public go-github-com-libp2p-go-libp2p-pubsub-router
2096 (package
2097 (name "go-github-com-libp2p-go-libp2p-pubsub-router")
2098 (version "0.6.0")
2099 (source
2100 (origin
2101 (method git-fetch)
2102 (uri (git-reference
2103 (url "https://github.com/libp2p/go-libp2p-pubsub-router")
2104 (commit (string-append "v" version))))
2105 (file-name (git-file-name name version))
2106 (sha256
2107 (base32 "01mxb8gi7myidnyfg8yqb445lbwqmgncvh7rcwx6n8av84afplx4"))))
2108 (build-system go-build-system)
2109 (arguments
2110 (list
2111 #:tests? #f ; XXX: tests hang, check why
2112 #:import-path "github.com/libp2p/go-libp2p-pubsub-router"))
2113 (native-inputs
2114 (list go-github-com-stretchr-testify))
2115 (propagated-inputs
2116 (list go-github-com-gogo-protobuf
2117 go-github-com-ipfs-go-datastore
2118 go-github-com-ipfs-go-ipfs-ds-help
2119 go-github-com-ipfs-go-log-v2
2120 go-github-com-libp2p-go-libp2p
2121 go-github-com-libp2p-go-libp2p-pubsub
2122 go-github-com-libp2p-go-libp2p-record
2123 go-github-com-libp2p-go-msgio
2124 go-golang-org-x-sync))
2125 (home-page "https://github.com/libp2p/go-libp2p-pubsub-router")
2126 (synopsis "PubSub libp2p router library")
2127 (description
2128 "This package implements a IPNS over PubSub for @code{libp2p}.")
2129 (license license:expat)))
2130
2131(define-public go-github-com-libp2p-go-libp2p-record
2132 (package
2133 (name "go-github-com-libp2p-go-libp2p-record")
2134 (version "0.3.1")
2135 (source
2136 (origin
2137 (method git-fetch)
2138 (uri (git-reference
2139 (url "https://github.com/libp2p/go-libp2p-record")
2140 (commit (string-append "v" version))))
2141 (file-name (git-file-name name version))
2142 (sha256
2143 (base32 "0hl3khlsxagypf18cgx0rd2hnlnpg2vhcrn4g7m1xrkimgj57696"))))
2144 (build-system go-build-system)
2145 (arguments
2146 (list
2147 #:import-path "github.com/libp2p/go-libp2p-record"))
2148 (native-inputs
2149 (list go-github-com-ipfs-go-test
2150 go-google-golang-org-protobuf))
2151 (propagated-inputs
2152 (list go-github-com-libp2p-go-libp2p
2153 go-github-com-multiformats-go-multihash))
2154 (home-page "https://github.com/libp2p/go-libp2p-record")
2155 (synopsis "Signed records for use with routing systems")
2156 (description
2157 "This package implements signed records for use wit IPFS routing
2158systems.")
2159 (license license:expat)))
2160
2161(define-public go-github-com-libp2p-go-libp2p-routing-helpers
2162 (package
2163 (name "go-github-com-libp2p-go-libp2p-routing-helpers")
2164 (version "0.7.4")
2165 (source
2166 (origin
2167 (method git-fetch)
2168 (uri (git-reference
2169 (url "https://github.com/libp2p/go-libp2p-routing-helpers")
2170 (commit (string-append "v" version))))
2171 (file-name (git-file-name name version))
2172 (sha256
2173 (base32 "0s0gzxfhmvywk4w78j1ga1ha7f948csfyflpxz8la1cp64238f01"))))
2174 (build-system go-build-system)
2175 (arguments
2176 (list
2177 #:import-path "github.com/libp2p/go-libp2p-routing-helpers"))
2178 (native-inputs
2179 (list go-github-com-stretchr-testify))
2180 (propagated-inputs
2181 (list go-github-com-hashicorp-errwrap
2182 go-github-com-hashicorp-go-multierror
2183 go-github-com-ipfs-go-cid
2184 go-github-com-ipfs-go-log
2185 go-github-com-jorropo-jsync
2186 go-github-com-libp2p-go-libp2p
2187 go-github-com-libp2p-go-libp2p-record
2188 go-github-com-multiformats-go-multibase
2189 go-github-com-multiformats-go-multihash
2190 go-go-opentelemetry-io-otel
2191 go-go-opentelemetry-io-otel-trace
2192 go-go-uber-org-multierr))
2193 (home-page "https://github.com/libp2p/go-libp2p-routing-helpers")
2194 (synopsis
2195 "Collection of helper types for composing different types of routers")
2196 ;; XXX: Project lacks any documentation.
2197 (description
2198 "This package provides a collection of helper types for composing
2199different types of routers.")
2200 (license license:expat)))
2201
2202(define-public go-github-com-libp2p-go-libp2p-testing
2203 (package
2204 (name "go-github-com-libp2p-go-libp2p-testing")
2205 (version "0.12.0")
2206 (source
2207 (origin
2208 (method git-fetch)
2209 (uri (git-reference
2210 (url "https://github.com/libp2p/go-libp2p-testing")
2211 (commit (string-append "v" version))))
2212 (file-name (git-file-name name version))
2213 (sha256
2214 (base32 "08n17mqskdj5il6lws53wk1zsf9d8c55f58bap1rjngf2d669p39"))))
2215 (build-system go-build-system)
2216 (arguments
2217 (list
2218 #:skip-build? #t ; to break cycle with go-github-com-libp2p-go-libp2p
2219 #:tests? #f
2220 #:import-path "github.com/libp2p/go-libp2p-testing"))
2221 (home-page "https://github.com/libp2p/go-libp2p-testing")
2222 (synopsis "Test toolbox for go-libp2p modules")
2223 (description
2224 "This package provides a testing toolbox for go-libp2p modules.")
2225 (license (list license:expat license:asl2.0))))
2226
2227(define-public go-github-com-libp2p-go-libp2p-xor
2228 (package
2229 (name "go-github-com-libp2p-go-libp2p-xor")
2230 (version "0.1.0")
2231 (source
2232 (origin
2233 (method git-fetch)
2234 (uri (git-reference
2235 (url "https://github.com/libp2p/go-libp2p-xor")
2236 (commit (string-append "v" version))))
2237 (file-name (git-file-name name version))
2238 (sha256
2239 (base32 "0p4mwz0q0zbj8p1s04hmpy0w0znfxz3b7x28dv7cz0cg6wqvfqvk"))))
2240 (build-system go-build-system)
2241 (arguments
2242 (list
2243 ;; Do not build or test to bypass cycle with Boxo.
2244 #:skip-build? #t
2245 #:tests? #f
2246 #:import-path "github.com/libp2p/go-libp2p-xor"))
2247 (propagated-inputs
2248 (list go-github-com-libp2p-go-libp2p-kbucket))
2249 (home-page "https://github.com/libp2p/go-libp2p-xor")
2250 (synopsis "Xor Trie implementation for libp2p")
2251 (description
2252 "This package implements XOR tries. An XOR trie is a trie for
2253equal-length bit strings. XOR tries support efficient set operations, as well
2254as distance-based operations with respect to the XOR metric.")
2255 (license license:expat)))
2256
2257(define-public go-github-com-libp2p-go-socket-activation
2258 (package
2259 (name "go-github-com-libp2p-go-socket-activation")
2260 (version "0.1.0")
2261 (source
2262 (origin
2263 (method git-fetch)
2264 (uri (git-reference
2265 (url "https://github.com/libp2p/go-socket-activation")
2266 (commit (string-append "v" version))))
2267 (file-name (git-file-name name version))
2268 (sha256
2269 (base32 "1cqxzmjfg7838xifs07kigys9icardwlj1wl426mzgzmbwn6pg5s"))))
2270 (build-system go-build-system)
2271 (arguments
2272 (list
2273 #:import-path "github.com/libp2p/go-socket-activation"))
2274 (propagated-inputs
2275 (list go-github-com-coreos-go-systemd-v22
2276 go-github-com-ipfs-go-log
2277 go-github-com-multiformats-go-multiaddr))
2278 (home-page "https://github.com/libp2p/go-socket-activation")
2279 (synopsis "Multiaddr backed systemd socket activation")
2280 (description
2281 "This package provides access to sockets registered by the system's init
2282daemon as described in
2283@url{http://0pointer.de/blog/projects/socket-activation}.")
2284 (license license:expat)))
2285
2286(define-public go-github-com-probe-lab-go-libdht
2287 (package
2288 (name "go-github-com-probe-lab-go-libdht")
2289 (version "0.5.0")
2290 (source
2291 (origin
2292 (method git-fetch)
2293 (uri (git-reference
2294 ;; <https://github.com/probe-lab/go-libdht> redirects to
2295 ;; <https://github.com/ipfs/go-libdht>.
2296 (url "https://github.com/ipfs/go-libdht")
2297 (commit (string-append "v" version))))
2298 (file-name (git-file-name name version))
2299 (sha256
2300 (base32 "139zzvs9c65k6agfpy412y9bb4pfxdmwvwjbvndx9gd615qhxzak"))))
2301 (build-system go-build-system)
2302 (arguments
2303 (list
2304 #:skip-build? #t
2305 #:import-path "github.com/ipfs/go-libdht"))
2306 (native-inputs
2307 (list go-github-com-stretchr-testify))
2308 (home-page "https://github.com/ipfs/go-libdht")
2309 (synopsis "Generic Go DHT toolbox")
2310 (description
2311 "@code{go-libdht} is a generic toolbox designed for the implementation
2312and experimentation of Distributed Hash Tables (DHT) in Go. It establishes
2313foundational types and interfaces applicable across a broad spectrum of DHTs,
2314especially those sharing a similar topology. By offering reusable components
2315like keys and routing tables, @code{go-libdht} streamlines the DHT
2316implementation process. Using @code{go-libdht}, developers can seamlessly
2317craft their own DHTs using the provided modular components.")
2318 ;; SPDX-License-Identifier: Apache-2.0 OR MIT
2319 (license (list license:expat license:asl2.0))))
2320
2321(define-public go-github-com-whyrusleeping-cbor-gen
2322 (package
2323 (name "go-github-com-whyrusleeping-cbor-gen")
2324 (version "v0.0.0-20230818171029-f91ae536ca25")
2325 (source
2326 (origin
2327 (method git-fetch)
2328 (uri (git-reference
2329 (url "https://github.com/whyrusleeping/cbor-gen")
2330 (commit (go-version->git-ref version))))
2331 (file-name (git-file-name name version))
2332 (sha256
2333 (base32 "08by7pqh4fcwf2va01iif75yqkfssi6d48334404mmv9jmhzim60"))))
2334 (build-system go-build-system)
2335 (arguments
2336 (list
2337 #:import-path "github.com/whyrusleeping/cbor-gen"))
2338 (propagated-inputs
2339 (list go-github-com-ipfs-go-cid
2340 go-github-com-google-go-cmp
2341 go-golang-org-x-xerrors))
2342 (home-page "https://github.com/whyrusleeping/cbor-gen")
2343 (synopsis "Codegen for CBOR codecs on the specified types")
2344 (description
2345 "Basic utilities to generate fast path @url{https://cbor.io/, CBOR} codecs for
2346types.")
2347 (license license:expat)))
2348
2349(define-public kubo
2350 (package
2351 (name "kubo")
2352 (version "0.42.0")
2353 (source
2354 (origin
2355 (method git-fetch)
2356 (uri (git-reference
2357 (url "https://github.com/ipfs/kubo")
2358 (commit (string-append "v" version))))
2359 (file-name (git-file-name name version))
2360 (sha256
2361 (base32 "1gq2r9x2846gb39jnz4qcci04gmjvj5y1p7dw2nzy2zmjx8mnm0c"))
2362 (modules '((guix build utils)))
2363 (snippet
2364 #~(begin
2365 ;; Module name has been changed upstream.
2366 (substitute* (find-files "." "\\.go$")
2367 (("github.com/probe-lab/go-libdht")
2368 "github.com/ipfs/go-libdht"))))))
2369 (build-system go-build-system)
2370 (arguments
2371 (list
2372 #:go go-1.26
2373 #:install-source? #f
2374 #:embed-files #~(list "sorted-network-list.bin" ".*\\.css" ".*\\.html")
2375 #:unpack-path "github.com/ipfs/kubo"
2376 #:import-path "github.com/ipfs/kubo/cmd/ipfs"
2377 #:build-flags #~(list "-tags" "external_libzstd")
2378 #:test-flags #~(list "-tags" "external_libzstd")
2379 #:phases
2380 #~(modify-phases %standard-phases
2381 ;; https://github.com/ipfs/kubo/blob/master/docs/command-completion.md
2382 (add-after 'install 'install-bashcompletion
2383 (lambda _
2384 (let ((completiondir (string-append #$output
2385 "/etc/bash_completion.d")))
2386 (mkdir-p completiondir)
2387 (with-output-to-file (string-append completiondir "/ipfs")
2388 (lambda _
2389 (invoke #$(if (%current-target-system)
2390 "ipfs"
2391 #~(string-append #$output "/bin/ipfs"))
2392 "commands" "completion" "bash")))))))))
2393 (native-inputs
2394 (list go-contrib-go-opencensus-io-exporter-prometheus
2395 go-github-com-anmitsu-go-shlex
2396 go-github-com-blang-semver-v4
2397 go-github-com-caddyserver-certmagic
2398 go-github-com-cenkalti-backoff-v4
2399 go-github-com-ceramicnetwork-go-dag-jose
2400 go-github-com-cheggaaa-pb-v3
2401 go-github-com-cockroachdb-pebble-v2
2402 go-github-com-coreos-go-systemd-v22
2403 go-github-com-dustin-go-humanize
2404 go-github-com-elgris-jsondiff
2405 go-github-com-facebookgo-atomicfile
2406 go-github-com-fsnotify-fsnotify
2407 go-github-com-google-uuid
2408 go-github-com-hanwen-go-fuse-v2
2409 go-github-com-hashicorp-go-version
2410 go-github-com-ipfs-shipyard-nopfs
2411 go-github-com-ipfs-shipyard-nopfs-ipfs
2412 go-github-com-ipfs-boxo
2413 go-github-com-ipfs-go-block-format
2414 go-github-com-ipfs-go-cid
2415 go-github-com-ipfs-go-cidutil
2416 go-github-com-ipfs-go-datastore
2417 go-github-com-ipfs-go-detect-race
2418 go-github-com-ipfs-go-ds-badger
2419 go-github-com-ipfs-go-ds-flatfs
2420 go-github-com-ipfs-go-ds-leveldb
2421 go-github-com-ipfs-go-ds-measure
2422 go-github-com-ipfs-go-ds-pebble
2423 go-github-com-ipfs-go-fs-lock
2424 go-github-com-ipfs-go-ipfs-cmds
2425 go-github-com-ipfs-go-ipld-cbor
2426 go-github-com-ipfs-go-ipld-format
2427 go-github-com-ipfs-go-ipld-git
2428 go-github-com-ipfs-go-ipld-legacy
2429 go-github-com-ipfs-go-log-v2
2430 go-github-com-ipfs-go-metrics-interface
2431 go-github-com-ipfs-go-metrics-prometheus
2432 go-github-com-ipfs-go-test
2433 go-github-com-ipfs-go-unixfsnode
2434 go-github-com-ipld-go-car-v2
2435 go-github-com-ipld-go-codec-dagpb
2436 go-github-com-ipld-go-ipld-prime
2437 go-github-com-ipshipyard-p2p-forge
2438 go-github-com-jbenet-go-temp-err-catcher
2439 go-github-com-julienschmidt-httprouter
2440 go-github-com-libp2p-go-doh-resolver
2441 go-github-com-libp2p-go-libp2p
2442 go-github-com-libp2p-go-libp2p-http
2443 go-github-com-libp2p-go-libp2p-kad-dht
2444 go-github-com-libp2p-go-libp2p-kbucket
2445 go-github-com-libp2p-go-libp2p-pubsub
2446 go-github-com-libp2p-go-libp2p-pubsub-router
2447 go-github-com-libp2p-go-libp2p-record
2448 go-github-com-libp2p-go-libp2p-routing-helpers
2449 go-github-com-libp2p-go-libp2p-testing
2450 go-github-com-libp2p-go-socket-activation
2451 go-github-com-mattn-go-isatty
2452 go-github-com-miekg-dns
2453 go-github-com-multiformats-go-multiaddr
2454 go-github-com-multiformats-go-multiaddr-dns
2455 go-github-com-multiformats-go-multibase
2456 go-github-com-multiformats-go-multicodec
2457 go-github-com-multiformats-go-multihash
2458 go-github-com-opentracing-opentracing-go
2459 go-github-com-pbnjay-memory
2460 go-github-com-probe-lab-go-libdht
2461 go-github-com-prometheus-client-golang
2462 go-github-com-stretchr-testify
2463 go-github-com-syndtr-goleveldb
2464 go-github-com-tidwall-gjson
2465 go-github-com-tidwall-sjson
2466 go-github-com-whyrusleeping-go-sysinfo
2467 go-github-com-whyrusleeping-multiaddr-filter
2468 go-go-opencensus-io
2469 go-go-opentelemetry-io-contrib-instrumentation-net-http-otelhttp
2470 go-go-opentelemetry-io-contrib-propagators-autoprop
2471 go-go-opentelemetry-io-otel
2472 go-go-opentelemetry-io-otel-exporters-prometheus
2473 go-go-opentelemetry-io-otel-sdk
2474 go-go-opentelemetry-io-otel-sdk-metric
2475 go-go-opentelemetry-io-otel-trace
2476 go-go-uber-org-dig
2477 go-go-uber-org-fx
2478 go-go-uber-org-zap
2479 go-golang-org-x-crypto
2480 go-golang-org-x-exp
2481 go-golang-org-x-mod
2482 go-golang-org-x-sync
2483 go-golang-org-x-sys
2484 go-golang-org-x-term
2485 go-google-golang-org-protobuf
2486 python-minimal-wrapper
2487 zsh))
2488 (home-page "https://ipfs.tech")
2489 (synopsis "Go implementation of IPFS, a peer-to-peer hypermedia protocol")
2490 (description "IPFS is a global, versioned, peer-to-peer file system. It
2491combines good ideas from Git, BitTorrent, Kademlia, SFS, and the Web. It is
2492like a single bittorrent swarm, exchanging git objects. IPFS provides an
2493interface as simple as the HTTP web, but with permanence built in. You can
2494also mount the world at @code{/ipfs}.")
2495 (license license:expat)))
2496
2497(define-public spritely-libp2p-daemon
2498 (let ((version "0.1")
2499 (commit "f10d8c4bad2a50d6e481c0b57231741d079ffedb")
2500 (revision "0"))
2501 (package
2502 (name "spritely-libp2p-daemon")
2503 (version (git-version version revision commit))
2504 (source
2505 (origin
2506 (method git-fetch)
2507 (uri (git-reference
2508 (url "https://gitlab.com/spritely/go-libp2p-daemon.git")
2509 (commit commit)))
2510 (file-name (git-file-name name version))
2511 (sha256
2512 (base32 "0bk2610rlg8d4lla7h7sic9drv1syabfbr7kbg2yqqbhiwg0v2br"))))
2513 (build-system go-build-system)
2514 (arguments
2515 (list
2516 #:embed-files #~(list "sorted-network-list.bin")
2517 #:install-source? #f
2518 #:import-path "gitlab.com/spritely/spritely-libp2p-daemon"))
2519 (native-inputs
2520 (list go-github-com-libp2p-go-libp2p
2521 go-github-com-multiformats-go-multiaddr
2522 go-github-com-stretchr-testify))
2523 (home-page "https://gitlab.com/spritely/go-libp2p-daemon")
2524 (synopsis "Simple daemon to connect over libp2p")
2525 (description "This package provides a very simple daemon to interface to
2526from other programming languages. It's designed to fulfill the needs of
2527Spritely's Goblins library to support libp2p as a netlayer.")
2528 (license license:asl2.0))))