[PATCH 00/14] gnu: Add nebula.

OpenSubmitted by Dominic Martinez.
Details
3 participants
  • Dominic Martinez
  • Ludovic Courtès
  • Maxime Devos
Owner
unassigned
Severity
normal
D
D
Dominic Martinez wrote on 11 Mar 04:13 +0100
(address . guix-patches@gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311031356.12474-1-dom@dominicm.dev
This patch series adds Nebula, which is a scalable overlay networking tool
that uses certificates to securely create a peer-to-peer network. This is my
first big patch series, so let me know if something needs to change!

Dominic Martinez (14):
gnu: Add go-github-com-anmitsu-go-shlex.
gnu: Add go-github-com-armon-go-radix.
gnu: Add go-github-com-cespare-xxhash-v2.
gnu: Add go-github-com-cyberdelia-go-metrics-graphite.
gnu: Add go-github-com-google-gopacket.
gnu: Add go-github-com-miekg-dns.
gnu: Add go-github-com-nbrownus-go-metrics-prometheus.
gnu: Add go-github-com-songgao-water.
gnu: Add go-github-com-vishvananda-netns.
gnu: Add go-github-com-vishvananda-netlink.
gnu: Add go-google-golang-org-protobuf.
gnu: Add go-github-com-matttproud-golang-protobuf-extensions.
gnu: Add go-github-com-skip2-go-qrcode.
gnu: Add nebula.

gnu/packages/golang.scm | 353 ++++++++++++++++++++++++++++++++++++
gnu/packages/networking.scm | 79 ++++++++
2 files changed, 432 insertions(+)


base-commit: ae85a472687c3987ceac7e8cd6f793b59dc75403
--
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:18 +0100
[PATCH 01/14] gnu: Add go-github-com-anmitsu-go-shlex.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311031849.12681-1-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-anmitsu-go-shlex): New variable.
---
gnu/packages/golang.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 7080bb6e24..7d796c7620 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9752,3 +9752,25 @@ (define-public go-github-com-go-chi-chi-v5
      "@code{go-github-com-go-chi-chi-v5} is an HTTP router that lets the user
 decompose request handling into many smaller layers.")
     (license license:expat)))
+
+(define-public go-github-com-anmitsu-go-shlex
+  (package
+    (name "go-github-com-anmitsu-go-shlex")
+    (version "0.0.0-20200514113438-38f4b401e2be")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/anmitsu/go-shlex")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "17iz68yzbnr7y4s493asbagbv79qq8hvl2pkxvm6bvdkgphj8w1g"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/anmitsu/go-shlex"))
+    (home-page "https://github.com/anmitsu/go-shlex")
+    (synopsis "Simple shell-like lexical analyzer for Go")
+    (description
+      "@code{go-github-com-anmitsu-go-shlex} provides a simple lexical
+analysis like the Unix shell.")
+    (license license:expat)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:18 +0100
[PATCH 02/14] gnu: Add go-github-com-armon-go-radix.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311031849.12681-2-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-armon-go-radix): New variable.
---
gnu/packages/golang.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 7d796c7620..1a71b54d20 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9774,3 +9774,26 @@ (define-public go-github-com-anmitsu-go-shlex
       "@code{go-github-com-anmitsu-go-shlex} provides a simple lexical
 analysis like the Unix shell.")
     (license license:expat)))
+
+(define-public go-github-com-armon-go-radix
+  (package
+    (name "go-github-com-armon-go-radix")
+    (version "1.0.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/armon/go-radix")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1m1k0jz9gjfrk4m7hjm7p03qmviamfgxwm2ghakqxw3hdds8v503"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/armon/go-radix"))
+    (home-page "https://github.com/armon/go-radix")
+    (synopsis "Go implementation of Radix trees")
+    (description
+      "@code{go-github-com-armon-go-radix} implements a
+@url{http://en.wikipedia.org/wiki/Radix_tree,radix tree}.  The package only
+provides a single @code{Tree} implementation, optimized for sparse nodes.")
+    (license license:expat)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:18 +0100
[PATCH 03/14] gnu: Add go-github-com-cespare-xxhash-v2.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311031849.12681-3-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-cespare-xxhash-v2): New variable.
---
gnu/packages/golang.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 1a71b54d20..afa99d718e 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9797,3 +9797,26 @@ (define-public go-github-com-armon-go-radix
 @url{http://en.wikipedia.org/wiki/Radix_tree,radix tree}.  The package only
 provides a single @code{Tree} implementation, optimized for sparse nodes.")
     (license license:expat)))
+
+(define-public go-github-com-cespare-xxhash-v2
+  (package
+    (name "go-github-com-cespare-xxhash-v2")
+    (version "2.1.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/cespare/xxhash")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1f3wyr9msnnz94szrkmnfps9wm40s5sp9i4ak0kl92zcrkmpy29a"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/cespare/xxhash/v2"))
+    (home-page "https://github.com/cespare/xxhash")
+    (synopsis "Go implementation of the 64-bit xxHash algorithm (XXH64)")
+    (description
+      "@code{go-github-com-cespare-xxhash-v2} implements the 64-bit variant of
+xxHash (XXH64) as described at
+@url{http://cyan4973.github.io/xxHash/,http://cyan4973.github.io/xxHash/}.")
+    (license license:expat)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:18 +0100
[PATCH 04/14] gnu: Add go-github-com-cyberdelia-go-metrics-graphite.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311031849.12681-4-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-cyberdelia-go-metrics-graphite): New variable.
---
gnu/packages/golang.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index afa99d718e..6eecdbe48e 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9820,3 +9820,33 @@ (define-public go-github-com-cespare-xxhash-v2
 xxHash (XXH64) as described at
 @url{http://cyan4973.github.io/xxHash/,http://cyan4973.github.io/xxHash/}.")
     (license license:expat)))
+
+(define-public go-github-com-cyberdelia-go-metrics-graphite
+  (package
+    (name "go-github-com-cyberdelia-go-metrics-graphite")
+    (version "0.0.0-20161219230853-39f87cc3b432")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/cyberdelia/go-metrics-graphite")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1nnpwryw8i110laffyavvhx38gcd1jnpdir69y6fxxzpx06d094w"))))
+    (build-system go-build-system)
+    (propagated-inputs
+     (list go-github-com-rcrowley-go-metrics))
+    (arguments
+     '(#:import-path "github.com/cyberdelia/go-metrics-graphite"
+       ;; Tests use network
+       #:tests? #f))
+    (home-page "https://github.com/cyberdelia/go-metrics-graphite")
+    (synopsis "Graphite client for go-metrics")
+    (description
+      "This is a reporter for the
+@url{https://github.com/rcrowley/go-metrics,go-metrics} library which will post
+the metrics to Graphite.  It was originally part of the @code{go-metrics}
+library itself, but has been split off to make maintenance of both the core
+library and the client easier.")
+    (license license:bsd-2)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:18 +0100
[PATCH 05/14] gnu: Add go-github-com-google-gopacket.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311031849.12681-5-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-google-gopacket): New variable
---
gnu/packages/golang.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 6eecdbe48e..b1f23b7eac 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9850,3 +9850,27 @@ (define-public go-github-com-cyberdelia-go-metrics-graphite
 library itself, but has been split off to make maintenance of both the core
 library and the client easier.")
     (license license:bsd-2)))
+
+(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"))
+    (native-inputs
+      (list go-golang-org-x-sys go-golang-org-x-net go-golang-org-x-lint))
+    (home-page "https://github.com/google/gopacket")
+    (synopsis "Provides packet processing capabilities for Go")
+    (description
+      "@code{go-github-com-google-gopacket} provides packet decoding for the
+Go language.")
+    (license license:bsd-3)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:18 +0100
[PATCH 06/14] gnu: Add go-github-com-miekg-dns.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311031849.12681-6-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-miekg-dns): New variable.
---
gnu/packages/golang.scm | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index b1f23b7eac..d0b5041a8b 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9874,3 +9874,32 @@ (define-public go-github-com-google-gopacket
       "@code{go-github-com-google-gopacket} provides packet decoding for the
 Go language.")
     (license license:bsd-3)))
+
+(define-public go-github-com-miekg-dns
+  (package
+    (name "go-github-com-miekg-dns")
+    (version "1.1.46")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/miekg/dns")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "135hnwz3gphgdhs3cs07bvlvbc8k5lh3a75nwkyvl3ylnlf0mpnp"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/miekg/dns"))
+    (native-inputs
+     (list go-golang-org-x-tools
+           go-golang-org-x-sys
+           go-golang-org-x-sync
+           go-golang-org-x-net))
+    (home-page "https://github.com/miekg/dns")
+    (synopsis "Alternative (more granular) approach to a DNS library")
+    (description
+      "@code{go-github-com-miekg-dns} implements a full featured interface to
+the Domain Name System.  Both server and client side programming is supported.
+The package allows complete control over what is sent out to the DNS.  The API
+follows the less-is-more principle, by presenting a small, clean interface.")
+    (license license:bsd-3)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:18 +0100
[PATCH 07/14] gnu: Add go-github-com-nbrownus-go-metrics-prometheus.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311031849.12681-7-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-nbrownus-go-metrics-prometheus): New
variable.
---
gnu/packages/golang.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (38 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index d0b5041a8b..20523d9a13 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9903,3 +9903,31 @@ (define-public go-github-com-miekg-dns
 The package allows complete control over what is sent out to the DNS.  The API
 follows the less-is-more principle, by presenting a small, clean interface.")
     (license license:bsd-3)))
+
+(define-public go-github-com-nbrownus-go-metrics-prometheus
+  (package
+    (name "go-github-com-nbrownus-go-metrics-prometheus")
+    (version "0.0.0-20210712211119-974a6260965f")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/nbrownus/go-metrics-prometheus")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1kl9l08aas544627zmhkgp843qx94sxs4inxm20nw1hx7gp79dz0"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/nbrownus/go-metrics-prometheus"))
+    (native-inputs
+     (list go-github-com-stretchr-testify
+           go-github-com-rcrowley-go-metrics
+           go-github-com-prometheus-client-golang))
+    (home-page "https://github.com/nbrownus/go-metrics-prometheus")
+    (synopsis "Prometheus support for go-metrics")
+    (description
+      "@code{go-github-com-nbrownus-go-metrics-prometheus} is a reporter for
+the go-metrics library which will post the metrics to the prometheus client
+registry.  It just updates the registry, taking care of exporting the metrics
+is still your responsibility.")
+    (license license:asl2.0)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:18 +0100
[PATCH 08/14] gnu: Add go-github-com-songgao-water.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311031849.12681-8-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-songgao-water): New variable.
---
gnu/packages/golang.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 20523d9a13..a58b404079 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9931,3 +9931,27 @@ (define-public go-github-com-nbrownus-go-metrics-prometheus
 registry.  It just updates the registry, taking care of exporting the metrics
 is still your responsibility.")
     (license license:asl2.0)))
+
+(define-public go-github-com-songgao-water
+  (package
+    (name "go-github-com-songgao-water")
+    (version "0.0.0-20200317203138-2b4b6d7c09d8")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/songgao/water")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1k5aildfszp6x66jzar4y36lic8ijkb5020hfaivpvq3bnwdiikl"))))
+    (build-system go-build-system)
+    (arguments '(#:tests? #f ; Tests require network access
+                 #:import-path "github.com/songgao/water"))
+    (home-page "https://github.com/songgao/water")
+    (synopsis "Simple network tunnel/tap library")
+    (description
+      "@code{go-github-com-songgao-water} is a simple TUN/TAP interface
+library for Go that efficiently works with standard packages like io, bufio,
+etc..  Use waterutil with it to work with TUN/TAP packets/frames.")
+    (license license:bsd-3)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:18 +0100
[PATCH 09/14] gnu: Add go-github-com-vishvananda-netns.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311031849.12681-9-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-vishvananda-netns): New variable.
---
gnu/packages/golang.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index a58b404079..bcf50439c7 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9955,3 +9955,33 @@ (define-public go-github-com-songgao-water
 library for Go that efficiently works with standard packages like io, bufio,
 etc..  Use waterutil with it to work with TUN/TAP packets/frames.")
     (license license:bsd-3)))
