summary refs log tree commit diff
path: root/gnu/packages/golang.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/golang.scm')
-rw-r--r--gnu/packages/golang.scm756
1 files changed, 629 insertions, 127 deletions
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 70ddef52f1..cf15b81fe7 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2018, 2019, 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
+;;; Copyright © 2018, 2019, 2020, 2023 Katherine Cox-Buday <cox.katherine.e@gmail.com>
 ;;; Copyright © 2019 Giovanni Biscuolo <g@xelera.eu>
 ;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2019, 2020, 2021 Arun Isaac <arunisaac@systemreboot.net>
@@ -626,9 +626,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                  (("^#!.*") "#!/usr/bin/env perl\n"))))))))
     (native-inputs
      `(("go-fix-script-tests.patch" ,(search-patch "go-fix-script-tests.patch"))
-       ,@(if (not (member (%current-system) (package-supported-systems go-1.4)))
-             (alist-replace "go" (list gccgo-10) (package-native-inputs go-1.14))
-             (package-native-inputs go-1.14))))))
+       ,@(package-native-inputs go-1.14)))))
 
 (define-public go-1.17
   (package
@@ -850,7 +848,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
   (package
     (inherit go-1.17)
     (name "go")
-    (version "1.18.6")
+    (version "1.18.10")
     (source
      (origin
        (method git-fetch)
@@ -860,13 +858,13 @@ in the style of communicating sequential processes (@dfn{CSP}).")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1s2xwgd3mfbjdf7ls9gyj7n1lbqc4276qkr3znyq9694isj1ak20"))))))
+         "0ph3ajfq5q8j3nd91pfb25pm21aiphc58zf7fwis0h3a6nqbdyq9"))))))
 
 (define-public go-1.19
   (package
     (inherit go-1.18)
     (name "go")
-    (version "1.19.1")
+    (version "1.19.5")
     (source
      (origin
        (method git-fetch)
@@ -876,7 +874,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1gah4zhbkgbwrrryfmzdv2qwi1rgxk10q2r3hnlcb1dybf9c1i1w"))))
+         "0ah4l01h8qj0vj9668bdgr5m69fq16dz1fjlj332vhysxc6bkc27"))))
     (arguments
      (substitute-keyword-arguments (package-arguments go-1.18)
        ((#:phases phases)
@@ -2855,36 +2853,73 @@ expressing configuration which is easy for both humans and machines to read.")
     (home-page "https://github.com/hashicorp/hcl")
     (license license:mpl2.0)))
 
+(define-public go-golang-org-x-exp
+  (package
+    (name "go-golang-org-x-exp")
+    (version "0.0.0-20221004215720-b9f4876ce741")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://go.googlesource.com/exp")
+                    (commit (go-version->git-ref version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "030b929xyg8dpp6f4qbyg63msi6zgzj9sqmvnyphfcrjkqf7nr41"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "golang.org/x/exp"
+       ;; Source-only package
+       #:tests? #f
+       #:phases (modify-phases %standard-phases
+                  (delete 'build))))
+    (home-page "https://golang.org/x/exp")
+    (synopsis "Experimental and deprecated Go packages")
+    (description
+     "This subrepository holds experimental and deprecated (in the @code{old}
+directory) packages.")
+    (license license:bsd-3)))
+
 (define-public go-golang-org-x-tools
-  (let ((commit "8b927904ee0dec805c89aaf9172f4459296ed6e8")
-        (revision "0"))
-    (package
-      (name "go-golang-org-x-tools")
-      (version (git-version "0.1.3" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/tools")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-tools-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "0iinb70xhcjsddgi42ia1n745lx2ibnjdm6m2v666qrk3876vpck"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/tools"
+  (package
+    (name "go-golang-org-x-tools")
+    (version "0.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://go.googlesource.com/tools")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "08kx2nndq3sr6xai7403mbsqvz5shxmp2icylfr2fmwagr59cb2n"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; gopls versions are tagged separately, and it is a
+           ;; separate Guix package.
+           (delete-file-recursively "gopls")))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "golang.org/x/tools"
+       ;; Source-only package
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
          ;; Source-only package
-         #:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           ;; Source-only package
-           (delete 'build))))
-      (synopsis "Tools that support the Go programming language")
-      (description "This package provides miscellaneous tools that support the
+         (delete 'build))))
+    (propagated-inputs
+     (list
+      go-github-com-yuin-goldmark
+      go-golang-org-x-mod
+      go-golang-org-x-net
+      go-golang-org-x-sys))
+    (synopsis "Tools that support the Go programming language")
+    (description "This package provides miscellaneous tools that support the
 Go programming language.")
-      (home-page "https://go.googlesource.com/tools/")
-      (license license:bsd-3))))
+    (home-page "https://go.googlesource.com/tools/")
+    (license license:bsd-3)))
 
 (define-public go-golang-org-x-crypto
   (let ((commit "2aa609cf4a9d7d1126360de73b55b6002f9e052a")
@@ -2919,6 +2954,116 @@ for the Go language.")
       (home-page "https://go.googlesource.com/crypto/")
       (license license:bsd-3))))
 
+(define-public govulncheck
+  (package
+    (name "govulncheck")
+    (version "0.0.0-20221229164908-ebf31f7dc3ef")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://go.googlesource.com/vuln")
+                    (commit (go-version->git-ref version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1w055g90k7anrrcvfrsqklxzl9pl0vqdiwpayj9f0brwys9xhj7d"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "golang.org/x/vuln"
+       #:go ,go-1.19
+       #:install-source? #f
+       #:phases ,#~(modify-phases %standard-phases
+                     (add-after 'unpack 'remove-go-mod-tidy
+                       (lambda _
+                         (substitute* "src/golang.org/x/vuln/checks.bash"
+                           (("go mod tidy")
+                            #$(file-append coreutils-minimal "/bin/true")))))
+                     (replace 'build
+                       (lambda arguments
+                         (apply (assoc-ref %standard-phases
+                                           'build)
+                                `(,@arguments #:import-path
+                                  "golang.org/x/vuln/cmd/govulncheck")))))))
+    (native-inputs (list coreutils-minimal))
+    (inputs (list go-golang-org-x-sys
+                  go-github-com-google-renameio
+                  go-github-com-burntsushi-toml
+                  go-mvdan-cc-unparam
+                  go-honnef-co-go-tools
+                  go-golang-org-x-tools
+                  go-golang-org-x-sync
+                  go-golang-org-x-mod
+                  go-golang-org-x-exp
+                  go-github-com-google-go-cmp-cmp
+                  go-github-com-google-go-cmdtest
+                  go-github-com-client9-misspell))
+    (home-page "https://golang.org/x/vuln")
+    (synopsis "Go Vulnerability Management")
+    (description
+     "This repository contains packages for accessing and analyzing data from
+the @url{https://vuln.go.dev,Go Vulnerability Database}.")
+    (license license:bsd-3)))
+
+(define-public go-golang-org-x-vuln
+  (package
+    (inherit govulncheck)
+    (name "go-golang-org-x-vuln")
+    (arguments
+     `(#:import-path "golang.org/x/vuln"
+       #:tests? #f
+       #:install-source? #t
+       #:phases (modify-phases %standard-phases
+                  (delete 'build))))
+    (propagated-inputs (package-inputs govulncheck))
+    (native-inputs '())
+    (inputs '())))
+
+(define-public gopls
+  (package
+    (name "gopls")
+    (version "0.11.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://go.googlesource.com/tools")
+                    (commit (string-append "gopls/v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1l9y1rp7x51s6dnjn227fhdlnz4z1h41jn3x1aq49qki241w7m73"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "golang.org/x/tools/gopls"
+       #:unpack-path "golang.org/x/tools"
+       #:install-source? #f
+       #:phases (modify-phases %standard-phases
+                  (add-before 'unpack 'override-tools
+                    (lambda _
+                      (delete-file-recursively "src/golang.org/x/tools"))))))
+    (propagated-inputs (list go-github-com-google-go-cmp-cmp
+                             go-github-com-jba-printsrc
+                             go-github-com-jba-templatecheck
+                             go-github-com-sergi-go-diff
+                             go-golang-org-x-mod
+                             go-golang-org-x-sync
+                             go-golang-org-x-sys
+                             go-golang-org-x-text
+                             go-gopkg-in-yaml-v3
+                             go-honnef-co-go-tools
+                             go-github-com-burntsushi-toml
+                             go-github-com-google-safehtml
+                             go-golang-org-x-exp
+                             go-mvdan-cc-gofumpt
+                             go-golang-org-x-vuln
+                             go-mvdan-cc-xurls))
+    (home-page "https://golang.org/x/tools/gopls")
+    (synopsis "Official language server for the Go language")
+    (description
+     "Pronounced ``Go please'', this is the official Go language server
+developed by the Go team.  It provides IDE features to any LSP-compatible
+editor.")
+    (license license:bsd-3)))
+
 (define-public go-github-com-protonmail-go-crypto
   (package
     (name "go-github-com-protonmail-go-crypto")
@@ -3021,11 +3166,11 @@ processing.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-sync
-  (let ((commit "6e8e738ad208923de99951fe0b48239bfd864f28")
+  (let ((commit "8fcdb60fdcc0539c5e357b2308249e4e752147f1")
         (revision "1"))
     (package
       (name "go-golang-org-x-sync")
-      (version (git-version "0.0.0" revision commit))
+      (version (git-version "0.1.0" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -3034,17 +3179,17 @@ processing.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1avk27pszd5l5df6ff7j78wgla46ir1hhy2jwfl9a3c0ys602yx9"))))
+                  "07qrhni6f5hh5p95k1yk6s4wsj341q663irvx6rllrxfsymj6a0z"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/sync"
          #:tests? #f
          ;; Source-only package
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'build))))
+         #:phases (modify-phases %standard-phases
+                    (delete 'build))))
       (synopsis "Additional Go concurrency primitives")
-      (description "This package provides Go concurrency primitives in addition
+      (description
+       "This package provides Go concurrency primitives in addition
 to the ones provided by the language and “sync” and “sync/atomic”
 packages.")
       (home-page "https://go.googlesource.com/sync/")
@@ -3190,28 +3335,27 @@ time.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-mod
-  (let ((commit "0f08993efd8a8ec67e75bcccf86b0e1569b0ab0a")
+  (let ((commit "7c05a442b7c1d1a107879b4a090bb5a38d3774a1")
         (revision "0"))
     (package
       (name "go-golang-org-x-mod")
-      (version (git-version "0.5.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/golang/mod")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "0pl0jc5jvg7hxj4z66zg6kglnq5g7li09f3k9klwvyr4jx5dw88k"))))
+      (version (git-version "0.7.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/golang/mod")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "14r24fq3kn84k2y2jvvg8hwpy52a3q429pimrdwl5zwknbr2awmh"))))
       (build-system go-build-system)
       (arguments
        '(#:import-path "golang.org/x/mod/"
          #:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           ;; Source-only package
-           (delete 'build))))
+         #:phases (modify-phases %standard-phases
+                    ;; Source-only package
+                    (delete 'build))))
       (home-page "https://golang.org/x/mod")
       (synopsis "Tools to work directly with Go module mechanics")
       (description
@@ -3227,23 +3371,23 @@ loading algorithms.")
 (define-public go-github-com-burntsushi-toml
   (package
     (name "go-github-com-burntsushi-toml")
-    (version "0.3.1")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/BurntSushi/toml")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6"))))
+    (version "1.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/BurntSushi/toml")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1v9czq4hsyvdz7yx70y6sgq77wmrgfmn09r9cj4w85z38jqnamv7"))))
     (build-system go-build-system)
     (arguments
      '(#:import-path "github.com/BurntSushi/toml"))
     (home-page "https://github.com/BurntSushi/toml")
     (synopsis "Toml parser and encoder for Go")
-    (description "This package is toml parser and encoder for Go.  The interface
+    (description
+     "This package is toml parser and encoder for Go.  The interface
 is similar to Go's standard library @code{json} and @code{xml} package.")
     (license license:expat)))
 
@@ -4785,6 +4929,51 @@ Looks for an identical word on a list of words, if none is found, look for a
 similar word.")
       (license license:expat))))
 
+(define-public misspell
+  (package
+    (name "misspell")
+    (version "0.3.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/client9/misspell")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1vwf33wsc4la25zk9nylpbp9px3svlmldkm0bha4hp56jws4q9cs"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/client9/misspell"
+       #:phases (modify-phases %standard-phases
+                  (replace 'build
+                    (lambda arguments
+                      (apply (assoc-ref %standard-phases
+                                        'build)
+                             `(,@arguments #:import-path
+                               "github.com/client9/misspell/cmd/misspell")))))))
+    (home-page "https://github.com/client9/misspell")
+    (synopsis "Correct commonly misspelled English words in source files")
+    (description
+     "misspell assists with correcting commonly misspelled English words in
+source files.  A neutral variety of English is used by default, but a US or UK
+locale can be selected.")
+    (license license:expat)))
+
+(define-public go-github-com-client9-misspell
+  (package
+    (inherit misspell)
+    (name "go-github-com-client9-misspell")
+    (arguments
+     `(#:import-path "github.com/client9/misspell"
+       #:tests? #f
+       #:install-source? #t
+       #:phases (modify-phases %standard-phases
+                  (delete 'build))))
+    (propagated-inputs (package-inputs misspell))
+    (native-inputs '())
+    (inputs '())))
+
 (define-public go-github-com-stevedonovan-luar
   (let ((commit "22d247e5366095f491cd83edf779ee99a78f5ead")
         (revision "0"))
@@ -6998,28 +7187,27 @@ colorized or SGR defined output to the standard output.")
 (define-public go-github-com-google-go-cmp-cmp
   (package
     (name "go-github-com-google-go-cmp-cmp")
-    (version "0.5.2")
+    (version "0.5.9")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/google/go-cmp")
-                     (commit (string-append "v" version))))
+                    (url "https://github.com/google/go-cmp")
+                    (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0qchy411jm9q2l9mf7x3ry2ycaqp9xdhf2nx14qrpzcxfigv2705"))))
+                "0a13m7l1jrysa7mrlmra8y7n83zcnb23yjyg3a609p8i9lxkh1wm"))))
     (build-system go-build-system)
     (arguments
      '(#:import-path "github.com/google/go-cmp/cmp"
        #:unpack-path "github.com/google/go-cmp"))
-    (propagated-inputs
-     (list go-golang-org-x-xerrors))
     (synopsis "Determine equality of values in Go")
-    (description "This package provides a more powerful and safer
-alternative to @code{reflect.DeepEqual} for comparing whether two values
-are semantically equal in Go (for writing tests).")
-    (home-page "https://godoc.org/github.com/google/go-cmp/cmp")
-    (license license:asl2.0)))
+    (description
+     "This package is intended to be a more powerful and safer
+alternative to @@code{reflect.DeepEqual} for comparing whether two values are
+semantically equal.")
+    (home-page "https://github.com/google/go-cmp")
+    (license license:bsd-3)))
 
 (define-public go-github-com-google-uuid
   (package
@@ -7043,6 +7231,28 @@ are semantically equal in Go (for writing tests).")
 4122 and DCE 1.1: Authentication and Security Services.")
     (license license:bsd-3)))
 
+(define-public go-github-com-google-gopacket
+  (package
+    (name "go-github-com-google-gopacket")
+    (version "1.1.19")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/google/gopacket")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "048qwm2n0wrpql4qqgd7jyynn3gk069yvqbxnshlayzmbhf87ls4"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/google/gopacket"))
+    (home-page "https://github.com/google/gopacket")
+    (synopsis "Packet processing capabilities library")
+    (description
+     "This package provides packet processing capabilities for Go.")
+    (license license:bsd-3)))
+
 (define-public go-github-com-google-goterm
   (let ((commit "fc88cf888a3fa99ecc23d1efc1a44284268457d3")
         (revision "1"))
@@ -7335,6 +7545,29 @@ This package is a successor to @code{go-github-com-golang-protobuf} with an
 improved and cleaner API.")
     (license license:bsd-3)))
 
+(define-public go-github-com-macronut-go-tproxy
+  (package
+    (name "go-github-com-macronut-go-tproxy")
+    (version "0.0.0-20190726054950-ef7efd7f24ed")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/FutureProtocolLab/go-tproxy")
+                    (commit (go-version->git-ref version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0jibsg0xhsn0h1jq4g9qd4nr58w43y8majlwfri9ffk2cbfrwqdr"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/macronut/go-tproxy"))
+    (home-page "https://github.com/FutureProtocolLab/go-tproxy")
+    (synopsis "Linux Transparent Proxy library")
+    (description
+     "Golang TProxy provides an easy to use wrapper for the Linux Transparent
+Proxy functionality.")
+    (license license:expat)))
+
 (define-public go-github-com-mattn-go-zglob
   (package
     (name "go-github-com-mattn-go-zglob")
@@ -8002,7 +8235,7 @@ converts it into syntax highlighted HTML, ANSI-coloured text, etc.")
 (define-public go-github-com-andybalholm-cascadia
   (package
     (name "go-github-com-andybalholm-cascadia")
-    (version "1.0.0")
+    (version "1.3.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -8011,7 +8244,7 @@ converts it into syntax highlighted HTML, ANSI-coloured text, etc.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "09j8cavbhqqdxjqrkwbc40g8p0i49zf3184rpjm5p2rjbprcghcc"))))
+                "0zgc9fjkn7d66cnmgnmalr9lrq4ii1spap95pf2x1hln4pflib5s"))))
     (build-system go-build-system)
     (arguments
      `(#:import-path "github.com/andybalholm/cascadia"))
@@ -8489,6 +8722,57 @@ This makes it virtually free to implement mocks and testing over
 file system operations.")
     (license license:asl2.0)))
 
+(define-public go-github-com-jba-printsrc
+  (package
+    (name "go-github-com-jba-printsrc")
+    (version "0.2.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/jba/printsrc")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1gyy3kmb5a5i710wkv3b7ah7i7sz5sdc7v3sab5m4rxch1sd2fpj"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/jba/printsrc"
+       ;; TODO: Open bug; expecting time.Local, but when local=UTC, we get time.UTC
+       #:tests? #f))
+    (home-page "https://github.com/jba/printsrc")
+    (synopsis "Prints Go values as sourcecode")
+    (description
+     "Package printsrc prints Go values as Go source.  It strives to render
+legal Go source code, and returns an error when detects that it cannot.")
+    (license license:expat)))
+
+(define-public go-github-com-jba-templatecheck
+  (package
+    (name "go-github-com-jba-templatecheck")
+    (version "0.6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/jba/templatecheck")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "12iwkidz4p6wdl65jfddqxls80mv879k2rpb42dj7y4dja5advlc"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/jba/templatecheck"))
+    (propagated-inputs (list go-github-com-google-safehtml))
+    (home-page "https://github.com/jba/templatecheck")
+    (synopsis "Checks Go templates for problems")
+    (description
+     "Package templatecheck checks Go templates for problems.  It can detect
+many errors that are normally caught only during execution.  Use templatecheck
+in tests to find template errors early, and along template execution paths
+that might only rarely be reached.")
+    (license license:expat)))
+
 (define-public go-github-com-jbenet-go-context
   (let ((commit "d14ea06fba99483203c19d92cfcd13ebe73135f4")
         (revision "1"))
@@ -8658,30 +8942,26 @@ temporal directories.")
     (license license:asl2.0)))
 
 (define-public go-github-com-pkg-diff
-  (let ((commit "531926345625d489a6b56f860a569e68245ace36")
-        (revision "1"))
-    (package
-      (name "go-github-com-pkg-diff")
-      (version (git-version "0.0.1" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/pkg/diff")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1770m7qhww6lm0wj1v3mhv6hwa2v92p4w2fqxj1xyrg5dd58d944"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "github.com/pkg/diff"))
-      (native-inputs
-       (list go-github-com-sergi-go-diff))
-      (home-page "https://github.com/pkg/diff/")
-      (synopsis "Create and print diffs")
-      (description
-       "This package provides a Go library to create and print diffs.")
-      (license license:bsd-3))))
+  (package
+    (name "go-github-com-pkg-diff")
+    (version "0.0.0-20210226163009-20ebb0f2a09e")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pkg/diff")
+                    (commit "20ebb0f2a09e612109b224b32f79370409108bcc")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1g3dzgwhz4fx3ddpsv7fsa4r1v5clsp2lbw2qrkdk9y1vc5gi8yi"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/pkg/diff"))
+    (home-page "https://github.com/pkg/diff/")
+    (synopsis "Create and print diffs")
+    (description
+     "This package provides a Go library to create and print diffs.")
+    (license license:bsd-3)))
 
 (define-public go-github-com-twpayne-go-shell
   (package
@@ -9030,7 +9310,7 @@ the necessary APIs to build a wide array of higher-level primitives.")
 (define-public go-github-com-rogpeppe-go-internal
   (package
     (name "go-github-com-rogpeppe-go-internal")
-    (version "1.6.1")
+    (version "1.9.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -9039,7 +9319,7 @@ the necessary APIs to build a wide array of higher-level primitives.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "00j2vpp1bsggdvw1winkz23mg0q6drjiir5q0k49pmqx1sh7106l"))))
+                "0bh08k8fy1qcc0vzyv0xkg0sx5kjx348zd1dpjmp3rbrr6xrpaaw"))))
     (build-system go-build-system)
     (arguments
      `(#:import-path "github.com/rogpeppe/go-internal"
@@ -9048,6 +9328,8 @@ the necessary APIs to build a wide array of higher-level primitives.")
        #:phases
        (modify-phases %standard-phases
          (delete 'build))))
+    (propagated-inputs
+     (list go-github-com-pkg-diff))
     (home-page "https://github.com/rogpeppe/go-internal/")
     (synopsis "Internal packages from the Go standard library")
     (description "This repository factors out an opinionated selection of
@@ -9071,9 +9353,9 @@ Included are the following:
 @end itemize\n")
     (license license:bsd-3)))
 
-(define-public gopkg-in-errgo-fmt-errors
+(define-public go-gopkg-in-errgo-fmt-errors
   (package
-    (name "gopkg-in-errgo-fmt-errors")
+    (name "go-gopkg-in-errgo-fmt-errors")
     (version "2.1.0")
     (source (origin
               (method git-fetch)
@@ -9086,7 +9368,7 @@ Included are the following:
                 "065mbihiy7q67wnql0bzl9y1kkvck5ivra68254zbih52jxwrgr2"))))
     (build-system go-build-system)
     (arguments
-     `(#:import-path "gopkg.in/errgo.v2/fmt/errors"
+     `(#:import-path "gopkg.in/errgo.v2"
        #:tests? #f
        ;; Source-only package
        #:phases
@@ -9674,6 +9956,173 @@ atomic access.")
      "@code{multierr} allows combining one or more Go errors together.")
     (license license:expat)))
 
+(define-public gofumpt
+  (package
+    (name "gofumpt")
+    (version "0.4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mvdan/gofumpt")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "13ahi8q1a9h4dj6a7xp95c79d5svz5p37b6z91aswbq043qd417k"))
+              (modules '((guix build utils)))
+              (snippet `(let ((fixed-version (string-append ,version
+                                                            " (GNU Guix)")))
+                          ;; Gofumpt formats Go files, and therefore modifies
+                          ;; them. To help the developers diagnose issues, it
+                          ;; replaces any occurrence of a `//gofumpt:diagnose`
+                          ;; comment with some debugging information which
+                          ;; includes the module version. In the event gofumpt
+                          ;; was built without module support, it falls back
+                          ;; to a string "(devel)". Since our build system
+                          ;; does not yet support modules, we'll inject our
+                          ;; version string instead, since this is more
+                          ;; helpful.
+                          (substitute* "internal/version/version.go"
+                            (("^const fallbackVersion.+")
+                             (format #f "const fallbackVersion = \"~a\"~%"
+                                     fixed-version)))
+                          ;; These tests rely on `//gofumpt:diagnose` comments
+                          ;; being replaced with fixed information injected
+                          ;; from the test scripts, but this requires a binary
+                          ;; compiled as a Go module. Since we can't do this
+                          ;; yet, modify the test scripts with the version
+                          ;; string we're injecting.
+                          (delete-file "testdata/script/diagnose.txtar")
+                          (substitute* (find-files "testdata/script/"
+                                                   "\\.txtar$")
+                            (("v0.0.0-20220727155840-8dda8068d9f3")
+                             fixed-version)
+                            (("(devel)")
+                             fixed-version)
+                            (("v0.3.2-0.20220627183521-8dda8068d9f3")
+                             fixed-version))))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "mvdan.cc/gofumpt"
+       #:go ,go-1.19))
+    (native-inputs (list go-gopkg-in-errgo-fmt-errors))
+    (propagated-inputs (list go-github-com-pkg-diff
+                             go-github-com-kr-text
+                             go-github-com-kr-pretty
+                             go-golang-org-x-tools
+                             go-golang-org-x-sys
+                             go-golang-org-x-sync
+                             go-golang-org-x-mod
+                             go-github-com-rogpeppe-go-internal
+                             go-github-com-google-go-cmp-cmp
+                             go-github-com-frankban-quicktest))
+    (home-page "https://mvdan.cc/gofumpt/")
+    (synopsis "Formats Go files with a stricter ruleset than gofmt")
+    (description
+     "Enforce a stricter format than @code{gofmt}, while being backwards compatible.
+That is, @code{gofumpt} is happy with a subset of the formats that
+@code{gofmt} is happy with.")
+    (license license:bsd-3)))
+
+(define-public go-mvdan-cc-gofumpt
+  (package
+    (inherit gofumpt)
+    (name "go-mvdan-cc-gofumpt")
+    (arguments
+     `(#:import-path "mvdan.cc/gofumpt"
+       #:tests? #f
+       #:install-source? #t
+       #:phases (modify-phases %standard-phases
+                  (delete 'build))))
+    (propagated-inputs (package-inputs gofumpt))
+    (native-inputs '())
+    (inputs '())))
+
+(define-public unparam
+  (package
+    (name "unparam")
+    (version "0.0.0-20221223090309-7455f1af531d")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mvdan/unparam")
+                    (commit (go-version->git-ref version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0wynf0b32azxljncw5fh9bwkxpdflvf9q1z16wyj432566yjh12c"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "mvdan.cc/unparam"
+       #:go ,go-1.19))
+    (inputs (list go-golang-org-x-sys go-golang-org-x-mod
+                  go-github-com-pkg-diff go-golang-org-x-tools
+                  go-github-com-rogpeppe-go-internal))
+    (home-page "https://mvdan.cc/unparam/")
+    (synopsis "Find unused parameters in Go")
+    (description "Reports unused function parameters and results in Go code.")
+    (license license:bsd-3)))
+
+(define-public go-mvdan-cc-unparam
+  (package
+    (inherit unparam)
+    (name "go-mvdan-cc-unparam")
+    (arguments
+     `(#:import-path "github.com/mvdan/unparam"
+       #:tests? #f
+       #:install-source? #t
+       #:phases (modify-phases %standard-phases
+                  (delete 'build))))
+    (propagated-inputs (package-inputs unparam))
+    (native-inputs '())
+    (inputs '())))
+
+(define-public xurls
+  (package
+    (name "xurls")
+    (version "2.4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mvdan/xurls")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0b040nbk1vwlk1qljavh8w8fn2r243q700n6gr8j2asmnz0xq84p"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "mvdan.cc/xurls/v2"
+       #:unpack-path "mvdan.cc/xurls/v2"
+       #:phases (modify-phases %standard-phases
+                  (replace 'build
+                    (lambda arguments
+                      (apply (assoc-ref %standard-phases
+                                        'build)
+                             `(,@arguments #:import-path
+                               "mvdan.cc/xurls/v2/cmd/xurls")))))))
+    (inputs (list go-golang-org-x-sync go-github-com-rogpeppe-go-internal))
+    (home-page "https://mvdan.cc/xurls/v2/")
+    (synopsis "Extracts URLs from text")
+    (description
+     "Xurls extracts urls from plain text using regular expressions.  It can
+be used as both a binary and a library.")
+    (license license:bsd-3)))
+
+(define-public go-mvdan-cc-xurls
+  (package
+    (inherit xurls)
+    (name "go-mvdan-cc-xurls")
+    (arguments
+     `(#:import-path "mvdan.cc/xurls"
+       #:tests? #f
+       #:install-source? #t
+       #:phases (modify-phases %standard-phases
+                  (delete 'build))))
+    (propagated-inputs (package-inputs xurls))
+    (native-inputs '())
+    (inputs '())))
+
 (define-public go-golang-org-x-lint
   (let ((commit "83fdc39ff7b56453e3793356bcff3070b9b96445")
         (revision "0"))
@@ -9729,27 +10178,26 @@ tools with similar semantics.")
 (define-public go-honnef-co-go-tools
   (package
     (name "go-honnef-co-go-tools")
-    (version "0.1.3")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/dominikh/go-tools")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "17li8jbw3cpn59kpcl3j3r2an4wkx3fc81xn0j4xgbjpkxh9493n"))))
+    (version "0.3.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/dominikh/go-tools")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "099z04v7vvwwglnps315s9fmal68xvzlc1g8m26iqi980grbwn32"))))
     (build-system go-build-system)
     (arguments
      `(#:import-path "honnef.co/go/tools"
        #:tests? #f
        ;; Source-only package
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'build))))
-    (propagated-inputs
-     (list go-golang-org-x-tools go-github-com-kisielk-gotool
-           go-github-com-burntsushi-toml))
+       #:phases (modify-phases %standard-phases
+                  (delete 'build))))
+    (propagated-inputs (list go-golang-org-x-exp go-golang-org-x-tools
+                             go-golang-org-x-mod go-github-com-kisielk-gotool
+                             go-github-com-burntsushi-toml))
     (home-page "https://honnef.co/go/tools")
     (synopsis "Staticcheck advanced Go linter")
     (description
@@ -10869,6 +11317,60 @@ production-ready implementation, compatible with the original Jsonnet C++
 implementation.")
     (license license:asl2.0)))
 
+(define-public go-github-com-google-go-cmdtest
+  (let ((commit "55ab3332a786118933ddf71544aae14951ba9bc5")
+        (revision "0"))
+    (package
+      (name "go-github-com-google-go-cmdtest")
+      (version (git-version "0.4.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/google/go-cmdtest")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "10kswvbdwissjb5mr0ys4b3ppxkxlpklqg7cr2z7rv21g2vwczbl"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/google/go-cmdtest"))
+      (propagated-inputs (list go-github-com-google-renameio
+                               go-github-com-google-go-cmp-cmp))
+      (home-page "https://github.com/google/go-cmdtest")
+      (synopsis "Testing for your CLI")
+      (description
+       "The cmdtest package simplifies testing of command-line interfaces.  It
+provides a simple, cross-platform, shell-like language to express command
+execution.  It can compare actual output with the expected output, and can
+also update a file with new \"golden\" output that is deemed correct.")
+      (license license:asl2.0))))
+
+(define-public go-github-com-google-safehtml
+  (package
+    (name "go-github-com-google-safehtml")
+    (version "0.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/google/safehtml")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0j2xjy8xrk9y9k6bqpvimj84i6hg1wwsyvwsb0axhmp49cmnrp86"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/google/safehtml"))
+    (propagated-inputs `(("go-golang-org-x-text" ,go-golang-org-x-text)))
+    (home-page "https://github.com/google/safehtml")
+    (synopsis "Safe HTML for Go")
+    (description
+     "Package safehtml provides immutable string-like types which represent values
+that are guaranteed to be safe, by construction or by escaping or sanitization,
+to use in various HTML contexts and with various DOM APIs.")
+    (license license:bsd-3)))
+
 (define-public go-github-com-google-shlex
   (package
     (name "go-github-com-google-shlex")