Patchwork gnu: Add syncthing.

login
register
mail settings
Submitter Petter
Date Dec. 16, 2016, 12:48 p.m.
Message ID <ff8c9e760586d63f67f33cbcf1c23ccc@mykolab.ch>
Download mbox | patch
Permalink /patch/18509/
State New
Headers show

Comments

Petter - Dec. 16, 2016, 12:48 p.m.
On 2016-12-16 02:52, Leo Famulari wrote:
> On Thu, Dec 15, 2016 at 10:06:59PM +0100, Petter wrote:
>> Hi again,
>> 
>> I've prefixed most of the packages with "golang-" now. However, there 
>> are
>> some
>> packages already starting with "golang-", f.ex.
>> "golang-org-x-text-unicode-norm",
>> and I left those alone. It's inconsistent, but I felt this was 
>> preferable to
>> names like "golang-golang-org-x-text-unicode-norm". What do you think?
> 
> That's the right way. It fits the package naming guidelines:
> 
> https://www.gnu.org/software/guix/manual/html_node/Package-Naming.html

I'm able to interpret your answer both ways, should I make it
"golang-golang-org-x-text-unicode-norm"?

>> Finally, there's a telemetry configuration in Syncthing. It is opt-in;
>> but it will ask the user after a few hours if they want to join. The
>> plan is to disable the question, however I suspect I've messed up the
>> build system in that area, so this takes some more looking in to.
> 
> Personally, I'm fine with the upstream "opt-in" nag warning. It only
> shows up when you open the Syncthing web interface; it's not an
> intrusive desktop "notification". Once the user has said "yes" or "no",
> it doesn't appear again until Syncthing makes a change to what
> information they collect.
> 
> But, if people think our package should never ask, I don't mind if we
> disable the request, as long as we share our changes with the Syncthing
> project and they don't notice anything broken.

I'll make an attempt at this while the jury is out, primarily to
retrieve the ability to edit files. (Either I broke it, or I need to
learn how to use (snippet).

> Many of my comments below are about tedious things. Let us know if you
> are getting sick of working on these packages, and I will help :) This
> includes improving the descriptions.

Yes! Help please. The meta-data part is tricky and time consuming, I'd
rather spend my Guix time on the build system than descriptions
etc. Synopsis and descriptions are just stuff i found on their
home-page.

