diff options
Diffstat (limited to 'gnu/packages/golang-web.scm')
-rw-r--r-- | gnu/packages/golang-web.scm | 398 |
1 files changed, 389 insertions, 9 deletions
diff --git a/gnu/packages/golang-web.scm b/gnu/packages/golang-web.scm index c5c3efb7c5..85787d883f 100644 --- a/gnu/packages/golang-web.scm +++ b/gnu/packages/golang-web.scm @@ -16,16 +16,19 @@ ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> ;;; Copyright © 2022 Adam Kandur <kefironpremise@gmail.com> +;;; Copyright © 2022 Dhruvin Gandhi <contact@dhruvin.dev> ;;; Copyright © 2022 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2022 jgart via Guix-patches via <guix-patches@gnu.org> ;;; Copyright © 2022 muradm <mail@muradm.net> ;;; Copyright © 2022, 2023 Sharlatan Hellseher <sharlatanus@gmail.com> +;;; Copyright © 2023 Filip Lajszczak <filip@lajszczak.dev> ;;; Copyright © 2023 Fries <fries1234@protonmail.com> ;;; Copyright © 2023 Hilton Chain <hako@ultrarare.space> ;;; Copyright © 2023 Katherine Cox-Buday <cox.katherine.e@gmail.com> ;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr> ;;; Copyright © 2023 Thomas Ieong <th.ieong@free.fr> ;;; Copyright © 2023, 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com> +;;; Copyright © 2024 Jesse Eisses <jesse@eisses.email> ;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com> ;;; ;;; This file is part of GNU Guix. @@ -102,6 +105,28 @@ API service accounts for Go.") (license license:asl2.0))) +(define-public go-git-sr-ht-emersion-gqlclient + (package + (name "go-git-sr-ht-emersion-gqlclient") + (version "0.0.0-20230820050442-8873fe0204b9") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~emersion/gqlclient") + (commit (go-version->git-ref version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0x64kcryawdr0daq1w6fada60zqrddw75yi397835b9ij7wb5gmh")))) + (build-system go-build-system) + (arguments + (list #:import-path "git.sr.ht/~emersion/gqlclient")) + (home-page "https://git.sr.ht/~emersion/gqlclient") + (synopsis "GraphQL client and code generator") + (description + "This package provides a GraphQL client and code generator for Go.") + (license license:expat))) + (define-public go-github-com-alexliesenfeld-health (package (name "go-github-com-alexliesenfeld-health") @@ -1563,6 +1588,288 @@ which produce colorized output using github.com/fatih/color.") (description "OpenTracing-Go is a Go implementation of the OpenTracing API.") (license license:asl2.0))) +(define-public go-github-com-pion-dtls + (package + (name "go-github-com-pion-dtls") + (version "1.5.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pion/dtls") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qc5dbgh31lilbd1lpmajj1fjzy4jx9iadzqgl9jd1ry9fj3ly1d")))) + (build-system go-build-system) + (arguments + (list + ;; XXX: TestClientCertificate: Client failed(x509: certificate relies on + ;; legacy Common Name field, use SANs instead) + #:tests? #f + #:import-path "github.com/pion/dtls")) + (propagated-inputs + (list go-github-com-pion-logging + go-github-com-pion-transport + go-golang-org-x-crypto)) + (home-page "https://github.com/pion/dtls") + (synopsis "DTLS 1.2 Server/Client implementation for Go") + (description + "This package provides a native +@url{https://datatracker.ietf.org/doc/html/rfc6347, DTLS 1.2} implementation +in Golang.") + (license license:expat))) + +(define-public go-github-com-pion-dtls-v2 + (package + (inherit go-github-com-pion-dtls) + (name "go-github-com-pion-dtls-v2") + (version "2.2.11") + (source + (origin + (inherit (package-source go-github-com-pion-dtls)) + (uri (git-reference + (url "https://github.com/pion/dtls") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "10nn9349f7snqkzncda5m013fgnzicrcxi6pb6ghc0vb6rhqkf30")))) + (arguments + (list + #:go go-1.21 + #:import-path "github.com/pion/dtls/v2")) + (native-inputs + (list go-github-com-stretchr-testify)) + (propagated-inputs + (list go-github-com-pion-logging + go-github-com-pion-transport-v2 + go-github-com-pion-transport-v3 + go-golang-org-x-crypto + go-golang-org-x-net)))) + +(define-public go-github-com-pion-mdns + (package + (name "go-github-com-pion-mdns") + (version "2.0.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pion/mdns/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "03675hx82lx3c8akkxdbkch1z4dbq54r05jk6jgdyd7mrdh9k4lm")))) + (build-system go-build-system) + (arguments + (list + ;; Tests are implemented in GitHub Actions and require aditional + ;; packaging, see + ;; <https://github.com/pion/.goassets/blob/master/.github/workflows/test.reusable.yml>. + #:tests? #f + #:go go-1.21 + #:import-path "github.com/pion/mdns")) + (native-inputs + (list go-github-com-stretchr-testify)) + (propagated-inputs + (list go-github-com-pion-logging + go-github-com-pion-transport-v3 + go-golang-org-x-net)) + (home-page "https://github.com/pion/mdns/") + (synopsis "Pure Go implementation of Multicast DNS") + (description + "This package implements a mDNS (multicast DNS) used by +@url{https://github.com/pion, Pion}.") + (license license:expat))) + +(define-public go-github-com-pion-rtp + (package + (name "go-github-com-pion-rtp") + (version "1.8.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pion/rtp") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1vrdvswvvbqq83kbjlyblarbsn5v0sjcwrcv03nncd605cggnbkx")))) + (build-system go-build-system) + (arguments + (list + #:go go-1.21 + #:import-path "github.com/pion/rtp")) + (propagated-inputs + (list go-github-com-pion-randutil)) + (home-page "https://github.com/pion/rtp") + (synopsis "Go implementation of RTP") + (description + "This package provides a @acronym{Real-time Transport Protocol, RTP} +packetizer and depacketizer.") + (license license:expat))) + +(define-public go-github-com-pion-stun + (package + (name "go-github-com-pion-stun") + (version "0.6.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pion/stun") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0172fcm1xvzvy3d5lcpscayzpf3i5w4bpfydifdc9l4n2wslx0sm")))) + (build-system go-build-system) + (arguments + (list + #:go go-1.21 + #:import-path "github.com/pion/stun")) + (native-inputs + (list go-github-com-stretchr-testify)) + (propagated-inputs + (list go-github-com-pion-dtls-v2 + go-github-com-pion-logging + go-github-com-pion-transport-v2)) + (home-page "https://github.com/pion/stun") + (synopsis "Go implementation of STUN") + (description + "Package @code{stun} implements Session Traversal Utilities for ++NAT (STUN) (@url{https://tools.ietf.org/html/rfc5389, RFC 5389}) protocol and ++@url{https://pkg.go.dev/github.com/pion/stun#Client, client} with no external ++dependencies and zero allocations in hot paths. Client ++@url{https://pkg.go.dev/github.com/pion/stun#WithRTO, supports} automatic ++request retransmissions.") + (license license:expat))) + +(define-public go-github-com-pion-stun-v2 + (package + (inherit go-github-com-pion-stun) + (name "go-github-com-pion-stun-v2") + (version "2.0.0") + (source + (origin + (inherit (package-source go-github-com-pion-stun)) + (uri (git-reference + (url "https://github.com/pion/stun") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0zli55ls5izpr6cw0wj0gy44872xn9rk20i8ay9cfk7j2rb60y60")))) + (arguments + (list + #:go go-1.21 + #:import-path "github.com/pion/stun/v2")) + (propagated-inputs + (list go-github-com-pion-dtls-v2 + go-github-com-pion-logging + go-github-com-pion-transport-v3 + go-golang-org-x-crypto + go-golang-org-x-net)))) + +(define-public go-github-com-pion-transport + (package + (name "go-github-com-pion-transport") + (version "0.14.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pion/transport") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0331kywqaa6fymc64wrqgwnxlhx31qdf299i927vifx1wdcl9ikp")))) + (build-system go-build-system) + (arguments + (list + ;; Source-only package + #:tests? #f + #:import-path "github.com/pion/transport" + #:phases + #~(modify-phases %standard-phases + (delete 'build)))) + (native-inputs + (list go-github-com-stretchr-testify)) + (propagated-inputs + (list go-github-com-pion-logging + go-golang-org-x-net + go-golang-org-x-sys)) + (home-page "https://github.com/pion/transport") + (synopsis "Golang networking related functions") + (description + "This package implements a various networking related functions used +throughout the @url{https://github.com/pion, Pion} modules.") + (license license:expat))) + +(define-public go-github-com-pion-transport-v2 + (package + (inherit go-github-com-pion-transport) + (name "go-github-com-pion-transport-v2") + (version "2.2.5") + (source + (origin + (inherit (package-source go-github-com-pion-transport)) + (uri (git-reference + (url "https://github.com/pion/transport/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "00q3v37l56yr1ch25g5w70jy8y923csbvy4krvy4dv3h5f1mdpmf")))) + (arguments + (list + #:import-path "github.com/pion/transport/v2")))) + +(define-public go-github-com-pion-transport-v3 + (package + (inherit go-github-com-pion-transport) + (name "go-github-com-pion-transport-v3") + (version "3.0.2") + (source + (origin + (inherit (package-source go-github-com-pion-transport)) + (uri (git-reference + (url "https://github.com/pion/transport/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0j7ljkbyf2qd7daxg7d1rd6c92md64agi59b69g6jyqpz5jww998")))) + (arguments + (list + #:import-path "github.com/pion/transport/v3")))) + +(define-public go-github-com-pires-go-proxyproto + (package + (name "go-github-com-pires-go-proxyproto") + (version "0.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pires/go-proxyproto") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1p18w555xp187fl807h1yd092cvs8jarp98pa76zl84rxlk4k2h4")))) + (build-system go-build-system) + (arguments + (list + #:go go-1.18 + #:import-path "github.com/pires/go-proxyproto")) + (home-page "https://github.com/pires/go-proxyproto") + (synopsis "Implementation of the PROXY protocol") + (description + "Package proxyproto implements Proxy Protocol (v1 and v2) parser and +writer, as per specification: +@@url{https://www.haproxy.org/download/2.3/doc/proxy-protocol.txt}. It is to +be used in one of or both proxy clients and proxy servers that need to support +said protocol. Both protocol versions, 1 (text-based) and 2 (binary-based) +are supported. @acronym{TLV, tag-length-value} parsers extensions comming with +this library support AWS, Azure and GCP.") + (license license:asl2.0))) + (define-public go-github-com-pkg-sftp (package (name "go-github-com-pkg-sftp") @@ -1690,16 +1997,38 @@ the Go standard library}.") (build-system go-build-system) (arguments (list - ;; XXX More packages required... - #:tests? #f #:go go-1.21 - #:import-path "github.com/quic-go/quic-go")) + #:import-path "github.com/quic-go/quic-go" + #:phases + #~(modify-phases %standard-phases + ;; TODO: Figure out why some tests fail. + (add-after 'unpack 'remove-failing-tests + (lambda* (#:key import-path #:allow-other-keys) + (with-directory-excursion (string-append "src/" import-path) + (for-each delete-file + (list "integrationtests/self/timeout_test.go" + "server_test.go"))))) + ;; Test steps are taken from GitHub Actions - + ;; <https://github.com/quic-go/quic-go/blob/v0.42.0/.github/workflows/unit.yml>. + (replace 'check + (lambda* (#:key tests? import-path #:allow-other-keys) + (when tests? + (with-directory-excursion (string-append "src/" import-path) + (invoke "ginkgo" "-r" "-v" + (string-append "--procs=" + (number->string (parallel-job-count))) + "--randomize-all" + "--randomize-suites" + "--skip-package" + "integrationtests")))))))) + (native-inputs + (list go-ginkgo + go-github-com-onsi-ginkgo-v2 + go-go-uber-org-mock + go-golang-org-x-time)) (propagated-inputs - (list go-github-com-cheekybits-genny - go-github-com-golang-protobuf-proto - go-github-com-marten-seemann-chacha20 + (list go-github-com-francoispqt-gojay go-github-com-quic-go-qpack - go-github-com-quic-go-qtls-go1-20 go-golang-org-x-crypto go-golang-org-x-exp go-golang-org-x-net @@ -1712,8 +2041,32 @@ the Go standard library}.") protocol.") (license license:expat))) -(define-public go-github-com-lucas-clemente-quic-go - (deprecated-package "go-github-com-lucas-clemente-quic-go" go-github-com-quic-go-quic-go)) +(define-public go-github-com-sherclockholmes-webpush-go + (package + (name "go-github-com-sherclockholmes-webpush-go") + (version "1.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/SherClockHolmes/webpush-go") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qv16zvkd1c7q81v2ai8pfz590fxdrk4lfbgyymln0q7jn5wlvki")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/SherClockHolmes/webpush-go")) + (propagated-inputs + (list go-github-com-golang-jwt-jwt go-golang-org-x-crypto)) + (home-page "https://github.com/SherClockHolmes/webpush-go") + (synopsis "Web Push API Encryption with VAPID support") + (description + "Web Push API Encryption with +@url{https://datatracker.ietf.org/doc/html/draft-ietf-webpush-vapid-01, VAPID} +support.") + (license license:expat))) (define-public go-github-com-sourcegraph-jsonrpc2 (package @@ -2065,6 +2418,33 @@ Signing and Encryption set of standards. This includes support for JSON Web Encryption, JSON Web Signature, and JSON Web Token standards.") (license license:asl2.0))) +(define-public go-nhooyr-io-websocket + (package + (name "go-nhooyr-io-websocket") + (version "1.8.11") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nhooyr/websocket") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "019pm2bkzwyvzl61127nqzihchk35q5xh57wy50aa2syn9214fxm")))) + (build-system go-build-system) + (arguments + (list + ;; Tests require additional dependencies like `wasmbrowsertest`. + #:tests? #f + #:import-path "nhooyr.io/websocket")) + (home-page "https://nhooyr.io/websocket") + (synopsis "Minimal and idiomatic WebSocket library for Go") + (description + "Package websocket implements the +@@url{https://rfc-editor.org/rfc/rfc6455.html,RFC 6455} @code{WebSocket} +protocol.") + (license license:isc))) + ;;; ;;; Executables: ;;; |