projects/guix·blob java-team · refs

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