+
+(define-public go-github-com-vishvananda-netns
+  (package
+    (name "go-github-com-vishvananda-netns")
+    (version "0.0.0-20211101163701-50045581ed74")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/vishvananda/netns")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "0kam780m036mk77fmc0w0z6qz4b5awkllcd1dps71zd1n82mr407"))))
+    (build-system go-build-system)
+    (arguments '(#:tests? #f ; Tests require root privileges
+                 #:import-path "github.com/vishvananda/netns"))
+    (native-inputs
+     (list go-golang-org-x-sys))
+    (home-page "https://github.com/vishvananda/netns")
+    (synopsis "Simple network namespace handling for Go")
+    (description
+      "Package netns allows ultra-simple network namespace handling.  NsHandles can be
+retrieved and set.  Note that the current namespace is thread local so actions
+that set and reset namespaces should use LockOSThread to make sure the namespace
+doesn't change due to a goroutine switch.  It is best to close NsHandles when
+you are done with them.  This can be accomplished via a `defer ns.Close()` on
+the handle.  Changing namespaces requires elevated privileges, so in most cases
+this code needs to be run as root.")
+    (license license:asl2.0)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:47 +0100
[PATCH 10/14] gnu: Add go-github-com-vishvananda-netlink.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311034741.14377-1-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-vishvananda-netlink): New variable.
---
gnu/packages/golang.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 24585e447e..5070981cfd 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9986,3 +9986,34 @@ (define-public go-github-com-vishvananda-netns
 the handle.  Changing namespaces requires elevated privileges, so in most cases
 this code needs to be run as root.")
     (license license:asl2.0)))
+
+(define-public go-github-com-vishvananda-netlink
+  (package
+    (name "go-github-com-vishvananda-netlink")
+    (version "1.1.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/vishvananda/netlink")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1vhl30p1gx636a088ls4h6a0l8jjyfvz79fr5w0qzdrg4qg9h08h"))))
+    (build-system go-build-system)
+    (arguments '(#:tests? #f
+                 #:import-path "github.com/vishvananda/netlink"))
+    (native-inputs
+     (list go-golang-org-x-sys
+           go-github-com-vishvananda-netns))
+    (home-page "https://github.com/vishvananda/netlink")
+    (synopsis "Netlink library for Go")
+    (description
+      "Package netlink provides a simple library for netlink.  Netlink is the interface
+a user-space program in linux uses to communicate with the kernel.  It can be
+used to add and remove interfaces, set up ip addresses and routes, and confiugre
+ipsec.  Netlink communication requires elevated privileges, so in most cases
+this code needs to be run as root.  The low level primitives for netlink are
+contained in the nl subpackage.  This package attempts to provide a high-level
+interface that is loosly modeled on the iproute2 cli.")
+    (license license:asl2.0)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:47 +0100
[PATCH 11/14] gnu: Add go-google-golang-org-protobuf.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311034741.14377-2-dom@dominicm.dev
* gnu/packages/golang.scm (go-google-golang-org-protobuf): New variable.
---
gnu/packages/golang.scm | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)

Toggle diff (49 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 5070981cfd..bac9dda1f7 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -10017,3 +10017,42 @@ (define-public go-github-com-vishvananda-netlink
 contained in the nl subpackage.  This package attempts to provide a high-level
 interface that is loosly modeled on the iproute2 cli.")
     (license license:asl2.0)))
+
+(define-public go-google-golang-org-protobuf
+  (package
+    (name "go-google-golang-org-protobuf")
+    (version "1.27.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://go.googlesource.com/protobuf")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "0aszb7cv8fq1m8akgd4kjyg5q7g5z9fdqnry6057ygq9r8r2yif2"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "google.golang.org/protobuf"
+       ;; Source-only package
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         ;; Source-only package
+         (delete 'build))))
+    (native-inputs
+      (list go-github-com-google-go-cmp-cmp))
+    (home-page "https://google.golang.org/protobuf")
+    (synopsis "Go support for Protocol Buffers")
+    (description
+      "This project hosts the Go implementation for
+@url{https://developers.google.com/protocol-buffers,protocol buffers}, which is
+a language-neutral, platform-neutral, extensible mechanism for serializing
+structured data.  The protocol buffer language is a language for specifying the
+schema for structured data.  This schema is compiled into language specific
+bindings.  This project provides both a tool to generate Go code for the
+protocol buffer language, and also the runtime implementation to handle
+serialization of messages in Go.  See the
+@url{https://developers.google.com/protocol-buffers/docs/overview,protocol
+buffer developer guide} for more information about protocol buffers themselves.")
+    (license license:bsd-3)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:47 +0100
[PATCH 12/14] gnu: Add go-github-com-matttproud-golang-protobuf-extensions.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311034741.14377-3-dom@dominicm.dev
* gnu/packages/golang.scm
(go-github-com-matttproud-golang-protobuf-extensions): New variable
---
gnu/packages/golang.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index bac9dda1f7..7e316a2552 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -10056,3 +10056,30 @@ (define-public go-google-golang-org-protobuf
 @url{https://developers.google.com/protocol-buffers/docs/overview,protocol
 buffer developer guide} for more information about protocol buffers themselves.")
     (license license:bsd-3)))
+
+(define-public go-github-com-matttproud-golang-protobuf-extensions
+  (package
+    (name "go-github-com-matttproud-golang-protobuf-extensions")
+    (version "1.0.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/matttproud/golang_protobuf_extensions")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/matttproud/golang_protobuf_extensions/pbutil"
+       #:unpack-path "github.com/matttproud/golang_protobuf_extensions"))
+    (propagated-inputs
+     (list go-github-com-golang-protobuf-proto))
+    (home-page "https://github.com/matttproud/golang_protobuf_extensions")
+    (synopsis "Go support for streaming Protocol Buffer messages")
+    (description
+      "@code{go-github-com-matttproud-golang-protobuf-extensions} provides
+various Protocol Buffer extensions for the Go language, namely support for
+record length-delimited message streaming.")
+    (license license:asl2.0)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:47 +0100
[PATCH 13/14] gnu: Add go-github-com-skip2-go-qrcode.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311034741.14377-4-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-skip2-go-qrcode): New variable.
---
gnu/packages/golang.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 7e316a2552..c964832e94 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -10083,3 +10083,26 @@ (define-public go-github-com-matttproud-golang-protobuf-extensions
 various Protocol Buffer extensions for the Go language, namely support for
 record length-delimited message streaming.")
     (license license:asl2.0)))
+
+(define-public go-github-com-skip2-go-qrcode
+  (package
+    (name "go-github-com-skip2-go-qrcode")
+    (version "0.0.0-20200617195104-da1b6568686e")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/skip2/go-qrcode")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "0pghd6y2x8a5fqy4rjn4d8j5jcslb236naycdza5an7vyvinsgs9"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/skip2/go-qrcode"
+                 ;; Tests failing
+                 #:tests? #f))
+    (home-page "https://github.com/skip2/go-qrcode")
+    (synopsis "QR code encoder")
+    (description "@code{go-github-com-skip2-go-qrcode} provides a QR code
+encoder for the Go language.")
+    (license license:expat)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 04:47 +0100
[PATCH 14/14] gnu: Add nebula.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311034741.14377-5-dom@dominicm.dev
* gnu/packages/networking.scm (nebula): New variable.
---
gnu/packages/networking.scm | 80 +++++++++++++++++++++++++++++++++++++
1 file changed, 80 insertions(+)

Toggle diff (104 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index b45f2f79f2..ab5be17241 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -48,6 +48,7 @@
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2022 Simon South <simon@simonsouth.net>
+;;; Copyright © 2022 Dominic Martinez <dom@dominicm.dev>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -140,6 +141,7 @@ (define-module (gnu packages networking)
   #:use-module (gnu packages shells)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages syncthing)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages textutils)
@@ -4191,3 +4193,81 @@ (define-public putty
 implementations.")
     (home-page "https://www.chiark.greenend.org.uk/~sgtatham/putty/")
     (license license:expat)))
+
+(define-public nebula
+  ;; NOTE: does not include nebula-service, which is incompatible with
+  ;; Shepherd.
+  (package
+    (name "nebula")
+    (version "1.5.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/slackhq/nebula")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "14b7wgx83w1fhcbhsn0mfg872hkml4wwbzimb3bjvc3xpzx6w44k"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/slackhq/nebula"
+       #:install-source? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'build
+           (lambda _
+             ;; Build nebula and nebula cert
+             (let* ((dir "github.com/slackhq/nebula")
+                    (nebula-cmd (string-append dir "/cmd/nebula"))
+                    (cert-cmd (string-append dir "/cmd/nebula-cert")))
+               (invoke "go" "build" nebula-cmd)
+               (invoke "go" "build" cert-cmd))))
+
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bindir (string-append out "/bin")))
+               (install-file "nebula" bindir)
+               (install-file "nebula-cert" bindir)))))))
+    (native-inputs
+     (list go-gopkg-in-yaml-v3
+           go-golang-org-x-term
+           go-github-com-prometheus-common
+           go-github-com-pmezard-go-difflib
+           go-github-com-matttproud-golang-protobuf-extensions
+           go-github-com-davecgh-go-spew
+           go-gopkg-in-yaml-v2
+           go-google-golang-org-protobuf
+           go-golang-org-x-sys
+           go-golang-org-x-net
+           go-golang-org-x-crypto
+           go-github-com-vishvananda-netns
+           go-github-com-vishvananda-netlink
+           go-github-com-skip2-go-qrcode
+           go-github-com-stretchr-testify
+           go-github-com-songgao-water
+           go-github-com-sirupsen-logrus
+           go-github-com-rcrowley-go-metrics
+           go-github-com-prometheus-procfs
+           go-github-com-prometheus-client-model
+           go-github-com-prometheus-client-golang
+           go-github-com-nbrownus-go-metrics-prometheus
+           go-github-com-miekg-dns
+           go-github-com-imdario-mergo
+           go-github-com-google-gopacket
+           go-github-com-gogo-protobuf
+           go-github-com-flynn-noise
+           go-github-com-cyberdelia-go-metrics-graphite
+           go-github-com-cespare-xxhash-v2
+           go-github-com-armon-go-radix
+           go-github-com-anmitsu-go-shlex))
+    (home-page "https://github.com/slackhq/nebula")
+    (synopsis "Scalable overlay networking tool")
+    (description
+     "Nebula is a scalable overlay networking tool with a focus on performance,
+simplicity and security.  It lets you seamlessly connect computers anywhere in
+the world.  Nebula is portable, and runs on Linux, OSX, Windows, iOS, and
+Android.  It can be used to connect a small number of computers, but is also
+able to connect tens of thousands of computers.")
+    (license license:expat)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 11 Mar 05:51 +0100
[PATCH v2 01/14] gnu: Add go-github-com-anmitsu-go-shlex.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220311045134.17029-1-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-anmitsu-go-shlex): New variable.
---
Oops, I didn't add the copyright in the first patch; here's a v2.

gnu/packages/golang.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 7080bb6e24..4a3c318507 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -33,6 +33,7 @@
 ;;; Copyright © 2021 Chadwain Holness <chadwainholness@gmail.com>
 ;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
 ;;; Copyright © 2021 Lu Hui <luhux76@gmail.com>
+;;; Copyright © 2022 Dominic Martinez <dom@dominicm.dev>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -9752,3 +9753,25 @@ (define-public go-github-com-go-chi-chi-v5
      "@code{go-github-com-go-chi-chi-v5} is an HTTP router that lets the user
 decompose request handling into many smaller layers.")
     (license license:expat)))
+
+(define-public go-github-com-anmitsu-go-shlex
+  (package
+    (name "go-github-com-anmitsu-go-shlex")
+    (version "0.0.0-20200514113438-38f4b401e2be")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/anmitsu/go-shlex")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "17iz68yzbnr7y4s493asbagbv79qq8hvl2pkxvm6bvdkgphj8w1g"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/anmitsu/go-shlex"))
+    (home-page "https://github.com/anmitsu/go-shlex")
+    (synopsis "Simple shell-like lexical analyzer for Go")
+    (description
+      "@code{go-github-com-anmitsu-go-shlex} provides a simple lexical
+analysis like the Unix shell.")
+    (license license:expat)))
-- 
2.34.0
M
M
Maxime Devos wrote on 11 Mar 08:46 +0100
Re: [bug#54335] [PATCH 07/14] gnu: Add go-github-com-nbrownus-go-metrics-prometheus.
6735799e55b6ffc3244f3ec274fcf9118e1f8d1b.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:18 [-0500]:
Toggle quote (10 lines)
> +(define-public go-github-com-nbrownus-go-metrics-prometheus
> +  (package
> +    (name "go-github-com-nbrownus-go-metrics-prometheus")
> +    (version "0.0.0-20210712211119-974a6260965f")
> +    (source
> +      (origin
> +        (method git-fetch)
> +        (uri (git-reference
> +               (url "https://github.com/nbrownus/go-metrics-prometheus")

Why use a fork instead of the upstream
actually necessary (e.g. extra features), could you add a link to the
pull request upstream merging the nbrownus fork back into deathowl?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYir+YhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7njNAQDpRlsQBv+oeuI12MtXoDFfeGL/
SbWt+lRuU4ccrEPF2gD7BDohqEGuJ9/kewUjVa+TOlcswJLC9x6Qc8DqGkGCowA=
=4ciG
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 08:47 +0100
Re: [bug#54335] [PATCH 09/14] gnu: Add go-github-com-vishvananda-netns.
1de7025be9f15b0674c69af0f6cccb19fd6cefb2.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:18 [-0500]:
Toggle quote (2 lines)
> +    (arguments '(#:tests? #f ; Tests require root privileges

Is this still the case? Nowadays, some namespace stuff can be done
without root.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYir+qxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7soyAQDt4SqibV0uw/njaFEjVW9gCcRm
cHciHbJQ/fepLGk7vQD/bJTm1h6V77yhmJCXYJfiPoipUTAPQBi+usB1G2YexwM=
=VVb3
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 08:48 +0100
Re: [bug#54335] [PATCH 10/14] gnu: Add go-github-com-vishvananda-netlink.
cd4bab1fd3d087097e1eda504624e216280fa960.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:47 [-0500]:
Toggle quote (2 lines)
> +    (arguments '(#:tests? #f

Why?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYir+xRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7u83AQDW85LVL/iftExPkGVdLkW/awro
WPFypTmad36RCpZw7QD+ML0Ysd+2oKv2HGQVScFkdgL4PDplod6vdiemElL/+w0=
=bXR7
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 08:49 +0100
Re: [bug#54335] [PATCH 13/14] gnu: Add go-github-com-skip2-go-qrcode.
bc94e07b4e6613356f14f6a416561a0f924c918a.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:47 [-0500]:
Toggle quote (2 lines)
> +                 ;; Tests failing

Then the issue identified by the failing tests should be reported
upstream and ideally fixed. Otherwise, what's the point of tests?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYir+/BccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7iFHAP9lVZef2L0eDCj8UDRQaDRemMeO
9PT1/KBjYE+A+/kZugEAvKu2siRAywGia07q7zEehnG9KYxgfe/PZYgHFIzr0g0=
=ZthT
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 08:49 +0100
21f05b9541c6efcc00bdf4ae49507af37c792f6a.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:47 [-0500]:
Toggle quote (2 lines)
According to that page, the home page is at

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYir/GhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7kNrAP9zTfb2tPknCFnsNWA+M/T8Nsfv
2lzU4KY4Zo75s7q2IQEAmFQhleQfLZc6ItichKuAEKBzPHpiH2kt6g0UNkCxVgI=
=iW9r
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 08:51 +0100
Re: [bug#54335] [PATCH 14/14] gnu: Add nebula.
676ab07b73ee6c939bf1096eb8c251cedbce7220.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:47 [-0500]:
Toggle quote (33 lines)
> +    (native-inputs
> +     (list go-gopkg-in-yaml-v3
> +           go-golang-org-x-term
> +           go-github-com-prometheus-common
> +           go-github-com-pmezard-go-difflib
> +           go-github-com-matttproud-golang-protobuf-extensions
> +           go-github-com-davecgh-go-spew
> +           go-gopkg-in-yaml-v2
> +           go-google-golang-org-protobuf
> +           go-golang-org-x-sys
> +           go-golang-org-x-net
> +           go-golang-org-x-crypto
> +           go-github-com-vishvananda-netns
> +           go-github-com-vishvananda-netlink
> +           go-github-com-skip2-go-qrcode
> +           go-github-com-stretchr-testify
> +           go-github-com-songgao-water
> +           go-github-com-sirupsen-logrus
> +           go-github-com-rcrowley-go-metrics
> +           go-github-com-prometheus-procfs
> +           go-github-com-prometheus-client-model
> +           go-github-com-prometheus-client-golang
> +           go-github-com-nbrownus-go-metrics-prometheus
> +           go-github-com-miekg-dns
> +           go-github-com-imdario-mergo
> +           go-github-com-google-gopacket
> +           go-github-com-gogo-protobuf
> +           go-github-com-flynn-noise
> +           go-github-com-cyberdelia-go-metrics-graphite
> +           go-github-com-cespare-xxhash-v2
> +           go-github-com-armon-go-radix
> +           go-github-com-anmitsu-go-shlex))

I doubt that all of these are compile-time tools. At least most of
them are probably inputs. (The distinction is important for cross-
compilation.)

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYir/bhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7pDLAP9+TWoMfbiU6382JZrMDzFb2agJ
PhRMAA1o/7V/zpijUQD+Jb4C3xvoaRbtb+BDApEq8mogzXeOaY9+6+ARU7vREAo=
=6yhq
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 14:46 +0100
Re: [bug#54335] [PATCH 11/14] gnu: Add go-google-golang-org-protobuf.
764604c7200f0dbeb74c6d88a9bf08f5ad0c0d14.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:47 [-0500]:
Toggle quote (4 lines)
> +(define-public go-google-golang-org-protobuf
> +  (package
> +    (name "go-google-golang-org-protobuf")

A presumably compatible package is already packaged:
'go-github-com-gogo-protobuf'. Perhaps that package suffices?

Also, what's the difference with 'go-github-com-golang-protobuf-proto',
besides the unimportant difference in repository location?

Greetings,
Maxime
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYitStRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7j2rAQDFOKHoVLTfzc1CdrSbVxueaNtB
eCjZ05ZicSOVuQBVzQD/fpJVflOAmMJBnhJlw2rQOSzPFRuMgatBdXqbskfRAQY=
=ALCZ
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 14:48 +0100
Re: [bug#54335] [PATCH 14/14] gnu: Add nebula.
4bba09d9c822e19d9566efa060af6eb4b536a7c8.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:47 [-0500]:
Toggle quote (3 lines)
> +  ;; NOTE: does not include nebula-service, which is incompatible with
> +  ;; Shepherd.

What does this mean?  Do you mean there's no corresponding Shepherd
service? If so, perhaps people can still run the 'nebula-service'
binary directly?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYitTOBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7sXkAP95PMIhFj6OBMI2anQZFbKHv7qv
7q0IRquKrcaaDv4MKQD+OKrZPosGdDlJpz1IEFJinn9+d+r6qDlQmw5FRPE80AI=
=nOPd
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 14:59 +0100
9896c254042c5cf08f7b0c4108366f2e0afde707.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:47 [-0500]:
Toggle quote (5 lines)
> +     "Nebula is a scalable overlay networking tool with a focus on performance,
> +simplicity and security.  It lets you seamlessly connect computers anywhere in
> +the world.  Nebula is portable, and runs on Linux, OSX, Windows, iOS, and
> +Android.

Android is just a form of Linux with an unusual userspace, so no need
to mention it here. Also,

Toggle quote (3 lines)
>   It can be used to connect a small number of computers, but is also
> +able to connect tens of thousands of computers.")

This description reads like marketing talk (unqualified ‘seamless’,
‘performance’, ‘simplicity’, ‘security’). The seamless seems factually
incorrect, since there is not corresponding Shepherd service.
As requested in (guix)Synopses and Descriptions, could the marketing be
left out, instead staying factual and descriptive?

E.g., you could look at the descriptions of 'yggdrasil', 'gnunet', 'go-
ipfs' and 'wireguard' and see if some things could be reused, or if
some things are out-of-scope or missing in Nebula and mention that.

Also, there are some binaries in 'dist/windows/wintun' -- even non-
free!

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYitVvBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7sKEAP4nAlJ1geujL8Fi+z+8U2KBGBVY
snTMf+M6Fm3eFpzacAEAp/tS5Trgvz7Fesn02WmG6WRGINCzb1Wc+ZwGRPc6tgs=
=Rfv7
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 17:05 +0100
Re: [bug#54335] [PATCH 10/14] gnu: Add go-github-com-vishvananda-netlink.
bedbe0826a42422779c57a573b8a1e5cdb5f52eb.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:47 [-0500]:
Toggle quote (16 lines)
> * gnu/packages/golang.scm (go-github-com-vishvananda-netlink): New variable.
> ---
>  gnu/packages/golang.scm | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
>
> diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
> index 24585e447e..5070981cfd 100644
> --- a/gnu/packages/golang.scm
> +++ b/gnu/packages/golang.scm
> @@ -9986,3 +9986,34 @@ (define-public go-github-com-vishvananda-netns
>  the handle. Changing namespaces requires elevated privileges, so in most cases
>  this code needs to be run as root.")
>      (license license:asl2.0)))
> +
> +(define-public go-github-com-vishvananda-netlink

This is already packaged in Guix, see 'go-netlink'.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYitzWxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7l8BAQD2QBOtg/5wHHlnC/7kntdOcZaK
AUi3rxWruG62mNDlaAD+Lcr/PpZZkTKSCShMcmCNkD4oyxP7IIuYeH/dz89AKg0=
=WWjK
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 17:06 +0100
Re: [bug#54335] [PATCH 09/14] gnu: Add go-github-com-vishvananda-netns.
c02cf0e716f6f7d7fed928cffd073eba968f57d9.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:18 [-0500]:
Toggle quote (2 lines)
> * gnu/packages/golang.scm (go-github-com-vishvananda-netns): New variable.

This is already packaged in Guix (go-netns).

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYitzohccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7q5qAP9l6hZx2+5ZjprmonXq8yU1D2+n
1jLgQqfaBiZRrXe5wAD/SAtyKIqcj+WwL8cOGt2VAxEPuzOv+bY07oManGxMVgw=
=bynA
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 17:09 +0100
Re: [bug#54335] [PATCH 01/14] gnu: Add go-github-com-anmitsu-go-shlex.
24479f46c51c0adbd0cc34e0ecd55bfb52ce421f.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:18 [-0500]:
Toggle quote (11 lines)
> +(define-public go-github-com-anmitsu-go-shlex
> +  (package
> +    (name "go-github-com-anmitsu-go-shlex")
> +    (version "0.0.0-20200514113438-38f4b401e2be")
> +    (source
> +      (origin
> +        (method git-fetch)
> +        (uri (git-reference
> +               (url "https://github.com/anmitsu/go-shlex")
> +               (commit (go-version->git-ref version))))

What's the difference with go-github-com-flynn-archive-go-shlex?
Are they related?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYit0LxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7gsNAQDZte3FhQj8L9u/A3FYB+OOpuT5
IrnmcfxIO38tDYmDtwD/d/QcNUuhldUdGUSY+0Nku+l7oLLDW5moAGtV9WzNFgc=
=HBwm
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 17:14 +0100
Re: [bug#54335] [PATCH 11/14] gnu: Add go-google-golang-org-protobuf.
7f7f8dd3d8528a4026418f3e19f41f151da5f11c.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:47 [-0500]:
Toggle quote (4 lines)
> +     '(#:import-path "google.golang.org/protobuf"
> +       ;; Source-only package
> +       #:tests? #f

What has source code to do with tests? Tests can be in the form of
pre-compiled binaries, and tests are usually a part of the source code.

Also, there do appear to be a few tests, e.g. at

I don't know how to run them though.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYit1bxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7q8iAQC1o45acWB00s4q8FpiFYQyI3eD
7T5r9xoE+wGNulK3egD/aFizdapHRC4z5wSvFKpaXJj/rITyoDUemD65ABz7Fw0=
=LTl+
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 17:16 +0100
26abc2bc0774006b53836e475fdbdd60e0088c63.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:47 [-0500]:
Toggle quote (4 lines)
> +       (modify-phases %standard-phases
> +         ;; Source-only package
> +         (delete 'build))))

Why is the build phase removed? It seems to be just a Go library,
not some Rust-style circularity.

Greetings,
Maxime
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYit10BccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7tohAP4r4f3E2OMPuF/b6zguOnaF7sy+
bFCowzluYfGCwSDZSgD8CFQxpZ1qlzuiC3XxSoTwluYuXhXm2Be15msWPXSKIAs=
=ujc8
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 17:17 +0100
f58c33fc4eeeda622cf4a89557d5c652e18349f7.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:47 [-0500]:
Toggle quote (2 lines)
> +       #:tests? #f

-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYit2IRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7s8XAQC03W058Kcb7qkAgucmTDjStMo/
ONOqXIVloKt2iKXRQQD/VNk5xpimZhWgfF9WB85wDOaWCpKTquI4Ypdee+OM4Ag=
=XZ1n
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 11 Mar 17:20 +0100
Re: [bug#54335] [PATCH 03/14] gnu: Add go-github-com-cespare-xxhash-v2.
bf8413b731bdb6de3c5b57996facae530bdd9498.camel@telenet.be
Dominic Martinez schreef op do 10-03-2022 om 22:18 [-0500]:
Toggle quote (4 lines)
> +(define-public go-github-com-cespare-xxhash-v2
> +  (package
> +    (name "go-github-com-cespare-xxhash-v2")

Isn't this just an updated version of 'go-github-com-cespare-xxhash'
from 2.1.0 to 2.1.2?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYit2sRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7thMAPoDqf17Q/p1jC/tWq76okW/p1fS
JS9YOTRcmp7XGEk3NgD/QtxIRShbX6KCNhOvSHzDzmuy7s0X6t3BXWTs9U0y0AY=
=1ErR
-----END PGP SIGNATURE-----


D
D
Dominic Martinez wrote on 11 Mar 21:24 +0100
Re: [bug#54335] [PATCH 07/14] gnu: Add go-github-com-nbrownus-go-metrics-prometheus.
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
875yoktevh.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (8 lines)
> Why use a fork instead of the upstream
> <https://github.com/deathowl/go-metrics-prometheus>? If the
> fork is
> actually necessary (e.g. extra features), could you add a link
> to the
> pull request upstream merging the nbrownus fork back into
> deathowl?

I couldn't find an instance of the features in the fork being
used, but Nebula specifically uses that fork. Are you suggesting
patching the source to import the upstream instead?
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiuwcgAKCRBBnl1fEVBr
Xc3iAP9m2T0Vlltqy3px0T/TLBRXS++P5tSlAPSLzTN4HhCGlwEAgHwTUNi0bojK
cvHJgBPUMCCetWeu6fKzaszDlRvAzwI=
=8AUF
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 21:26 +0100
Re: [bug#54335] [PATCH 09/14] gnu: Add go-github-com-vishvananda-netns.
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
871qz8tetz.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (2 lines)
> This is already packaged in Guix (go-netns).

This and netlink were my bad; thank you for pointing that out!
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiuwqAAKCRBBnl1fEVBr
XUuPAP9UAMF2D7vQQN5p4XmpKDuTe3BzHFUYtBvDOFmPdo6kYwD/UdzoQ/NxpTnB
S9PuOs/zFKQqWuFbyLlDoSc6FeDzQAU=
=mlKh
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 21:28 +0100
Re: [bug#54335] [PATCH 01/14] gnu: Add go-github-com-anmitsu-go-shlex.
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
87wnh0s04f.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (3 lines)
> What's the difference with go-github-com-flynn-archive-go-shlex?
> Are they related?

The author of go-github-com-flynn-archive-go-shlex marked it as
unmaintained and it hasn't seen development since
2015. go-github-com-anmitsu-go-shlex is currently maintained.
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiuxYAAKCRBBnl1fEVBr
XcJuAQCWAgX3m+1iaDvl8Vx0rHPDZ3aAf3c70bjKbyWgfzDUDgEA7pE0KtkCLynQ
HQ6CG/vFDHi+EkXLJOfTPCZT/Cy/IQI=
=GS2G
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 21:32 +0100
Re: [bug#54335] [PATCH 11/14] gnu: Add go-google-golang-org-protobuf.
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
87sfrorzqz.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (8 lines)
>> +       (modify-phases %standard-phases
>> +         ;; Source-only package
>> +         (delete 'build))))
>
> Why is the build phase removed? It seems to be just a Go
> library,
> not some Rust-style circularity.

As far as I can tell Go expects libraries to be source-only, so
I'm not sure what you would do in a build phase. I followed the
lead of the other Go library packages like go-golang-org-x-tools
(grep golang.scm for "Source-only package").
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiuzRAAKCRBBnl1fEVBr
XbMeAPwLMlhwZnoCsBtpr40oZg7mrjy7HG6JCha3kHUoz6ZAtAEAuS4neiYvIcP7
WYmEh5pvD5LHdy7kvjhTm5v7ez5rRAs=
=lxZ7
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 21:38 +0100
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
87o82crznl.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (9 lines)
>> +     '(#:import-path "google.golang.org/protobuf"
>> +       ;; Source-only package
>> +       #:tests? #f
>
> What has source code to do with tests? Tests can be in the form
> of
> pre-compiled binaries, and tests are usually a part of the
> source code.

I'm following the lead of other source-only Go packages which also
disable tests.

Toggle quote (2 lines)
> I don't know how to run them though.

This is the issue I ran into; Guix seems to expect a build output
to run tests on.
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiuzvgAKCRBBnl1fEVBr
XbDzAQDjET9SQ+yjjDb4Uog90OsFBqhAsJ5uC2Ock4JBtE3gmwEAm9sLJcTMLGEd
LnK+eXXzWBPBpe22y9Klg3nhumw8UQg=
=zlir
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 21:41 +0100
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
87k0d0rze9.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (7 lines)
>> +(define-public go-google-golang-org-protobuf
>> +  (package
>> +    (name "go-google-golang-org-protobuf")
>
> A presumably compatible package is already packaged:
> 'go-github-com-gogo-protobuf'. Perhaps that package suffices?

Annoyingly, the upstream Nebula source actively uses both
go-github-com-gogo-protobuf and go-google-golang-org-protobuf, and
they are not interchangeable.

Toggle quote (4 lines)
> Also, what's the difference with
> 'go-github-com-golang-protobuf-proto',
> besides the unimportant difference in repository location?

go-github-com-golang-protobuf-proto was superceded by
go-google-golang-org-protobuf. Per the repo,
go-google-golang-org-protobuf contains "an updated and simplified
API, support for protobuf reflection, and many other improvements"
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiu1DgAKCRBBnl1fEVBr
XTDZAQCB0ItCW4i8kmXKZRV/APjCp8DO0vfVbN3mYnc43U4C2gD+MkpqSUQlc3kt
6ze19sArgVfEZKjdReZQNxt44WZJWQk=
=8Lv2
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 21:46 +0100
Re: [bug#54335] [PATCH 13/14] gnu: Add go-github-com-skip2-go-qrcode.
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
87fsnorzcx.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (7 lines)
>> +                 ;; Tests failing
>
> Then the issue identified by the failing tests should be
> reported
> upstream and ideally fixed. Otherwise, what's the point of
> tests?

I'll work on getting these tests fixed!
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiu1PgAKCRBBnl1fEVBr
XQ44AQCwUNr1BsIoOId+gBxWoT2HV3VJHS4WIpWrYN4hRrUQzwEA5yC4QGncOkKY
qzODwVO6dAmlbzM0Q2xSDD4iXX+LZwM=
=Lzui
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 21:47 +0100
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
87bkycrzc7.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (5 lines)
>
> According to that page, the home page is at
> <http://go-qrcode.appspot.com/>, not GitHub.

That's my bad; thank you!
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiu1WAAKCRBBnl1fEVBr
XTp2AP4/ElqihCSO95dNDydwXPeCiNiFuhLdewCpqLB/3sGitQEA3r7mrAPok92d
8ZNxEN1lmAsBu5Bp2MGyHa6k5UMVxwk=
=oJi1
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 21:49 +0100
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
877d90rz6h.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (3 lines)
> According to that page, the home page is at
> <http://go-qrcode.appspot.com/>, not GitHub.

Actually, looking closer, that link is just a demo (and also
appears to not work). Would the github still be a better homepage
in this case?
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiu2JgAKCRBBnl1fEVBr
XcWlAP9rc2MFFE2Hn1w/bJ992DIvytE2h6UP8fviYr+cq3/zbQEA5uT2uNWaz45m
OK+k7nFaCzdOD26K6O6dvQpP3SG6Wgc=
=b6rR
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 21:53 +0100
Re: [bug#54335] [PATCH 14/14] gnu: Add nebula.
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
8735joryt9.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (6 lines)
> I doubt that all of these are compile-time tools. At least most
> of
> them are probably inputs. (The distinction is important for
> cross-
> compilation.)

I think I'm confused on how to approach this because Go produces
statically linked binaries. A lot of other Go packages also seem
to use native-inputs. How does this interact with
cross-compilation? All the inputs are used as source libraries
here so I'm not sure how to tell if a runtime input is needed.
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiu4AgAKCRBBnl1fEVBr
XW+VAP99vrJSj33lx1Zh6I7WGo4+eEkQCP7ajKcJYb/llAsurAD/Vqzej4Y99yFU
Q26KjLj9/YDavH4Kt8yTtvnmn0fLIgQ=
=UONB
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 21:59 +0100
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
87y21gqk34.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (17 lines)
> This description reads like marketing talk (unqualified
> ‘seamless’,
> ‘performance’, ‘simplicity’, ‘security’). The seamless seems
> factually
> incorrect, since there is not corresponding Shepherd service.
>
> As requested in (guix)Synopses and Descriptions, could the
> marketing be
> left out, instead staying factual and descriptive?
>
> E.g., you could look at the descriptions of 'yggdrasil',
> 'gnunet', 'go-
> ipfs' and 'wireguard' and see if some things could be reused, or
> if
> some things are out-of-scope or missing in Nebula and mention
> that.

Sure thing; I used the upstream description, so I'll write my own
more consistent with Guix's guidelines.

Toggle quote (4 lines)
> Also, there are some binaries in 'dist/windows/wintun' -- even
> non-
> free!

Oh shoot! I removed the wintun and wireguard Windows dependencies
but it looks like some Windows code still snuck in somewhere; I'll
patch that out.
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiu4zwAKCRBBnl1fEVBr
Xf40AP9XeLvuMMbXjLuVd8dTxR6K7Ue7fydA60nqnLF6v/qlvwEAySREvHLgvXrP
lo9kxG+jwwTQtX8d4pKbvZD1JIKBWAQ=
=eYHs
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 22:02 +0100
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
87tuc4qjqi.fsf@dominicm.dev
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (10 lines)
>> +  ;; NOTE: does not include nebula-service, which is
>> incompatible with
>> +  ;; Shepherd.
>
> What does this mean?  Do you mean there's no corresponding
> Shepherd
> service? If so, perhaps people can still run the
> 'nebula-service'
> binary directly?

Sorry, that was confusing. The nebula-service tool is used for
setting up auto-start on multiple platforms. It's mainly useful on
Windows and Mac as it's more difficult to create services on those
platforms. I didn't think it was especially useful to include as
on Linux it just creates a simple systemd service, and naturally
can't create a shepherd service
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiu6lQAKCRBBnl1fEVBr
XSnuAP4+o6RX24GZzKhsKQzGcipo7Yt3BsC93hmeqsFW9ImhtwEAiXWgDfuSlQkp
htSBgbUltpH48f4lu6/uVAcgc2q/aAM=
=B6hI
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 11 Mar 22:10 +0100
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54335@debbugs.gnu.org)
87pmmsqjni.fsf@dominicm.dev
Also, thank you so much for the very thorough review! This is
pretty much my first big open-source contribution, so it's very
helpful to get all the feedback :).
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYiu7AQAKCRBBnl1fEVBr
Xc1OAQDOgeQQdxp/57zSEnDhHfTLJiPBNhV8sbE44c/nFqalQwD/RjkRPRDfhIJz
ohKDtSZMRH/RVXdmvI7ww/gM81De3A4=
=97x3
-----END PGP SIGNATURE-----

M
M
Maxime Devos wrote on 12 Mar 23:10 +0100
Re: [bug#54335] [PATCH 13/14] gnu: Add go-github-com-skip2-go-qrcode.
(name . Dominic Martinez)(address . dom@dominicm.dev)(address . 54335@debbugs.gnu.org)
c3194a2e63a833a92039dcc43ed777d861c85670.camel@telenet.be
Dominic Martinez schreef op vr 11-03-2022 om 15:49 [-0500]:
Toggle quote (9 lines)
> Maxime Devos <maximedevos@telenet.be> writes:
>
> > According to that page, the home page is at
> > <http://go-qrcode.appspot.com/>, not GitHub.
>
> Actually, looking closer, that link is just a demo (and also
> appears to not work). Would the github still be a better homepage
> in this case?

Sounds reasonable to me.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYi0acBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7rwSAQDNOg9FM3YoefaDOWvt0n+sNdpi
cQ9eYN5K7zD97GxjsgEAg5f0LuaO7LUMR3WvcxPR409Vhvts0Ng+aZtgX8F9jgM=
=LqfF
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 12 Mar 23:20 +0100
Re: [bug#54335] [PATCH 14/14] gnu: Add nebula.
(name . Dominic Martinez)(address . dom@dominicm.dev)(address . 54335@debbugs.gnu.org)
e72d525de26dd76b3751c9c3b481f84e58425113.camel@telenet.be
Dominic Martinez schreef op vr 11-03-2022 om 15:53 [-0500]:
Toggle quote (14 lines)
> Maxime Devos <maximedevos@telenet.be> writes:
>
> > I doubt that all of these are compile-time tools.  At least most
> > of
> > them are probably inputs.  (The distinction is important for
> > cross-
> > compilation.)
>
> I think I'm confused on how to approach this because Go produces
> statically linked binaries. A lot of other Go packages also seem
> to use native-inputs. How does this interact with
> cross-compilation? All the inputs are used as source libraries
> here so I'm not sure how to tell if a runtime input is needed.

Static linking is not relevant to inputs/native-inputs -- Guix inputs
don't have a build-time/runtime distinction (*), instead they have a
the-architecture-it-is-being-built-on/the-architecture-it-is-built-for
distinction. 'inputs' = compiled for --target, 'native-inputs' =
compiled for --system.

(*) ignoring complications introduced by propagation.

More concretely, consider the following case:

* a program A depends on the Go library B
* the Go library B depends on the C library libfoo (using whatever is
Go's equivalent of 'dlopen')
* to avoid things like LD_LIBRARY_PATH, the package definition in
Guix replaces 'libfoo.so' by '/gnu/store/.../libfoo.so'.
* the program A is being cross-compiled.

To make sure that the cross-compiled A ends up using the libfoo.so
compiled for --target instead of --system, B has to be in 'inputs'
instead of 'native-inputs'.

This also holds when no .so libraries are used, e.g. if B invokes some
kind of binary with Go's equivalent of 'posix_spawn' and Guix hardcodes
the binary location instead of relying on $PATH.

I haven't tried this for Go packages in particular, but this is how
things work for, say, C and Guile packages.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYi0cyBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7t6gAQC5+RJwO0ziFVCUuYQkmYCb5k2W
ThrogTm0tODSWgeVfAEAwvk8X4zv9WnrcEXlndq6zd4RvYDzz668O3kpoCVP3Qc=
=DF5/
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 12 Mar 23:33 +0100
(name . Dominic Martinez)(address . dom@dominicm.dev)(address . 54335@debbugs.gnu.org)
eb62efc29c9df4b8cc181bcb59c2bbe664b54ada.camel@telenet.be
Dominic Martinez schreef op vr 11-03-2022 om 16:02 [-0500]:
Toggle quote (19 lines)
> Maxime Devos <maximedevos@telenet.be> writes:
>
> > > +  ;; NOTE: does not include nebula-service, which is
> > > incompatible with
> > > +  ;; Shepherd.
> >
> > What does this mean?  Do you mean there's no corresponding
> > Shepherd
> > service?  If so, perhaps people can still run the
> > 'nebula-service'
> > binary directly?
>
> Sorry, that was confusing. The nebula-service tool is used for
> setting up auto-start on multiple platforms. It's mainly useful on
> Windows and Mac as it's more difficult to create services on those
> platforms. I didn't think it was especially useful to include as
> on Linux it just creates a simple systemd service, and naturally
> can't create a shepherd service

Ok that does indeed sound like something that is unlikely to work in
Guix, though keep in mind that Guix can be used on top of other
distros, possibly distros using SystemD (e.g. this mail is composed on
Debian+Guix), so it might be useful after all, though I don't consider
it in any way essential.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYi0fuBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7ih4AQCdmawLp8Y1ijmNfojoUB6CsM7s
rBt1B+auPVa7lgT+VwEAyOBkSxPYrBYjSmAY71/JRwgSjO109XpwjvI6ngEO7AQ=
=Q2j9
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 12 Mar 23:45 +0100
Re: [bug#54335] [PATCH 11/14] gnu: Add go-google-golang-org-protobuf.
(name . Dominic Martinez)(address . dom@dominicm.dev)(address . 54335@debbugs.gnu.org)
bafb92e19665f781ef6254ea3245b5eb6c47a2b6.camel@telenet.be
Dominic Martinez schreef op vr 11-03-2022 om 15:32 [-0500]:
Toggle quote (5 lines)
> As far as I can tell Go expects libraries to be source-only, so
> I'm not sure what you would do in a build phase. I followed the
> lead of the other Go library packages like go-golang-org-x-tools
> (grep golang.scm for "Source-only package").

FWIW, there exist Go libraries that keep the default build phase,
e.g. go-github-com-hashicorp-go-version. Also, according
to comments in guix/build/go-build-system.scm, it is intended to
someday reuse the compiled build dependencies again (see

Also, perhaps the 'build' phase is currently largely useless for Go
libraries, I'd expect it to be a no-op in those cases, so I don't
expect it to be necessary to delete the build phase.

I expect that existing instances of (delete 'build) in golang.scm can
be removed, but it's not something I've ever actually tried, so I'm
not sure.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYi0ikBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7jQQAQDcAc8ENYbTqI0RZG0oGvYBYNLy
gYQ273IhZm+TSGvWnQD/XHLKue7cVOZbJmvD/nbhkhwVjnt+0Sur6i/kEn/g+wg=
=hAC7
-----END PGP SIGNATURE-----


L
L
Ludovic Courtès wrote on 19 Mar 18:09 +0100
Re: bug#54335: [PATCH 00/14] gnu: Add nebula.
(name . Dominic Martinez)(address . dom@dominicm.dev)
87r16xna22.fsf_-_@gnu.org
Hi Dominic,

This series looks almost ready to go. Could you send a v2 (“v3”?)
incorporating some of the changes that Maxime suggested?

In particular, Maxime noted that ‘go-github-com-vishvananda-netlink’ is
redundant with ‘go-netlink’, that there are occurrences of #:tests? #f
that would need a comment next to them explaining why the test suite is
skipped, and some descriptions could be improved a bit. (I might have
missed other comments.)

Could you take a look?

Thanks in advance, and thanks for this pretty big contribution!

Ludo’.
D
D
Dominic Martinez wrote on 19 Mar 18:27 +0100
(name . Ludovic Courtès)(address . ludo@gnu.org)
87r16x6eda.fsf@dominicm.dev
Hi Ludovic,

Sure thing; I'm pretty busy at the moment, but I'll send a revised
patch as soon as I have some time. Thank you for all your help
with Guix!

Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (21 lines)
> Hi Dominic,
>
> This series looks almost ready to go. Could you send a v2
> (“v3”?)
> incorporating some of the changes that Maxime suggested?
>
> In particular, Maxime noted that
> ‘go-github-com-vishvananda-netlink’ is
> redundant with ‘go-netlink’, that there are occurrences of
> #:tests? #f
> that would need a comment next to them explaining why the test
> suite is
> skipped, and some descriptions could be improved a bit. (I
> might have
> missed other comments.)
>
> Could you take a look?
>
> Thanks in advance, and thanks for this pretty big contribution!
>
> Ludo’.
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYjYSwQAKCRBBnl1fEVBr
XddGAQCJz8B6f4ATuOb9jb18GncRo0JKZuvC5TmPlmWxsXQNBgEA5/3AvBDKpaDf
GsOVxccY4D5NSW71xbAvuT7FAOirfww=
=sHb5
-----END PGP SIGNATURE-----

D
D
Dominic Martinez wrote on 4 Apr 21:31 +0200
[PATCH v3 00/10] gnu: Add nebula.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220404193208.27634-1-dom@dominicm.dev
Here is a second version (v3 because of a previous small addendum) of
the patch to add Nebula. I've removed unecessary packages, revised the
descriptions, correctly set only the test dependencies to native
inputs, and removed windows-related blobs from the source.

The two package definitions that have changed significantly are
go-google-golang-org-protobuf and go-github-com-skip2-go-qrcode. I've
expanded further on their changes in their respective patches. Thank
you!

Dominic Martinez (10):
gnu: Add go-github-com-anmitsu-go-shlex.
gnu: Add go-github-com-armon-go-radix.
gnu: Add go-github-com-cyberdelia-go-metrics-graphite.
gnu: Add go-github-com-google-gopacket.
gnu: Add go-github-com-miekg-dns.
gnu: Add go-github-com-nbrownus-go-metrics-prometheus.
gnu: Add go-github-com-songgao-water.
gnu: Add go-google-golang-org-protobuf.
gnu: Add go-github-com-skip2-go-qrcode.
gnu: Add nebula.

gnu/packages/golang.scm | 244 ++++++++++++++++++
gnu/packages/networking.scm | 80 ++++++
...github-com-skip2-go-qrcode-fix-tests.patch | 37 +++
3 files changed, 361 insertions(+)
create mode 100644 gnu/packages/patches/go-github-com-skip2-go-qrcode-fix-tests.patch


base-commit: 9bd4ed3dded7b770f1989f6084d565f7086fdcd3
--
2.34.0
D
D
Dominic Martinez wrote on 4 Apr 21:31 +0200
[PATCH v3 01/10] gnu: Add go-github-com-anmitsu-go-shlex.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220404193208.27634-2-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-anmitsu-go-shlex): New variable.
---
gnu/packages/golang.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index f3cc1bd6b8..3938137984 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -34,6 +34,7 @@
 ;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
 ;;; Copyright © 2021 Lu Hui <luhux76@gmail.com>
 ;;; Copyright © 2022 Pier-Hugues Pellerin <phpellerin@gmail.com>
+;;; Copyright © 2022 Dominic Martinez <dom@dominicm.dev>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -9775,3 +9776,25 @@ (define-public go-github-com-go-chi-chi-v5
      "@code{go-github-com-go-chi-chi-v5} is an HTTP router that lets the user
 decompose request handling into many smaller layers.")
     (license license:expat)))
+
+(define-public go-github-com-anmitsu-go-shlex
+  (package
+    (name "go-github-com-anmitsu-go-shlex")
+    (version "0.0.0-20200514113438-38f4b401e2be")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/anmitsu/go-shlex")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "17iz68yzbnr7y4s493asbagbv79qq8hvl2pkxvm6bvdkgphj8w1g"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/anmitsu/go-shlex"))
+    (home-page "https://github.com/anmitsu/go-shlex")
+    (synopsis "Simple shell-like lexical analyzer for Go")
+    (description
+      "@code{go-github-com-anmitsu-go-shlex} provides a simple lexical
+analyzer to parse shell-like commands.")
+    (license license:expat)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 4 Apr 21:32 +0200
[PATCH v3 02/10] gnu: Add go-github-com-armon-go-radix.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220404193208.27634-3-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-armon-go-radix): New variable.
---
gnu/packages/golang.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 3938137984..ba917911da 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9798,3 +9798,26 @@ (define-public go-github-com-anmitsu-go-shlex
       "@code{go-github-com-anmitsu-go-shlex} provides a simple lexical
 analyzer to parse shell-like commands.")
     (license license:expat)))
+
+(define-public go-github-com-armon-go-radix
+  (package
+    (name "go-github-com-armon-go-radix")
+    (version "1.0.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/armon/go-radix")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1m1k0jz9gjfrk4m7hjm7p03qmviamfgxwm2ghakqxw3hdds8v503"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/armon/go-radix"))
+    (home-page "https://github.com/armon/go-radix")
+    (synopsis "Go implementation of Radix trees")
+    (description
+      "@code{go-github-com-armon-go-radix} implements a
+@url{http://en.wikipedia.org/wiki/Radix_tree,radix tree}.  The package only
+provides a single @code{Tree} implementation, optimized for sparse nodes.")
+    (license license:expat)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 4 Apr 21:32 +0200
[PATCH v3 03/10] gnu: Add go-github-com-cyberdelia-go-metrics-graphite.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220404193208.27634-4-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-cyberdelia-go-metrics-graphite): New variable.
---

The only test for this package tries to run and access a local server. As far
as I'm aware, trying to access a network interface is a no-go for Guix
packages (and also fails if I try to do it), but please correct me if I'm
wrong on this.

gnu/packages/golang.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index ba917911da..a6ada9b1d6 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9821,3 +9821,30 @@ (define-public go-github-com-armon-go-radix
 @url{http://en.wikipedia.org/wiki/Radix_tree,radix tree}.  The package only
 provides a single @code{Tree} implementation, optimized for sparse nodes.")
     (license license:expat)))
+
+(define-public go-github-com-cyberdelia-go-metrics-graphite
+  (package
+    (name "go-github-com-cyberdelia-go-metrics-graphite")
+    (version "0.0.0-20161219230853-39f87cc3b432")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/cyberdelia/go-metrics-graphite")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1nnpwryw8i110laffyavvhx38gcd1jnpdir69y6fxxzpx06d094w"))))
+    (build-system go-build-system)
+    (propagated-inputs
+     (list go-github-com-rcrowley-go-metrics))
+    (arguments
+     '(#:tests? #f ; Tests require network interface access
+       #:import-path "github.com/cyberdelia/go-metrics-graphite"))
+    (home-page "https://github.com/cyberdelia/go-metrics-graphite")
+    (synopsis "Graphite client for go-metrics")
+    (description
+      "@code{go-github-com-cyberdelia-go-metrics-graphite} is a reporter for
+the @url{https://github.com/rcrowley/go-metrics,go-metrics} library which
+posts metrics to Graphite.")
+    (license license:bsd-2)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 4 Apr 21:32 +0200
[PATCH v3 04/10] gnu: Add go-github-com-google-gopacket.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220404193208.27634-5-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-google-gopacket): New variable
---
gnu/packages/golang.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index a6ada9b1d6..ccda557600 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9848,3 +9848,27 @@ (define-public go-github-com-cyberdelia-go-metrics-graphite
 the @url{https://github.com/rcrowley/go-metrics,go-metrics} library which
 posts metrics to Graphite.")
     (license license:bsd-2)))
+
+(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"))
+    (propagated-inputs
+      (list go-golang-org-x-sys go-golang-org-x-net))
+    (home-page "https://github.com/google/gopacket")
+    (synopsis "Provides packet processing capabilities for Go")
+    (description
+      "@code{go-github-com-google-gopacket} provides packet decoding for the
+Go language.")
+    (license license:bsd-3)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 4 Apr 21:32 +0200
[PATCH v3 05/10] gnu: Add go-github-com-miekg-dns.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220404193208.27634-6-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-miekg-dns): New variable.
---
gnu/packages/golang.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index ccda557600..d6dca579de 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9872,3 +9872,33 @@ (define-public go-github-com-google-gopacket
       "@code{go-github-com-google-gopacket} provides packet decoding for the
 Go language.")
     (license license:bsd-3)))
+
+(define-public go-github-com-miekg-dns
+  (package
+    (name "go-github-com-miekg-dns")
+    (version "1.1.48")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/miekg/dns")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "14m4wnbgmc1prj4ds1fsz1nwb1awaq365lhbp8clzsidxmhjf3hl"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/miekg/dns"))
+    (propagated-inputs
+     (list go-golang-org-x-tools
+           go-golang-org-x-sys
+           go-golang-org-x-sync
+           go-golang-org-x-net))
+    (home-page "https://github.com/miekg/dns")
+    (synopsis "Domain Name Service library in Go")
+    (description
+      "@code{go-github-com-miekg-dns} implements a fully featured interface to
+the Domain Name System.  Both server and client side programming is supported.
+The package allows complete control over what is sent out to the @acronym{DNS,
+Domain Name Service}.  The API follows the less-is-more principle, by
+presenting a small interface.")
+    (license license:bsd-3)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 4 Apr 21:32 +0200
[PATCH v3 06/10] gnu: Add go-github-com-nbrownus-go-metrics-prometheus.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220404193208.27634-7-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-nbrownus-go-metrics-prometheus): New
variable.
---
gnu/packages/golang.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (38 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index d6dca579de..e588bbc960 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9902,3 +9902,31 @@ (define-public go-github-com-miekg-dns
 Domain Name Service}.  The API follows the less-is-more principle, by
 presenting a small interface.")
     (license license:bsd-3)))
+
+(define-public go-github-com-nbrownus-go-metrics-prometheus
+  (package
+    (name "go-github-com-nbrownus-go-metrics-prometheus")
+    (version "0.0.0-20210712211119-974a6260965f")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/nbrownus/go-metrics-prometheus")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1kl9l08aas544627zmhkgp843qx94sxs4inxm20nw1hx7gp79dz0"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/nbrownus/go-metrics-prometheus"))
+    (propagated-inputs
+     (list go-github-com-stretchr-testify
+           go-github-com-rcrowley-go-metrics
+           go-github-com-prometheus-client-golang))
+    (home-page "https://github.com/nbrownus/go-metrics-prometheus")
+    (synopsis "Prometheus support for go-metrics")
+    (description
+      "@code{go-github-com-nbrownus-go-metrics-prometheus} is a reporter for
+the go-metrics library which will post the metrics to the prometheus client
+registry.  It just updates the registry, taking care of exporting the metrics
+is still your responsibility.")
+    (license license:asl2.0)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 4 Apr 21:32 +0200
[PATCH v3 07/10] gnu: Add go-github-com-songgao-water.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220404193208.27634-8-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-songgao-water): New variable.
---

All the tests here require the ability to interact with TUN/TAP
interfaces. Again, as far as I'm aware that isn't allowed, so tests are
disabled.

gnu/packages/golang.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index e588bbc960..23543a0c2b 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9930,3 +9930,27 @@ (define-public go-github-com-nbrownus-go-metrics-prometheus
 registry.  It just updates the registry, taking care of exporting the metrics
 is still your responsibility.")
     (license license:asl2.0)))
+
+(define-public go-github-com-songgao-water
+  (package
+    (name "go-github-com-songgao-water")
+    (version "0.0.0-20200317203138-2b4b6d7c09d8")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/songgao/water")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1k5aildfszp6x66jzar4y36lic8ijkb5020hfaivpvq3bnwdiikl"))))
+    (build-system go-build-system)
+    (arguments '(#:tests? #f ; Tests require network interface access
+                 #:import-path "github.com/songgao/water"))
+    (home-page "https://github.com/songgao/water")
+    (synopsis "Simple network tunnel/tap library")
+    (description
+      "@code{go-github-com-songgao-water} is a simple TUN/TAP interface
+library for Go that efficiently works with standard packages like io, bufio,
+etc..  Use waterutil with it to work with TUN/TAP packets/frames.")
+    (license license:bsd-3)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 4 Apr 21:32 +0200
[PATCH v3 08/10] gnu: Add go-google-golang-org-protobuf.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220404193208.27634-9-dom@dominicm.dev
* gnu/packages/golang.scm (go-google-golang-org-protobuf): New variable.
---

I took this go-google-golang-org-protobuf definition from #54560. I had
disabled builds/tests before because this package has many subpackages and no
top-level files, which the go-build-system doesn't directly support, so this
modifications builds and tests all the subpackages.

gnu/packages/golang.scm | 43 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 23543a0c2b..db1ea44d8c 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9954,3 +9954,46 @@ (define-public go-github-com-songgao-water
 library for Go that efficiently works with standard packages like io, bufio,
 etc..  Use waterutil with it to work with TUN/TAP packets/frames.")
     (license license:bsd-3)))
+
+(define-public go-google-golang-org-protobuf
+  (package
+    (name "go-google-golang-org-protobuf")
+    (version "1.28.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://go.googlesource.com/protobuf")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1nzcc4qc00afi24nb7nlnwyzvvr6b8s8qdrn1sw085nygh2y2x8r"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "google.golang.org/protobuf"
+       #:phases
+       ;; Build and test all sub-packages
+       (let ((glob-path "google.golang.org/protobuf/..."))
+         (modify-phases %standard-phases
+           (replace 'build
+             (lambda args
+               (apply (assoc-ref %standard-phases
+                                 'build)
+                      `(,@args #:import-path
+                               ,glob-path))))
+           (replace 'check
+             (lambda args
+               (apply (assoc-ref %standard-phases
+                                 'check)
+                      `(,@args #:import-path
+                               ,glob-path))))))))
+    (native-inputs (list go-github-com-google-go-cmp-cmp))
+    (synopsis "Go support for Google's protocol buffers")
+    (description
+     "Go implementation for protocol buffers, which is a
+language-neutral, platform-neutral, extensible mechanism for serializing
+structured data.  The protocol buffer language is a language for
+specifying the schema for structured data.  This schema is compiled into
+language specific bindings.")
+    (home-page "https://go.googlesource.com/protobuf")
+    (license license:bsd-3)))
-- 
2.34.0
D
D
Dominic Martinez wrote on 4 Apr 21:32 +0200
[PATCH v3 09/10] gnu: Add go-github-com-skip2-go-qrcode.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220404193208.27634-10-dom@dominicm.dev
* gnu/packages/golang.scm (go-github-com-skip2-go-qrcode): New variable.
---

The go-qrcode decoding test doesn't compile due to a change in Go's int to
string conversion. There is an active pull request with the fix at
https://github.com/skip2/go-qrcode/pull/53,but in the meantime I included a
patch for the test.

gnu/packages/golang.scm | 22 +++++++++++
...github-com-skip2-go-qrcode-fix-tests.patch | 37 +++++++++++++++++++
2 files changed, 59 insertions(+)
create mode 100644 gnu/packages/patches/go-github-com-skip2-go-qrcode-fix-tests.patch

Toggle diff (75 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index db1ea44d8c..0eae371f40 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9997,3 +9997,25 @@ (define-public go-google-golang-org-protobuf
 language specific bindings.")
     (home-page "https://go.googlesource.com/protobuf")
     (license license:bsd-3)))
+
+(define-public go-github-com-skip2-go-qrcode
+  (package
+    (name "go-github-com-skip2-go-qrcode")
+    (version "0.0.0-20200617195104-da1b6568686e")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/skip2/go-qrcode")
+             (commit (go-version->git-ref version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0pghd6y2x8a5fqy4rjn4d8j5jcslb236naycdza5an7vyvinsgs9"))
+       (patches (search-patches "go-github-com-skip2-go-qrcode-fix-tests.patch"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/skip2/go-qrcode"))
+    (home-page "https://github.com/skip2/go-qrcode")
+    (synopsis "QR code encoder")
+    (description "@code{go-github-com-skip2-go-qrcode} provides a QR code
+encoder for the Go language.")
+    (license license:expat)))
diff --git a/gnu/packages/patches/go-github-com-skip2-go-qrcode-fix-tests.patch b/gnu/packages/patches/go-github-com-skip2-go-qrcode-fix-tests.patch
new file mode 100644
index 0000000000..631cb0cdab
--- /dev/null
+++ b/gnu/packages/patches/go-github-com-skip2-go-qrcode-fix-tests.patch
@@ -0,0 +1,37 @@
+From dd203f29a36bf518deacbc03e8562b0195c8345f Mon Sep 17 00:00:00 2001
+From: Dominic Martinez <dom@dominicm.dev>
+Date: Mon, 4 Apr 2022 12:06:03 -0400
+Subject: [PATCH] Fix failing qr decode test
+
+First convert integers into runes before performing a string conversion.
+---
+ qrcode_decode_test.go | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/qrcode_decode_test.go b/qrcode_decode_test.go
+index 1f4b1d3..2b0756b 100644
+--- a/qrcode_decode_test.go
++++ b/qrcode_decode_test.go
+@@ -122,7 +122,7 @@ func TestDecodeAllCharacters(t *testing.T) {
+ 
+ 	// zbarimg has trouble with null bytes, hence start from ASCII 1.
+ 	for i := 1; i < 256; i++ {
+-		content += string(i)
++		content += string(rune(i))
+ 	}
+ 
+ 	q, err := New(content, Low)
+@@ -154,7 +154,7 @@ func TestDecodeFuzz(t *testing.T) {
+ 		for j := 0; j < len; j++ {
+ 			// zbarimg seems to have trouble with special characters, test printable
+ 			// characters only for now.
+-			content += string(32 + r.Intn(94))
++			content += string(rune(32 + r.Intn(94)))
+ 		}
+ 
+ 		for _, level := range []RecoveryLevel{Low, Medium, High, Highest} {
+
+base-commit: da1b6568686e89143e94f980a98bc2dbd5537f13
+-- 
+2.34.0
+
-- 
2.34.0
D
D
Dominic Martinez wrote on 4 Apr 21:32 +0200
[PATCH v3 10/10] gnu: Add nebula.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
20220404193208.27634-11-dom@dominicm.dev
* gnu/packages/networking.scm (nebula): New variable.
---

I tried to modify the description to more accurately describe the difference
between Nebula and other, distributed overlay networks currently on Guix like
yggdrasil and gnunet, but I'm not sure I did a good job.

I also wasn't sure whether to remove the blobs in a phase or source snippet,
since existing packages seem to do both. I opted for the snippet so that the
blobs would never touch the source definition.

gnu/packages/networking.scm | 80 +++++++++++++++++++++++++++++++++++++
1 file changed, 80 insertions(+)

Toggle diff (104 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index b45f2f79f2..51285df685 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -48,6 +48,7 @@
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2022 Simon South <simon@simonsouth.net>
+;;; Copyright © 2022 Dominic Martinez <dom@dominicm.dev>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -140,6 +141,7 @@ (define-module (gnu packages networking)
   #:use-module (gnu packages shells)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages syncthing)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages textutils)
@@ -4191,3 +4193,81 @@ (define-public putty
 implementations.")
     (home-page "https://www.chiark.greenend.org.uk/~sgtatham/putty/")
     (license license:expat)))
+
+(define-public nebula
+  (package
+    (name "nebula")
+    (version "1.5.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/slackhq/nebula")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "14b7wgx83w1fhcbhsn0mfg872hkml4wwbzimb3bjvc3xpzx6w44k"))
+              ;; Remove windows-related binary blobs and files
+              (snippet
+               #~(begin
+                   (use-modules (guix build utils))
+                   (delete-file-recursively "dist/windows")
+                   (delete-file-recursively "wintun")))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/slackhq/nebula"
+       #:install-source? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'build
+           (lambda _
+             ;; Build nebula and nebula-cert
+             (let* ((dir "github.com/slackhq/nebula")
+                    (nebula-cmd (string-append dir "/cmd/nebula"))
+                    (cert-cmd (string-append dir "/cmd/nebula-cert")))
+               (invoke "go" "build" nebula-cmd)
+               (invoke "go" "build" cert-cmd))))
+
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bindir (string-append out "/bin")))
+               (install-file "nebula" bindir)
+               (install-file "nebula-cert" bindir)))))))
+    (inputs
+     (list go-golang-org-x-term
+           go-gopkg-in-yaml-v2
+           go-google-golang-org-protobuf
+           go-golang-org-x-sys
+           go-golang-org-x-net
+           go-golang-org-x-crypto
+           go-netns
+           go-netlink
+           go-github-com-skip2-go-qrcode
+           go-github-com-stretchr-testify
+           go-github-com-songgao-water
+           go-github-com-sirupsen-logrus
+           go-github-com-rcrowley-go-metrics
+           go-github-com-prometheus-procfs
+           go-github-com-prometheus-client-model
+           go-github-com-prometheus-client-golang
+           go-github-com-nbrownus-go-metrics-prometheus
+           go-github-com-miekg-dns
+           go-github-com-imdario-mergo
+           go-github-com-google-gopacket
+           go-github-com-gogo-protobuf
+           go-github-com-flynn-noise
+           go-github-com-cyberdelia-go-metrics-graphite
+           go-github-com-cespare-xxhash
+           go-github-com-armon-go-radix
+           go-github-com-anmitsu-go-shlex))
+    (home-page "https://github.com/slackhq/nebula")
+    (synopsis "Scalable, peer-to-peer overlay networking tool")
+    (description
+     "Nebula is a peer-to-peer networking tool based on the
+@url{https://noiseprotocol.org/, Noise Protocol Framework}.  It is not a fully
+decentralized network, but instead uses central discovery nodes and a
+certificate authority to facilitate direct, encrypted peer-to-peer connections
+from behind most firewalls and @acronym{NAT, Network Address Translation}
+layers.")
+    (license license:expat)))
-- 
2.34.0
M
M
Maxime Devos wrote on 5 Apr 00:01 +0200
16b9d44cddebe7c38ace8c259f0edeade46be71d.camel@telenet.be
Dominic Martinez schreef op ma 04-04-2022 om 15:32 [-0400]:
Toggle quote (7 lines)
> +     "Nebula is a peer-to-peer networking tool based on the
> +@url{https://noiseprotocol.org/, Noise Protocol Framework}.  It is not a fully
> +decentralized network, but instead uses central discovery nodes and a
> +certificate authority to facilitate direct, encrypted peer-to-peer connections
> +from behind most firewalls and @acronym{NAT, Network Address Translation}
> +layers.")

Looks like a nice description, thanks.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYktqpBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7s0VAP4kOKp3PJ7QV4DzlodmpKVi+1/V
vFp4QDKQXnfOVKP+XAEAvomffxtdONy712P4MbOqxub86qs7ew4X/DtbTD9xNgE=
=hDSj
-----END PGP SIGNATURE-----


D
D
Dominic Martinez wrote on 26 May 03:40 +0200
Re: [PATCH v3 00/10] gnu: Add nebula.
(address . 54335@debbugs.gnu.org)(name . Dominic Martinez)(address . dom@dominicm.dev)
874k1doyru.fsf@dominicm.dev
Gentle ping; I'm steadily working on a service for this and would
love for the package to be available when that's done.
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRtp6gAxeTcYmhxQ/1Bnl1fEVBrXQUCYo7a9QAKCRBBnl1fEVBr
Xak/AQC2FXF4keLFN4611KcnZijoSEw2/55YR/aa2y3j4InrQQD+JHrpP7nSR6Mu
RG4C4JoL2s0KGEPvaMbMteDZ1Cl7kAE=
=zwfa
-----END PGP SIGNATURE-----

?