>> Date: Thu, 15 Dec 2016 21:42:03 +0100
>> Subject: [PATCH] gnu: Add Syncthing.
>> 
>> * gnu/packages/syncthing.scm: New file.
> 
> Cool!
> 
>> +(define-public syncthing
> 
>> +    (source (origin
>> +              (method git-fetch)
>> +              (uri (git-reference
>> +                    (url "https://github.com/syncthing/syncthing/")
>> +                    (commit (string-append "v" version))))
>> +              (file-name (string-append name "-" version 
>> "-checkout"))
> 
> We should use the Syncthing release tarball:
> 
> https://github.com/syncthing/syncthing/releases/download/v0.14.14/syncthing-source-v0.14.14.tar.gz

Totally agree! However, tarballs are currently unsupported... due to,
hm, let's say "because very good reasons noone can be blamed for,
particularly and especially not me".

Ok, I messed up the build system :P Removed too much code
apparently. I'm working on getting this back.

>> +    (arguments
>> +     `(#:import-path "github.com/syncthing/syncthing"
> 
> What do you think about having the go-build-system try to automatically
> generate the import-path based on the source URL, with the option for
> the packager to set it manually, as shown here?
> 
> For many of the packages in this patch (which will eventually be split
> into one package per patch ;) ), that auto-generated import-path
> could be correct.
> 
> I think that an (arguments) field indicates that the package's build
> scripts have deviated from the standard. If a Guix build system 
> requires
> all of its packages to do something in (arguments), the build system
> should be extended :)

This is my goal, and I tried to accomplish this initially, because as
you can see for git checkouts most of the time import-path is url
minus scheme://. But I was unable to retrieve the url in the build
phases. So I did it like this instead, to get something that worked;
also something like #:import-path is required where import-path can't
be derived from the url.

I would need concrete help with this, that is getting the url and
perhaps what (method) was used.

>> +       #:phases
>> +       (modify-phases %standard-phases
>> +         (replace 'delete-files
>> +           (lambda _
>> +             (delete-file-recursively 
>> "src/github.com/syncthing/syncthing/vendor")))
>> +
>> +         (replace 'build
>> +           (lambda* (#:key inputs #:allow-other-keys)
>> +             (with-directory-excursion 
>> "src/github.com/syncthing/syncthing"
>> +               (zero? (system* "go" "run" "build.go" "install" 
>> "syncthing" "-no-upgrade")))))
>> +
>> +         (replace 'install
>> +           (lambda _
>> +             (copy-recursively 
>> "src/github.com/syncthing/syncthing/bin/"
>> +                               (string-append (assoc-ref %outputs 
>> "out") "/bin"))
>> +             (copy-recursively "pkg"
>> +                               (string-append (assoc-ref %outputs 
>> "out") "/pkg"))
>> +             (copy-recursively "src"
>> +                               (string-append (assoc-ref %outputs 
>> "out") "/src")))))))
>> +
> 
> Does this package need to use custom build and install phases?

Yes. They use their own build program (build.go) and arguments. And
the resulting binary is put in a non-standard location,
"src/github.com/syncthing/syncthing/bin". If they had put it in "bin/"
overriding this phase wouldn't be necessary.

>> +(define-public golang-github-com-audriusbutkevicius-go-nat-pmp
>> +  (let ((commit "452c97607362b2ab5a7839b8d1704f0396b640ca"))
> 
> Don't forget the revision counter :)

Oh, I didn't see the need for it, with version being:
"20160522.452c976".

Should version really be: "20160522-1.452c976"? I don't see revision
here contributing any value.

>> +(define-public golang-github-com-bkaradzic-go-lz4
>> +  (package
>> +    (name "golang-github-com-bkaradzic-go-lz4")
>> +    (version "1.0.0")
>> +    (source (origin
>> +              (method git-fetch)
>> +              (uri (git-reference
>> +                    (url "https://github.com/bkaradzic/go-lz4")
>> +                    (commit 
>> "74ddf82598bc4745b965729e9c6a463bedd33049")))
> 
> For packages that we build from a Git tag (rather than an untagged
> commit), you should do (commit (string-append "v" version)).

Right. I've attached an updated patch with this.

> Although, if there is a release tarball, it's preferable to use it.

Sure, we can use tarballs when this is supported :P

>> +(define-public golang-github-com-calmh-xdr
>> +  (let ((commit "f9b9f8f7aa27725f5cabb699bd9099ca7ce09143")
>> +        (revision "1"))
>> +    (package
>> +      (name "golang-github-com-calmh-xdr")
>> +      (version (string-append "2.0.0-" revision "." (string-take 
>> commit 7)))
>> +      (source (origin
>> +                (method git-fetch)
>> +                (uri (git-reference
>> +                      (url "https://github.com/calmh/xdr")
>> +                      (commit commit)))
> 
> You could also fetch this one with the Git tag, or use the tarball.
> 
>> +(define-public golang-github-com-cznic-bufs
>> +  (let ((commit "3dcccbd7064a1689f9c093a988ea11ac00e21f51"))
>> +    (package
>> +      (name "golang-github-com-cznic-bufs")
>> +      (version (string-append "20160818." (string-take commit 7)))
> 
> Is this string '20160818' the date of the commit? If the package has no
> releases, we use '0.0.0' in place of the version.

Yes. I figure this is best because some later project we'll package
may be pinned to an earlier commit of a library, and then what?
Incrementing the revision number would suggest this was of newer date,
when it's not, and make the older commit appear as the newest version
of the two to Guix.

Projects not pinned to a library version will then use whatever commit
was added last rather than the newest.

>> +    (arguments
>> +     `(#:import-path "github.com/cznic/internal/slice"
>> +       #:unpack-path "github.com/cznic/internal"))
> 
> Is it too much to wonder if both the import-path and the unpack-path
> could be auto-generated in cases like this? :)

We should consider this together with the url:
(url (string-append "https://github.com/cznic/internal"))

"slice" is here a directory/package in the repository. For github.com
we could probably assume that the repo is github.com/account/repo, but
other domains may have different layouts. Also keeping in mind that
the requested package could be a subpackage,
"github.com/cznic/internal/slice/tricks".

For github.com this would suggest we use url of the subpackage in the
recipe, otherwise we don't have the import-path, but this url is not
retreivable (404 Not Found). And then we would need for (git-fetch) to
cut the url after the repo part. At this point I think we're at a
place we don't want to be.

I think the best we can do is only to skip #:unpack-path in these
scenarios, and unpack according to domain and path of the url, as long
as domain and path matches the start of the import-path. But as
mentioned earlier, I don't know how to access the url in the build
phases.

I like that you're looking for simplifying the recipes, this is my
goal too. And I'm sure we can automate more.


Thanks for this thorough review! :)

On 2016-12-16 02:52, Leo Famulari wrote:
> On Thu, Dec 15, 2016 at 10:06:59PM +0100, Petter wrote:
>> Hi again,
>> 
>> I've prefixed most of the packages with "golang-" now. However, there 
>> are
>> some
>> packages already starting with "golang-", f.ex.
>> "golang-org-x-text-unicode-norm",
>> and I left those alone. It's inconsistent, but I felt this was 
>> preferable to
>> names like "golang-golang-org-x-text-unicode-norm". What do you think?
> 
> That's the right way. It fits the package naming guidelines:
> 
> https://www.gnu.org/software/guix/manual/html_node/Package-Naming.html
> 
>> Finally, there's a telemetry configuration in Syncthing. It is opt-in;
>> but it will ask the user after a few hours if they want to join. The
>> plan is to disable the question, however I suspect I've messed up the
>> build system in that area, so this takes some more looking in to.
> 
> Personally, I'm fine with the upstream "opt-in" nag warning. It only
> shows up when you open the Syncthing web interface; it's not an
> intrusive desktop "notification". Once the user has said "yes" or "no",
> it doesn't appear again until Syncthing makes a change to what
> information they collect.
> 
> But, if people think our package should never ask, I don't mind if we
> disable the request, as long as we share our changes with the Syncthing
> project and they don't notice anything broken.
> 
> Many of my comments below are about tedious things. Let us know if you
> are getting sick of working on these packages, and I will help :) This
> includes improving the descriptions.
> 
>> Date: Thu, 15 Dec 2016 21:42:03 +0100
>> Subject: [PATCH] gnu: Add Syncthing.
>> 
>> * gnu/packages/syncthing.scm: New file.
> 
> Cool!
> 
>> +(define-public syncthing
> 
>> +    (source (origin
>> +              (method git-fetch)
>> +              (uri (git-reference
>> +                    (url "https://github.com/syncthing/syncthing/")
>> +                    (commit (string-append "v" version))))
>> +              (file-name (string-append name "-" version 
>> "-checkout"))
> 
> We should use the Syncthing release tarball:
> 
> https://github.com/syncthing/syncthing/releases/download/v0.14.14/syncthing-source-v0.14.14.tar.gz
> 
>> +    (arguments
>> +     `(#:import-path "github.com/syncthing/syncthing"
> 
> What do you think about having the go-build-system try to automatically
> generate the import-path based on the source URL, with the option for
> the packager to set it manually, as shown here?
> 
> For many of the packages in this patch (which will eventually be split
> into one package per patch ;) ), that auto-generated import-path
> could be correct.
> 
> I think that an (arguments) field indicates that the package's build
> scripts have deviated from the standard. If a Guix build system 
> requires
> all of its packages to do something in (arguments), the build system
> should be extended :)
> 
>> +       #:phases
>> +       (modify-phases %standard-phases
>> +         (replace 'delete-files
>> +           (lambda _
>> +             (delete-file-recursively 
>> "src/github.com/syncthing/syncthing/vendor")))
>> +
>> +         (replace 'build
>> +           (lambda* (#:key inputs #:allow-other-keys)
>> +             (with-directory-excursion 
>> "src/github.com/syncthing/syncthing"
>> +               (zero? (system* "go" "run" "build.go" "install" 
>> "syncthing" "-no-upgrade")))))
>> +
>> +         (replace 'install
>> +           (lambda _
>> +             (copy-recursively 
>> "src/github.com/syncthing/syncthing/bin/"
>> +                               (string-append (assoc-ref %outputs 
>> "out") "/bin"))
>> +             (copy-recursively "pkg"
>> +                               (string-append (assoc-ref %outputs 
>> "out") "/pkg"))
>> +             (copy-recursively "src"
>> +                               (string-append (assoc-ref %outputs 
>> "out") "/src")))))))
>> +
> 
> Does this package need to use custom build and install phases?
> 
>> +(define-public golang-github-com-audriusbutkevicius-go-nat-pmp
>> +  (let ((commit "452c97607362b2ab5a7839b8d1704f0396b640ca"))
> 
> Don't forget the revision counter :)
> 
>> +(define-public golang-github-com-bkaradzic-go-lz4
>> +  (package
>> +    (name "golang-github-com-bkaradzic-go-lz4")
>> +    (version "1.0.0")
>> +    (source (origin
>> +              (method git-fetch)
>> +              (uri (git-reference
>> +                    (url "https://github.com/bkaradzic/go-lz4")
>> +                    (commit 
>> "74ddf82598bc4745b965729e9c6a463bedd33049")))
> 
> For packages that we build from a Git tag (rather than an untagged
> commit), you should do (commit (string-append "v" version)).
> 
> Although, if there is a release tarball, it's preferable to use it.
> 
>> +(define-public golang-github-com-calmh-xdr
>> +  (let ((commit "f9b9f8f7aa27725f5cabb699bd9099ca7ce09143")
>> +        (revision "1"))
>> +    (package
>> +      (name "golang-github-com-calmh-xdr")
>> +      (version (string-append "2.0.0-" revision "." (string-take 
>> commit 7)))
>> +      (source (origin
>> +                (method git-fetch)
>> +                (uri (git-reference
>> +                      (url "https://github.com/calmh/xdr")
>> +                      (commit commit)))
> 
> You could also fetch this one with the Git tag, or use the tarball.
> 
>> +(define-public golang-github-com-cznic-bufs
>> +  (let ((commit "3dcccbd7064a1689f9c093a988ea11ac00e21f51"))
>> +    (package
>> +      (name "golang-github-com-cznic-bufs")
>> +      (version (string-append "20160818." (string-take commit 7)))
> 
> Is this string '20160818' the date of the commit? If the package has no
> releases, we use '0.0.0' in place of the version.
> 
>> +    (arguments
>> +     `(#:import-path "github.com/cznic/internal/slice"
>> +       #:unpack-path "github.com/cznic/internal"))
> 
> Is it too much to wonder if both the import-path and the unpack-path
> could be auto-generated in cases like this? :)

Patch

From 761f4c6f8221d7f08959158e2ca18663065b8fad Mon Sep 17 00:00:00 2001
From: Petter <petter@mykolab.ch>
Date: Fri, 16 Dec 2016 13:08:42 +0100
Subject: [PATCH] gnu: Add Syncthing.

* gnu/packages/syncthing.scm: New file.
---
 gnu/packages/syncthing.scm | 1257 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 1257 insertions(+)
 create mode 100644 gnu/packages/syncthing.scm

diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
new file mode 100644
index 0000000..2a861e5
--- /dev/null
+++ b/gnu/packages/syncthing.scm
@@ -0,0 +1,1257 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016 Petter <petter@mykolab.ch>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages syncthing)
+  #:use-module (guix build-system go)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix licenses)
+  #:use-module (gnu packages golang))
+
+(define-public syncthing
+  (package
+    (name "syncthing")
+    (version "0.14.14")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/syncthing/syncthing/")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "1c9x7j6pbbd3i34nvisw70v2l3llp3dhw5cvd72jgx3gm0j3v31y"))))
+    (build-system go-build-system)
+    (inputs
+     `(("github.com/AudriusButkevicius/go-nat-pmp"
+        ,golang-github-com-audriusbutkevicius-go-nat-pmp)
+       ("github.com/vitrun/qart/coding" ,golang-github-com-vitrun-qart-coding)
+       ("github.com/vitrun/qart/gf256" ,golang-github-com-vitrun-qart-gf256)
+       ("github.com/vitrun/qart/qr" ,golang-github-com-vitrun-qart-qr)
+       ("github.com/thejerf/suture" ,golang-github-com-thejerf-suture)
+       ("github.com/syndtr/goleveldb" ,golang-github-com-syndtr-goleveldb)
+       ("github.com/sasha-s/go-deadlock" ,golang-github-com-sasha-s-go-deadlock)
+       ("github.com/rcrowley/go-metrics" ,golang-github-com-rcrowley-go-metrics)
+       ("github.com/minio/sha256-simd" ,golang-github-com-minio-sha256-simd)
+       ("github.com/kardianos/osext" ,golang-github-com-kardianos-osext)
+       ("github.com/juju/ratelimit" ,golang-github-com-juju-ratelimit)
+       ("github.com/jackpal/gateway" ,golang-github-com-jackpal-gateway)
+       ("github.com/gogo/protobuf" ,golang-github-com-gogo-protobuf)
+       ("github.com/gobwas/glob" ,golang-github-com-gobwas-glob)
+       ("github.com/calmh/xdr" ,golang-github-com-calmh-xdr)
+       ("github.com/calmh/luhn" ,golang-github-com-calmh-luhn)
+       ("github.com/calmh/du" ,golang-github-com-calmh-du)
+       ("github.com/bkaradzic/go-lz4" ,golang-github-com-bkaradzic-go-lz4)
+       ("github.com/golang/snappy" ,golang-github-com-golang-snappy)
+       ("golang.org/x/crypto/bcrypt" ,golang-org-x-crypto-bcrypt)
+       ("golang.org/x/crypto/blowfish" ,golang-org-x-crypto-blowfish)
+       ("golang.org/x/text/transform" ,golang-org-x-text-transform)
+       ("golang.org/x/text/unicode/norm" ,golang-org-x-text-unicode-norm)
+       ("golang.org/x/net/proxy" ,golang-org-x-net-proxy)
+       ("golang.org/x/net/bpf" ,golang-org-x-net-bpf)
+       ("golang.org/x/net/ipv6" ,golang-org-x-net-ipv6)
+       ("golang.org/x/net/internal/iana" ,golang-org-x-net-internal-iana)
+       ("golang.org/x/net/internal/netreflect"
+        ,golang-org-x-net-internal-netreflect)))
+    (arguments
+     `(#:import-path "github.com/syncthing/syncthing"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'delete-files
+           (lambda _
+             (delete-file-recursively "src/github.com/syncthing/syncthing/vendor")))
+
+         (replace 'build
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "src/github.com/syncthing/syncthing"
+               (zero? (system* "go" "run" "build.go" "install" "syncthing" "-no-upgrade")))))
+
+         (replace 'install
+           (lambda _
+             (copy-recursively "src/github.com/syncthing/syncthing/bin/"
+                               (string-append (assoc-ref %outputs "out") "/bin"))
+             (copy-recursively "pkg"
+                               (string-append (assoc-ref %outputs "out") "/pkg"))
+             (copy-recursively "src"
+                               (string-append (assoc-ref %outputs "out") "/src")))))))
+
+    (synopsis "Continuous File Synchronization")
+    (description "This is the Syncthing project which pursues the following goals:
+
+    1. Define a protocol for synchronization of a folder between a number of collaborating devices. This protocol should be well defined, unambiguous, easily understood, free to use, efficient, secure and language neutral. This is called the Block Exchange Protocol.
+
+    2. Provide the reference implementation to demonstrate the usability of said protocol. This is the syncthing utility. We hope that alternative, compatible implementations of the protocol will arise.
+
+The two are evolving together; the protocol is not to be considered stable until Syncthing 1.0 is released, at which point it is locked down for incompatible changes")
+    (home-page "https://github.com/syncthing/syncthing")
+    (license mpl2.0)))
+
+(define-public golang-github-com-audriusbutkevicius-go-nat-pmp
+  (let ((commit "452c97607362b2ab5a7839b8d1704f0396b640ca"))
+    (package
+      (name "golang-github-com-audriusbutkevicius-go-nat-pmp")
+      (version (string-append "20160522" (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/AudriusButkevicius/go-nat-pmp")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "1accmpl1llk16a19nlyy991fqrgfay6l53gb64hgmdfmqljdvbk7"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/AudriusButkevicius/go-nat-pmp"))
+      (synopsis "Port mapping and discovery of the external IP address")
+      (description "Go client for the NAT-PMP internet protocol for port mapping and discovering the external IP address of a firewall")
+      (home-page "https://github.com/AudriusButkevicius/go-nat-pmp")
+      (license asl2.0))))
+
+(define-public golang-github-com-bkaradzic-go-lz4
+  (package
+    (name "golang-github-com-bkaradzic-go-lz4")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/bkaradzic/go-lz4")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "1vdid8v0c2v2qhrg9rzn3l7ya1h34jirrxfnir7gv7w6s4ivdvc1"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/bkaradzic/go-lz4"))
+    (synopsis "Port of LZ4 lossless compression algorithm")
+    (description "go-lz4 is port of LZ4 lossless compression algorithm to Go")
+    (home-page "https://github.com/bkaradzic/go-lz4")
+    (license bsd-2)))
+
+(define-public golang-github-com-calmh-du
+  (package
+    (name "golang-github-com-calmh-du")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/calmh/du")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "1mv6mkbslfc8giv47kyl97ny0igb3l7jya5hc75sm54xi6g205wa"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/calmh/du"))
+    (synopsis "Get total and available disk space on a given volume")
+    (description "Get disk usage information like how much space is available, free, and used")
+    (home-page "https://github.com/calmh/du")
+    (license public-domain)))
+
+(define-public golang-github-com-calmh-luhn
+  (package
+    (name "golang-github-com-calmh-luhn")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/calmh/luhn")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "1hfj1lx7wdpifn16zqrl4xml6cj5gxbn6hfz1f46g2a6bdf0gcvs"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/calmh/luhn"))
+    (synopsis "Luhn-mod-N implementation in Go")
+    (description "Luhn-mod-N implementation in Go")
+    (home-page "https://github.com/calmh/luhn")
+    (license x11)))
+
+(define-public golang-github-com-calmh-xdr
+  (let ((commit "f9b9f8f7aa27725f5cabb699bd9099ca7ce09143")
+        (revision "1"))
+    (package
+      (name "golang-github-com-calmh-xdr")
+      (version (string-append "2.0.0-" revision "." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/calmh/xdr")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "0l1w1l9iy4b4054v260jysqvl16hylr7hvkimlfgr0ng9m6r1vz0"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/calmh/xdr"))
+      (synopsis "XDR marshalling/unmarshalling library")
+      (description "XDR marshalling/unmarshalling library. It uses code generation and not reflection")
+      (home-page "https://github.com/calmh/xdr")
+      (license x11))))
+
+(define-public golang-github-com-cznic-b
+  (let ((commit "bcff30a622dbdcb425aba904792de1df606dab7c"))
+    (package
+      (name "golang-github-com-cznic-b")
+      (version (string-append "20160716." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/cznic/b")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "0lw0d926wqxfn32yhvl5c5wh36glgdvsm5v01w4xys18cgcliasr"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/cznic/b"))
+      (synopsis "Implements a B+tree")
+      (description "Implements a B+tree")
+      (home-page "https://github.com/cznic/b")
+      (license bsd-3))))
+
+(define-public golang-github-com-cznic-bufs
+  (let ((commit "3dcccbd7064a1689f9c093a988ea11ac00e21f51"))
+    (package
+      (name "golang-github-com-cznic-bufs")
+      (version (string-append "20160818." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/cznic/bufs")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "0w75wc15k0gayvj6fhnqgap1y2rhq51zvslhp3v4y1vcb11mbdw9"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/cznic/bufs"))
+      (synopsis "Implements a simple buffer cache")
+      (description "Implements a simple buffer cache")
+      (home-page "https://github.com/cznic/bufs")
+      (license bsd-3))))
+
+(define-public golang-github-com-cznic-fileutil
+  (let ((commit "1c9c88fbf552b3737c7b97e1f243860359687976"))
+    (package
+      (name "golang-github-com-cznic-fileutil")
+      (version (string-append "20180708." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/cznic/fileutil")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "1imk4wjgfhyb4m8dm8qbm5lz263lyb27602v3mx8j3dzqjpagg8g"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/cznic/fileutil"))
+      (synopsis "Collects some file utility functions")
+      (description "Collects some file utility functions")
+      (home-page "https://github.com/cznic/fileutil")
+      (license bsd-3))))
+
+(define-public golang-github-com-cznic-internal-buffer
+  (package
+    (name "golang-github-com-cznic-internal-buffer")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cznic/internal")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "06zrlm94kq21q795pyhqqxlh3p8v6wahnkj4c1nsydg65bnh9c76"))))
+    (build-system go-build-system)
+    (inputs
+     `(("github.com/cznic/mathutil" ,golang-github-com-cznic-mathutil)))
+    (arguments
+     `(#:import-path "github.com/cznic/internal/buffer"
+       #:unpack-path "github.com/cznic/internal"))
+    (synopsis "Things that cannot be imported by 3rd party packages")
+    (description "Things that cannot be imported by 3rd party packages. Package buffer implements a pool of pointers to byte slices")
+    (home-page "https://github.com/cznic/internal/")
+    (license bsd-3)))
+
+(define-public golang-github-com-cznic-internal-file
+  (package
+    (name "golang-github-com-cznic-internal-file")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cznic/internal")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "06zrlm94kq21q795pyhqqxlh3p8v6wahnkj4c1nsydg65bnh9c76"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/cznic/internal/file"
+       #:unpack-path "github.com/cznic/internal"))
+    (synopsis "Things that cannot be imported by 3rd party packages")
+    (description "Things that cannot be imported by 3rd party packages. Package file provides an os.File-like interface of a memory mapped file")
+    (home-page "https://github.com/cznic/internal/")
+    (license bsd-3)))
+
+(define-public golang-github-com-cznic-internal-slice
+  (package
+    (name "golang-github-com-cznic-internal-slice")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cznic/internal")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "06zrlm94kq21q795pyhqqxlh3p8v6wahnkj4c1nsydg65bnh9c76"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/cznic/internal/slice"
+       #:unpack-path "github.com/cznic/internal"))
+    (synopsis "Things that cannot be imported by 3rd party packages")
+    (description "Things that cannot be imported by 3rd party packages. Package slice implements pools of pointers to slices")
+    (home-page "")
+    (license bsd-3)))
+
+(define-public golang-github-com-cznic-lldb
+  (package
+    (name "golang-github-com-cznic-lldb")
+    (version "1.0.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cznic/lldb")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "1f3jwc1zimcip52zkaj2pscginmxy9a9il8pi7w74z578ibqb1bv"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/cznic/lldb"))
+    (synopsis "Package lldb implements a low level database engine")
+    (description "Package lldb implements a low level database engine")
+    (home-page "https://github.com/cznic/lldb")
+    (license bsd-3)))
+
+(define-public golang-github-com-cznic-mathutil
+  (let ((commit "78ad7f262603437f0ecfebc835d80094f89c8f54"))
+    (package
+      (name "golang-github-com-cznic-mathutil")
+      (version (string-append "20161012." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/cznic/mathutil")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "0c5fcjvkp8czqgwpgbvd2vngw1c8w8b38yvvl7fzppq81dm298lz"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/cznic/mathutil"))
+      (synopsis "Utilities supplemental to the Go standard \"rand\" and \"math\" packages")
+      (description "Utilities supplemental to the Go standard \"rand\" and \"math\" packages")
+      (home-page "https://github.com/cznic/mathutil")
+      (license bsd-3))))
+
+(define-public golang-github-com-cznic-ql
+  (package
+    (name "golang-github-com-cznic-ql")
+    (version "1.0.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cznic/ql")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "1klqjqbxyw71y8i2wq9wdrjjjp19vckqi5j6wc4n0nidq78lsjry"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/cznic/ql"))
+    (synopsis "Package ql is a pure Go embedded SQL database")
+    (description "Package ql is a pure Go embedded SQL database")
+    (home-page "https://github.com/cznic/ql")
+    (license bsd-3)))
+
+(define-public golang-github-com-cznic-sortutil
+  (let ((commit "4c7342852e65c2088c981288f2c5610d10b9f7f4"))
+    (package
+      (name "golang-github-com-cznic-sortutil")
+      (version (string-append "20160617." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/cznic/sortutil")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "1i46kdwnh8p54sp0jkybd3ayc599hdy37kvwqrxlg746flz5inyl"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/cznic/sortutil"))
+      (synopsis "Utilities supplemental to the Go standard \"sort\" package")
+      (description "Utilities supplemental to the Go standard \"sort\" package")
+      (home-page "https://github.com/cznic/sortutil")
+      (license bsd-3))))
+
+(define-public golang-github-com-cznic-strutil
+  (let ((commit "1eb03e3cc9d345307a45ec82bd3016cde4bd4464"))
+    (package
+      (name "golang-github-com-cznic-strutil")
+      (version (string-append "20160430." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/cznic/strutil")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "0n4ib4ixpxh4fah145s2ikbzyqxbax8gj44081agg8jkzs74cnvm"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/cznic/strutil"))
+      (synopsis "Package strutil collects utils supplemental to the standard strings package")
+      (description "Package strutil collects utils supplemental to the standard strings package")
+      (home-page "https://github.com/cznic/strutil")
+      (license bsd-3))))
+
+
+(define-public golang-github-com-cznic-zappy
+  (let ((commit "2533cb5b45cc6c07421468ce262899ddc9d53fb7"))
+    (package
+      (name "golang-github-com-cznic-zappy")
+      (version (string-append "20160623." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/cznic/zappy")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "0mhldcqi0sqbyqs75b28cskz96iz51ymdsrx6m3i60wi94ym89yc"))))
+      (build-system go-build-system)
+      (inputs
+       `(("github.com/cznic/internal/buffer" ,golang-github-com-cznic-internal-buffer)
+         ("github.com/cznic/mathutil" ,golang-github-com-cznic-mathutil)))
+      (arguments
+       `(#:import-path "github.com/cznic/zappy"))
+      (synopsis "Package zappy implements the zappy block-based compression format")
+      (description "Package zappy implements the zappy block-based compression format. It aims for a combination of good speed and reasonable compression.")
+      (home-page "https://github.com/cznic/zappy")
+      (license bsd-3))))
+
+(define-public golang-github-com-d4l3k-messagediff
+  (package
+    (name "golang-github-com-d4l3k-messagediff")
+    (version "1.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/d4l3k/messagediff")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "0z64dwqk4xdwkj3f8bpqw0db87vgfamxzc65wn8lm6rfq3qjy1v5"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/d4l3k/messagediff"))
+    (synopsis "A library for doing diffs of arbitrary Golang structs")
+    (description "A library for doing diffs of arbitrary Golang structs")
+    (home-page "https://github.com/d4l3k/messagediff")
+    (license x11)))
+
+(define-public golang-github-com-edsrzf-mmap-go
+  (let ((commit "935e0e8a636ca4ba70b713f3e38a19e1b77739e8"))
+    (package
+      (name "golang-github-com-edsrzf-mmap-go")
+      (version (string-append "20160512." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/edsrzf/mmap-go")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "11a63wrjwfnchjhwqjp6yd5j0370ysppjgv31l5bmvvwps7whq9d"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/edsrzf/mmap-go"))
+      (synopsis "Portable mmap package for Go")
+      (description "Portable mmap package for Go")
+      (home-page "https://github.com/edsrzf/mmap-go")
+      (license bsd-3))))
+
+(define-public golang-github-com-gobwas-glob
+  (package
+    (name "golang-github-com-gobwas-glob")
+    (version "0.2.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/gobwas/glob")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "0dx0f293v1a0d8qi7ik5hdl26dapd8xm0hj9a9gc620vhj7khi9q"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/gobwas/glob"))
+    (synopsis "Go Globbing Library")
+    (description "Go Globbing Library")
+    (home-page "https://github.com/gobwas/glob")
+    (license x11)))
+
+(define-public golang-github-com-gogo-protobuf
+  (let ((commit "7883e1468d48d969e1c3ce4bcde89b6a7dd4adc4"))
+    (package
+      (name "golang-github-com-gogo-protobuf")
+      (version (string-append "0.2-1." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/gogo/protobuf")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "16ja7lqq96q0pnzgnbwnh0j8qzvqgns1nfk8ndxgkg4sg93bg372"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/gogo/protobuf/proto"
+         #:unpack-path "github.com/gogo/protobuf"))
+      (synopsis "Protocol Buffers for Go with Gadgets")
+      (description "gogoprotobuf is a fork of golang/protobuf with extra code generation features.
+
+This code generation is used to achieve:
+
+    fast marshalling and unmarshalling
+    more canonical Go structures
+    goprotobuf compatibility
+    less typing by optionally generating extra helper code
+    peace of mind by optionally generating test and benchmark code
+    other serialization formats
+")
+      (home-page "https://github.com/gogo/protobuf")
+      (license asl2.0))))
+
+(define-public golang-github-com-golang-groupcache-lru
+  (let ((commit "02826c3e79038b59d737d3b1c0a1d937f71a4433"))
+    (package
+      (name "golang-github-com-golang-groupcache-lru")
+      (version (string-append "20160516." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/golang/groupcache")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "0w46bsllddfij66nrg8jbfjsr54birvfww8a2fj9fmgyig5syn2x"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/golang/groupcache/lru"
+         #:unpack-path "github.com/golang/groupcache"))
+      (synopsis "groupcache is a caching and cache-filling library")
+      (description "groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases")
+      (home-page "https://github.com/golang/groupcache")
+      (license asl2.0))))
+
+(define-public golang-github-com-golang-snappy
+  (let ((commit "5f1c01d9f64b941dd9582c638279d046eda6ca31"))
+    (package
+      (name "golang-github-com-golang-snappy")
+      (version (string-append "20160304." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/golang/snappy")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "0qyhbgdjy2gf93y9c1n54a6ql75vinvwdqn6i4fi8i773j0vdjvf"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/golang/snappy"))
+      (synopsis "Snappy compression format in the Go programming language")
+      (description "Snappy compression format in the Go programming language")
+      (home-page "https://github.com/golang/snappy")
+      (license bsd-3))))
+
+(define-public golang-github-com-jackpal-gateway
+  (package
+    (name "golang-github-com-jackpal-gateway")
+    (version "1.0.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/jackpal/gateway")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "1bsml9kx49ihsnlq5k8cw7875ar4vmh9q15kpxn0dlvpafmma1bi"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/jackpal/gateway"))
+    (synopsis "Library for discovering the address of a LAN gateway")
+    (description "Library for discovering the address of a LAN gateway")
+    (home-page "https://github.com/jackpal/gateway")
+    (license bsd-3)))
+
+(define-public golang-github-com-juju-ratelimit
+  (let ((commit "77ed1c8a01217656d2080ad51981f6e99adaa177"))
+    (package
+      (name "golang-github-com-juju-ratelimit")
+      (version (string-append "20151125." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/juju/ratelimit")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "1r7xdl3bpdzny4d05fpm229864ipghqwv5lplv5im5b4vhv9ryp7"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/juju/ratelimit"))
+      (synopsis "Token-bucket-based rate limiter package")
+      (description "Token-bucket-based rate limiter package")
+      (home-page "https://github.com/juju/ratelimit")
+      (license lgpl3))))
+
+(define-public golang-github-com-kardianos-osext
+  (let ((commit "29ae4ffbc9a6fe9fb2bc5029050ce6996ea1d3bc"))
+    (package
+      (name "golang-github-com-kardianos-osext")
+      (version (string-append "20151222." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/kardianos/osext")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "1mawalaz84i16njkz6f9fd5jxhcbxkbsjnav3cmqq2dncv2hyv8a"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/kardianos/osext"))
+      (synopsis "Extensions to the standard \"os\" package. Executable and ExecutableFolder")
+      (description "Extensions to the standard \"os\" package. Executable and ExecutableFolder")
+      (home-page "https://github.com/kardianos/osext")
+      (license bsd-3))))
+
+(define-public golang-github-com-lib-pq
+  (let ((commit "ee1442bda7bd1b6a84e913bdb421cb1874ec629d")
+        (revision "1"))
+    (package
+      (name "golang-github-com-lib-pq")
+      (version (string-append "go1.0-cutoff-" revision "."
+                              (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/lib/pq")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "09nvbls0ka9v6bla9b2ls3cnjm2fsynzlbn4d2a3p0rmqnha35g7"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/lib/pq"))
+      (synopsis "Pure Go Postgres driver for database/sql")
+      (description "Pure Go Postgres driver for database/sql")
+      (home-page "https://github.com/lib/pq")
+      (license x11))))
+
+(define-public golang-github-com-minio-sha256-simd
+  (let ((commit "672e7bc9f3482375df73741cf57a157fe187ec26"))
+    (package
+      (name "golang-github-com-minio-sha256-simd")
+      (version (string-append "20160907." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/minio/sha256-simd")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "1a94cp0czir03w6ag12a7wnvs4cg9956i8mjm18pmgkx4c13qkwq"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/minio/sha256-simd"))
+      (synopsis "Pure Go implementation of SHA256 using SIMD instructions for Intel and ARM")
+      (description "Pure Go implementation of SHA256 using SIMD instructions for Intel and ARM")
+      (home-page "https://github.com/minio/sha256-simd")
+      (license asl2.0))))
+
+(define-public golang-github-com-onsi-ginkgo
+  (let ((commit "ac3d45ddd7ef5c4d7fc4d037b615a81f4d67981e")
+        (revision "1"))
+    (package
+      (name "golang-github-com-onsi-ginkgo")
+      (version (string-append "1.2.0-" revision "." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/onsi/ginkgo")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "1kq82l8x1ky03hcv8zdllvzqddf8i1yxajj76w21cchd1akzqr78"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/onsi/ginkgo"))
+      (synopsis "BDD Testing Framework for Go")
+      (description "BDD Testing Framework for Go")
+      (home-page "https://github.com/onsi/ginkgo")
+      (license x11))))
+
+(define-public golang-github-com-onsi-gomega
+  (let ((commit "a1094b2db2d4845621602c667bd4ccf09834544e")
+        (revision "1"))
+    (package
+      (name "golang-github-com-onsi-gomega")
+      (version (string-append "1.0-" revision "." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/onsi/gomega")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "0gwwb50jn9yz6aac8pdgidffnnr5h7whz75fmd9r78m6lpljvks0"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/onsi/gomega"))
+      (synopsis "Ginkgo's Preferred Matcher Library")
+      (description "Ginkgo's Preferred Matcher Library")
+      (home-page "https://github.com/onsi/gomega")
+      (license x11))))
+
+(define-public golang-github-com-oschwald-geoip2-golang
+  (let ((commit "51714a0e79df40e00a94ae5086ec2a5532c9ee57")
+        (revision "1"))
+    (package
+      (name "golang-github-com-oschwald-geoip2-golang")
+      (version (string-append "0.1.0-" revision "." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/oschwald/geoip2-golang")
+                      (commit "51714a0e79df40e00a94ae5086ec2a5532c9ee57")))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "1clcyv6wc79n9wckmwv21x7d8jkgrikr9pa159aml492gknpw2y8"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/oschwald/geoip2-golang"))
+      (synopsis "Unofficial MaxMind GeoIP2 Reader for Go")
+      (description "Unofficial MaxMind GeoIP2 Reader for Go")
+      (home-page "https://github.com/oschwald/geoip2-golang")
+      (license isc))))
+
+(define-public golang-github-com-oschwald-maxminddb-golang
+  (let ((commit "a26428e0305b837e06fe69221489819126a346c8")
+        (revision "1"))
+    (package
+      (name "golang-github-com-oschwald-maxminddb-golang")
+      (version (string-append "0.2.0-" revision "." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/oschwald/maxminddb-golang")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "0d5a2bqsanxy57bfgwl9dwd230agi3fd14vay0jhb2fmhpw3bb73"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/oschwald/maxminddb-golang"))
+      (synopsis "MaxMind DB Reader for Go")
+      (description "MaxMind DB Reader for Go")
+      (home-page "https://github.com/oschwald/maxminddb-golang")
+      (license isc))))
+
+(define-public golang-github-com-rcrowley-go-metrics
+  (let ((commit "eeba7bd0dd01ace6e690fa833b3f22aaec29af43"))
+    (package
+      (name "golang-github-com-rcrowley-go-metrics")
+      (version (string-append "20160226." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/rcrowley/go-metrics")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "18jissbw1226vzqmqpgk3f3qdgwi9cb1i8x9hhq28bc9zv0c4j79"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/rcrowley/go-metrics"))
+      (synopsis "Go port of Coda Hale's Metrics library")
+      (description "Go port of Coda Hale's Metrics library")
+      (home-page "https://github.com/rcrowley/go-metrics")
+      (license bsd-2))))
+
+(define-public golang-github-com-sasha-s-go-deadlock
+  (package
+    (name "golang-github-com-sasha-s-go-deadlock")
+    (version "0.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/sasha-s/go-deadlock")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "193cdmd6vrnl6vdv6pr3671cpl1nwapdawqs462xmqkf16mggjfz"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/sasha-s/go-deadlock"))
+    (synopsis "Online deadlock detection in go")
+    (description "Online deadlock detection in go")
+    (home-page "https://github.com/sasha-s/go-deadlock")
+    (license asl2.0)))
+
+(define-public golang-github-com-stathat-go
+  (let ((commit "91dfa3a59c5b233fef9a346a1460f6e2bc889d93"))
+    (package
+      (name "golang-github-com-stathat-go")
+      (version (string-append "20160304." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/stathat/go")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "105ql5v8r4hqcsq0ag7asdxqg9n7rvf83y1q1dj2nfjyn4manv6r"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/stathat/go"))
+      (synopsis "This is a Go package for posting stats to your StatHat account")
+      (description "This is a Go package for posting stats to your StatHat account")
+      (home-page "https://github.com/stathat/go")
+      (license x11))))
+
+(define-public golang-github-com-syndtr-goleveldb
+  (let ((commit "6ae1797c0b42b9323fc27ff7dcf568df88f2f33d"))
+    (package
+      (name "golang-github-com-syndtr-goleveldb")
+      (version (string-append "20160825." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/syndtr/goleveldb")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32 "0cxsm8zlf3c53z2gk73walqrp0gl8bn49fb0dlap4kgwqd6p5dx8"))))
+      (build-system go-build-system)
+      (inputs
+       `(("github.com/golang/snappy" ,golang-github-com-golang-snappy)))
+      (arguments
+       `(#:import-path "github.com/syndtr/goleveldb/leveldb"
+         #:unpack-path "github.com/syndtr/goleveldb"))
+      (synopsis "LevelDB key/value database in Go")
+      (description "This is an implementation of the LevelDB key/value database in the Go programming language")
+      (home-page "https://github.com/syndtr/goleveldb")
+      (license bsd-2))))
+
+(define-public golang-github-com-thejerf-suture
+  (package
+    (name "golang-github-com-thejerf-suture")
+    (version "2.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/thejerf/suture")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32 "082j4rd1l52djm4sv63f3rh2r5nwzvpdvnyps85qjw1i1cd8c7sn"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/thejerf/suture"))
+    (synopsis "Supervisor trees for Go")
+    (description "Suture provides Erlang-ish supervisor trees for Go. \"Supervisor trees\" -> \"sutree\" -> \"suture\" -> holds your code together when it's trying to die.
+
+This library has hit maturity, and isn't expected to be changed radically. This can also be imported via gopkg.in/thejerf/suture.v1 .
+
+It is intended to deal gracefully with the real failure cases that can occur with supervision trees (such as burning all your CPU time endlessly restarting dead services), while also making no unnecessary demands on the \"service\" code, and providing hooks to perform adequate logging with in a production environment")
+    (home-page "https://github.com/thejerf/suture")
+    (license x11)))
+
+(define-public golang-github-com-vitrun-qart-coding
+  (let ((commit "ccb109cf25f0cd24474da73b9fee4e7a3e8a8ce0"))
+    (package
+      (name "golang-github-com-vitrun-qart-coding")
+      (version (string-append "20160420." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/vitrun/qart")
+                      (commit commit)))
+                (file-name (string-append "golang-github-com-vitrun-qart-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "0bhp768b8ha6f25dmhwn9q8m2lkbn4qnjf8n7pizk25jn5zjdvc8"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/vitrun/qart/coding"
+         #:unpack-path "github.com/vitrun/qart"))
+      (synopsis "Package coding implements low-level QR coding details")
+      (description "Instead of scribbling on redundant pieces and relying on error correction to preserve the meaning, qart engineers the encoded values to create the picture in a code with no inherent errors. Package coding implements low-level QR coding details")
+      (home-page "https://github.com/vitrun/qart/")
+      (license bsd-3))))
+
+(define-public golang-github-com-vitrun-qart-gf256
+  (let ((commit "ccb109cf25f0cd24474da73b9fee4e7a3e8a8ce0"))
+    (package
+      (name "golang-github-com-vitrun-qart-gf256")
+      (version (string-append "20160420." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/vitrun/qart")
+                      (commit commit)))
+                (file-name (string-append "golang-github-com-vitrun-qart-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "0bhp768b8ha6f25dmhwn9q8m2lkbn4qnjf8n7pizk25jn5zjdvc8"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/vitrun/qart/gf256"
+         #:unpack-path "github.com/vitrun/qart"))
+      (synopsis "Package gf256 implements arithmetic over the Galois Field GF(256)")
+      (description "Instead of scribbling on redundant pieces and relying on error correction to preserve the meaning, qart engineers the encoded values to create the picture in a code with no inherent errors. Package gf256 implements arithmetic over the Galois Field GF(256)")
+      (home-page "https://github.com/vitrun/qart")
+      (license bsd-3))))
+
+(define-public golang-github-com-vitrun-qart-qr
+  (let ((commit "ccb109cf25f0cd24474da73b9fee4e7a3e8a8ce0"))
+    (package
+      (name "golang-github-com-vitrun-qart-qr")
+      (version (string-append "20160420." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/vitrun/qart")
+                      (commit commit)))
+                (file-name (string-append "golang-github-com-vitrun-qart-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "0bhp768b8ha6f25dmhwn9q8m2lkbn4qnjf8n7pizk25jn5zjdvc8"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/vitrun/qart/qr"
+         #:unpack-path "github.com/vitrun/qart"))
+      (synopsis "Qart generates not-so-ugly qr codes")
+      (description "Instead of scribbling on redundant pieces and relying on error correction to preserve the meaning, qart engineers the encoded values to create the picture in a code with no inherent errors.")
+      (home-page "https://github.com/vitrun/qart")
+      (license bsd-3))))
+
+(define-public golang-org-x-crypto-bcrypt
+  (let ((commit "e311231e83195f401421a286060d65643f9c9d40"))
+    (package
+      (name "golang-org-x-crypto-bcrypt")
+      (version (string-append "20160912." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/crypto")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-crypto-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "1n3p77z0x9rifvymifpvnmfcfzxnly9da2zghrhb3jrkvjvjc2mw"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/crypto/bcrypt"
+         #:unpack-path "golang.org/x/crypto"))
+      (synopsis "Go supplementary cryptography libraries")
+      (description "Go supplementary cryptography libraries")
+      (home-page "https://go.googlesource.com/crypto/")
+      (license bsd-3))))
+
+
+(define-public golang-org-x-crypto-blowfish
+  (let ((commit "e311231e83195f401421a286060d65643f9c9d40"))
+    (package
+      (name "golang-org-x-crypto-blowfish")
+      (version (string-append "20160912." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/crypto")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-crypto-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "1n3p77z0x9rifvymifpvnmfcfzxnly9da2zghrhb3jrkvjvjc2mw"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/crypto/blowfish"
+         #:unpack-path "golang.org/x/crypto"))
+      (synopsis "Go supplementary cryptography libraries")
+      (description "Go supplementary cryptography libraries")
+      (home-page "https://go.googlesource.com/crypto/")
+      (license bsd-3))))
+
+(define-public golang-org-x-net-bpf
+  (let ((commit "749a502dd1eaf3e5bfd4f8956748c502357c0bbe"))
+    (package
+      (name "golang-org-x-net-bpf")
+      (version (string-append "20160912." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/net")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-net-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "18z4iqprpaf6264cac9g3jp8qdx4i4p0w724rqgglx8dfj78dx9v"))))
+      (build-system go-build-system)
+      (inputs
+       `(("golang.org/x/net/internal/iana" ,golang-org-x-net-internal-iana)
+         ("golang.org/x/net/internal/netreflect" ,golang-org-x-net-internal-netreflect)))
+      (arguments
+       `(#:import-path "golang.org/x/net/bpf"
+         #:unpack-path "golang.org/x/net"))
+      (synopsis "Go supplementary network libraries")
+      (description "Go supplementary network libraries")
+      (home-page "https://go.googlesource.com/net/")
+      (license bsd-3))))
+
+(define-public golang-org-x-net-context
+  (let ((commit "749a502dd1eaf3e5bfd4f8956748c502357c0bbe"))
+    (package
+      (name "golang-org-x-net-context")
+      (version (string-append "20160912." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/net")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-net-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "18z4iqprpaf6264cac9g3jp8qdx4i4p0w724rqgglx8dfj78dx9v"))))
+      (build-system go-build-system)
+      (inputs
+       `(("golang.org/x/net/internal/iana" ,golang-org-x-net-internal-iana)
+         ("golang.org/x/net/internal/netreflect" ,golang-org-x-net-internal-netreflect)))
+      (arguments
+       `(#:import-path "golang.org/x/net/context"
+         #:unpack-path "golang.org/x/net"))
+      (synopsis "Go supplementary network libraries")
+      (description "Go supplementary network libraries")
+      (home-page "https://go.googlesource.com/net/")
+      (license bsd-3))))
+
+(define-public golang-org-x-net-internal-iana
+  (let ((commit "08f168e593b5aab61849054b77981de812666697"))
+    (package
+      (name "golang-org-x-net-internal-iana")
+      (version (string-append "20160226." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/net")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-net-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "1vmzs4gqj0jlg1313gkisnp0c6914qn3781lnbzmbnjfs8paflr7"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/net/internal/iana"
+         #:unpack-path "golang.org/x/net"))
+      (synopsis "Go supplementary network libraries")
+      (description "Go supplementary network libraries")
+      (home-page "https://go.googlesource.com/net/")
+      (license bsd-3))))
+
+(define-public golang-org-x-net-internal-netreflect
+  (let ((commit "749a502dd1eaf3e5bfd4f8956748c502357c0bbe"))
+    (package
+      (name "golang-org-x-net-internal-netreflect")
+      (version (string-append "20160912." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/net")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-net-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "18z4iqprpaf6264cac9g3jp8qdx4i4p0w724rqgglx8dfj78dx9v"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/net/internal/netreflect"
+         #:unpack-path "golang.org/x/net"))
+      (synopsis "Go supplementary network libraries")
+      (description "Go supplementary network libraries")
+      (home-page "https://go.googlesource.com/net")
+      (license bsd-3))))
+
+(define-public golang-org-x-net-ipv6
+  (let ((commit "749a502dd1eaf3e5bfd4f8956748c502357c0bbe"))
+    (package
+      (name "golang-org-x-net-ipv6")
+      (version (string-append "20160912." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/net")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-net-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "18z4iqprpaf6264cac9g3jp8qdx4i4p0w724rqgglx8dfj78dx9v"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/net/ipv6"
+         #:unpack-path "golang.org/x/net"))
+      (synopsis "Go supplementary network libraries")
+      (description "Go supplementary network libraries")
+      (home-page "https://go.googlesource.com/net")
+      (license bsd-3))))
+
+(define-public golang-org-x-net-proxy
+  (let ((commit "749a502dd1eaf3e5bfd4f8956748c502357c0bbe"))
+    (package
+      (name "golang-org-x-net-proxy")
+      (version (string-append "20160912." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/net")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-net-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "18z4iqprpaf6264cac9g3jp8qdx4i4p0w724rqgglx8dfj78dx9v"))))
+      (build-system go-build-system)
+      (inputs
+       `(("golang.org/x/net/internal/iana" ,golang-org-x-net-internal-iana)
+         ("golang.org/x/net/internal/netreflect" ,golang-org-x-net-internal-netreflect)))
+      (arguments
+       `(#:import-path "golang.org/x/net/internal/proxy"
+         #:unpack-path "golang.org/x/net"))
+      (synopsis "Go supplementary network libraries")
+      (description "Go supplementary network libraries")
+      (home-page "https://go.googlesource.com/net")
+      (license bsd-3))))
+
+(define-public golang-org-x-net-route
+  (let ((commit "749a502dd1eaf3e5bfd4f8956748c502357c0bbe"))
+    (package
+      (name "golang-org-x-net-route")
+      (version (string-append "20160912." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/net")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-net-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "18z4iqprpaf6264cac9g3jp8qdx4i4p0w724rqgglx8dfj78dx9v"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/net/route"
+         #:unpack-path "golang.org/x/net"))
+      (synopsis "Go supplementary network libraries")
+      (description "Go supplementary network libraries")
+      (home-page "https://go.googlesource.com/net")
+      (license bsd-3))))
+
+(define-public golang-org-x-sys-unix
+  (let ((commit "a408501be4d17ee978c04a618e7a1b22af058c0e"))
+    (package
+      (name "golang-org-x-sys-unix")
+      (version (string-append "20160704." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/sys")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-sys-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "1nwvs594wrzwk1bnhdsna6n8665vzlzms171sw0mkmfb713phl8q"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/sys/unix"
+         #:unpack-path "golang.org/x/sys"))
+      (synopsis "Go packages for low-level interaction with the operating system")
+      (description "Go packages for low-level interaction with the operating system")
+      (home-page "https://go.googlesource.com/sys")
+      (license bsd-3))))
+
+(define-public golang-org-x-text-transform
+  (let ((commit "a71fd10341b064c10f4a81ceac72bcf70f26ea34"))
+    (package
+      (name "golang-org-x-text-transform")
+      (version (string-append "20160215." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/text")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-text-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "1igxqrgnnb6983fl0yck0xal2hwnkcgbslr7cxyrg7a65vawd0q1"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/text/transform"
+         #:unpack-path "golang.org/x/text"))
+      (synopsis "Go text processing support")
+      (description "Go text processing support")
+      (home-page "https://go.googlesource.com/text")
+      (license bsd-3))))
+
+(define-public golang-org-x-text-unicode-norm
+  (let ((commit "a71fd10341b064c10f4a81ceac72bcf70f26ea34"))
+    (package
+      (name "golang-org-x-text-unicode-norm")
+      (version (string-append "20160215." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/text")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-text-"
+                                          version "-checkout"))
+                (sha256
+                 (base32 "1igxqrgnnb6983fl0yck0xal2hwnkcgbslr7cxyrg7a65vawd0q1"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/text/unicode/norm"
+         #:unpack-path "golang.org/x/text"))
+      (synopsis "Go text processing support")
+      (description "Go text processing support")
+      (home-page "https://go.googlesource.com/text")
+      (license bsd-3))))
-- 
2.10.1