diff mbox series

[bug#37444] added aerc, a simple email client and its dependcies

Message ID 20190918082313.3514-1-mjbecze@riseup.net
State Accepted
Headers show
Series [bug#37444] added aerc, a simple email client and its dependcies | expand

Commit Message

Martin Becze Sept. 18, 2019, 8:23 a.m. UTC
---
This adds aerc, which is a terminal based email client written in go. 

 gnu/packages/golang.scm | 579 +++++++++++++++++++++++++++++++++++++++-
 gnu/packages/mail.scm   |  74 +++++
 2 files changed, 646 insertions(+), 7 deletions(-)

Comments

Ricardo Wurmus Sept. 18, 2019, 9:01 a.m. UTC | #1
Hi Martin,

> This adds aerc, which is a terminal based email client written in go. 

Thank you for your patch!

Could you please separate the independent changes into separate commits
and add commit summaries?  For example, the update of
go-github-com-mitchellh-go-homedir should be done separately.

Please also explain why “inputs” had to be changed to
“propagated-inputs” in some packages, and mention these kind of changes
in the commit summary.

Thanks!
Martin Becze Sept. 18, 2019, 9:20 a.m. UTC | #2
Certainly! I'll get that up later today. On the propagated-inputs issue.
So I might be wrong here. But since all the go libraries are source only
it doesn't matter to the end result if the are propagated or not if the
libraries are used as `native-inputs`.. they shouldn't be left lying
around (I think?). Now the reason why the need to be propagated is that
when the go compiler go to compile the top level app (aerc) it needs to
have in it's GOPATH all of the dependencies and the dependencies of the
dependencies. The other way to do it is to put all of dependencies and
the dependencies of the dependencies in the native-input. But that
didn't seem right to me. Let me know what you think!

On 2019-09-18 09:01, Ricardo Wurmus wrote:
> Hi Martin,
> 
>> This adds aerc, which is a terminal based email client written in go.
> 
> Thank you for your patch!
> 
> Could you please separate the independent changes into separate commits
> and add commit summaries?  For example, the update of
> go-github-com-mitchellh-go-homedir should be done separately.
> 
> Please also explain why “inputs” had to be changed to
> “propagated-inputs” in some packages, and mention these kind of changes
> in the commit summary.
> 
> Thanks!
Martin Becze Sept. 18, 2019, 9:29 a.m. UTC | #3
also if i do something like `git send-email HEAD~3` won't it send
multiple emails? is the advised way to do it?

On 2019-09-18 09:01, Ricardo Wurmus wrote:
> Hi Martin,
> 
>> This adds aerc, which is a terminal based email client written in go.
> 
> Thank you for your patch!
> 
> Could you please separate the independent changes into separate commits
> and add commit summaries?  For example, the update of
> go-github-com-mitchellh-go-homedir should be done separately.
> 
> Please also explain why “inputs” had to be changed to
> “propagated-inputs” in some packages, and mention these kind of changes
> in the commit summary.
> 
> Thanks!
Björn Höfling Sept. 18, 2019, 9:42 a.m. UTC | #4
On Wed, 18 Sep 2019 02:29:18 -0700
Martin Becze <mjbecze@riseup.net> wrote:

> also if i do something like `git send-email HEAD~3` won't it send
> multiple emails? is the advised way to do it?

If you would send all n patches directly to guix-patches, we would
receive the patches distributed over n bug-entries.

This is documented here:

https://guix.gnu.org/manual/en/guix.html#Sending-a-Patch-Series-1

As you already generated a bug-number with your first patch, you can
directly use it:

37444@debbugs.gnu.org

Thanks,

Björn
pjals--- via Guix-patches via Sept. 18, 2019, 9:48 a.m. UTC | #5
Martin,

Martin Becze 写道:
> also if i do something like `git send-email HEAD~3` won't it 
> send
> multiple emails? is the advised way to do it?

Once you've been assigned a bug number, sending multiple patches 
‘--to=nnn@debbugs’ is fine.

It's sending more than one patch ‘--to=guix-patches/bug-guix@’ 
that's discouraged (to say the least), as that will create a new 
bug number for each patch…

Kind regards,

T G-R
Martin Becze Sept. 22, 2019, 8:55 a.m. UTC | #6
On 2019-09-18 09:01, Ricardo Wurmus wrote:
> Hi Martin,
> 
>> This adds aerc, which is a terminal based email client written in go.
> 
> Thank you for your patch!
> 
> Could you please separate the independent changes into separate commits
> and add commit summaries?  For example, the update of
> go-github-com-mitchellh-go-homedir should be done separately.
> 
> Please also explain why “inputs” had to be changed to
> “propagated-inputs” in some packages, and mention these kind of changes
> in the commit summary.
> 
> Thanks!

just bumping, updated patch has been made and split into commits now.
https://issues.guix.gnu.org/issue/37444 let me know if that is ok
Ludovic Courtès Sept. 26, 2019, 9:37 a.m. UTC | #7
Hi Martin,

Martin Becze <mjbecze@riseup.net> skribis:

> On 2019-09-18 09:01, Ricardo Wurmus wrote:
>> Hi Martin,
>> 
>>> This adds aerc, which is a terminal based email client written in go.
>> 
>> Thank you for your patch!
>> 
>> Could you please separate the independent changes into separate commits
>> and add commit summaries?  For example, the update of
>> go-github-com-mitchellh-go-homedir should be done separately.
>> 
>> Please also explain why “inputs” had to be changed to
>> “propagated-inputs” in some packages, and mention these kind of changes
>> in the commit summary.
>> 
>> Thanks!
>
> just bumping, updated patch has been made and split into commits now.
> https://issues.guix.gnu.org/issue/37444 let me know if that is ok

Like Ricardo mentioned, it would be great if patch #1 were split into
several commits, one per new package.  That’s how we usually do it.

I saw your commit logs provide explanations.  However, they are all on
the “subject line” of the commit log.  Could you take a look at
<https://guix.gnu.org/manual/en/html_node/Submitting-Patches.html>
regarding the format of commit logs, or run, say, “git log
gnu/packages/golang.scm” to view examples?

I could do these changes on your behalf, but I’d rather let you do it to
make sure I don’t mess up or misrepresent what you did!

Thanks,
Ludo’.
Martin Becze Oct. 1, 2019, 9:34 p.m. UTC | #8
On 2019-09-26 09:37, Ludovic Courtès wrote:
> Hi Martin,
> 
> Martin Becze <mjbecze@riseup.net> skribis:
> 
>> On 2019-09-18 09:01, Ricardo Wurmus wrote:
>>> Hi Martin,
>>>
>>>> This adds aerc, which is a terminal based email client written in go.
>>>
>>> Thank you for your patch!
>>>
>>> Could you please separate the independent changes into separate commits
>>> and add commit summaries?  For example, the update of
>>> go-github-com-mitchellh-go-homedir should be done separately.
>>>
>>> Please also explain why “inputs” had to be changed to
>>> “propagated-inputs” in some packages, and mention these kind of changes
>>> in the commit summary.
>>>
>>> Thanks!
>>
>> just bumping, updated patch has been made and split into commits now.
>> https://issues.guix.gnu.org/issue/37444 let me know if that is ok
> 
> Like Ricardo mentioned, it would be great if patch #1 were split into
> several commits, one per new package.  That’s how we usually do it.
> 
> I saw your commit logs provide explanations.  However, they are all on
> the “subject line” of the commit log.  Could you take a look at
> <https://guix.gnu.org/manual/en/html_node/Submitting-Patches.html>
> regarding the format of commit logs, or run, say, “git log
> gnu/packages/golang.scm” to view examples?
> 
> I could do these changes on your behalf, but I’d rather let you do it to
> make sure I don’t mess up or misrepresent what you did!
> 
> Thanks,
> Ludo’.

ohhh i think i finally figured it out. (but not how to use
add-change-log-entry, it looks like ppl are using that to generate the
messages somehow?) anyways, v4 incoming!
\( June 11, 2022, 8:10 p.m. UTC | #9
Superseded by #55903 <https://issues.guix.gnu.org/55903>.
diff mbox series

Patch

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 819cc6229e..52f3e56d40 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -16,6 +16,7 @@ 
 ;;; Copyright @ 2019 Giovanni Biscuolo <g@xelera.eu>
 ;;; Copyright @ 2019 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2019 Martin Becze <mjbecze@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -801,6 +802,31 @@  expressing configuration which is easy for both humans and machines to read.")
 Go programming language.")
       (home-page "https://go.googlesource.com/tools/")
       (license license:bsd-3))))
+(define-public go-golang-org-x-oauth2
+  (let ((commit "0f29369cfe4552d0e4bcddc57cc75f4d7e672a33")
+        (url "https://go.googlesource.com/oauth2"))
+    (package
+      (name "go-golang-org-x-oauth2")
+      (version (git-version "0.0.0" "0" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url url)
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-oauth2-"
+                                          version "-checkout"))
+                (sha256
+                 (base32
+                  "06jwpvx0x2gjn2y959drbcir5kd7vg87k0r1216abk6rrdzzrzi2"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/oauth2"))
+      (propagated-inputs
+       `(("go-golang-org-x-net-context" ,go-golang-org-x-net-context)))
+      (synopsis "oauth2 package contains a client implementation for OAuth 2.0 spec.")
+      (description "This package contains a client implementation for OAuth 2.0 spec.")
+      (home-page url)
+      (license license:bsd-3))))
 
 (define-public go-golang-org-x-crypto
   (let ((commit "b7391e95e576cacdcdd422573063bc057239113d")
@@ -2918,21 +2944,19 @@  statistics for wrapped connections.")
       (license license:expat))))
 
 (define-public go-github-com-mitchellh-go-homedir
-  (let ((commit "ae18d6b8b3205b561c79e8e5f69bff09736185f4")
-        (revision "0"))
     (package
       (name "go-github-com-mitchellh-go-homedir")
-      (version (git-version "1.0.0" revision commit))
+      (version "1.1.0")
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/mitchellh/go-homedir.git")
-               (commit commit)))
+               (commit (string-append "v" version))))
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0f0z0aa4wivk4z1y503dmnw0k0g0g403dly8i4q263gfshs82sbq"))))
+           "0ydzkipf28hwj2bfxqmwlww47khyk6d152xax4bnyh60f4lq3nx1"))))
       (build-system go-build-system)
       (arguments
        (quote (#:import-path "github.com/mitchellh/go-homedir"
@@ -2954,7 +2978,7 @@  package cannot cross compile.  But 99% of the time the use for
 @command{os/user} is just to retrieve the home directory, which we can do for
 the current user without cgo.  This library does that, enabling
 cross-compilation.")
-      (license license:expat))))
+      (license license:expat)))
 
 (define-public go-github-com-multiformats-go-multiaddr
   (let ((commit "fe1c46f8be5af4aff4db286e08839295bd922efb")
@@ -3383,7 +3407,7 @@  colorspaces.")
     (build-system go-build-system)
     (arguments
      '(#:import-path "github.com/gdamore/encoding"))
-    (inputs
+    (propagated-inputs
      `(("go-golang-org-x-text-encoding" ,go-golang-org-x-text-encoding)
        ("go-golang-org-x-text-transform" ,go-golang-org-x-text-transform)))
     (home-page "https://github.com/gdamore/encoding")
@@ -3437,6 +3461,30 @@  formatting.  It also favors portability, and includes support for all POSIX
 systems.")
       (license license:expat))))
 
+(define-public go-github-com-mattn-go-pointer
+  (let ((commit "a0a44394634f41e4992b173b24f14fecd3318a67")
+        (url "https://github.com/mattn/go-pointer"))
+    (package
+      (name "go-github-com-mattn-go-pointer")
+      (version (git-version "0.0.0" "0" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url url)
+               (commit commit)))
+         (sha256
+          (base32
+           "09w7hcyc0zz2g23vld6jbcmq4ar27xakp1ldjvh549i5izf2anhz"))
+         (file-name (git-file-name name version))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/mattn/go-pointer"))
+      (home-page url)
+      (synopsis "Utility for cgo")
+      (description "Utility for cgo")
+      (license license:expat))))
+
 (define-public go-github-com-mattn-go-shellwords
   (let ((commit "2444a32a19f450fabaa0bb3e96a703f15d9a97d2")
         (version "1.0.5")
@@ -3686,3 +3734,520 @@  on running processes and system utilization (CPU, memory, disks, network,
 sensors).")
       (home-page "https://github.com/shirou/gopsutil")
       (license license:bsd-3))))
+
+(define-public go-github-com-danwakefield-fnmatch
+  (let ((commit "cbb64ac3d964b81592e64f957ad53df015803288")
+        (url "https://github.com/danwakefield/fnmatch"))
+    (package
+     (name "go-github-com-danwakefield-fnmatch")
+     (version (git-version "0.0.0" "0" commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit commit)))
+       (sha256
+        (base32
+         "0cbf511ppsa6hf59mdl7nbyn2b2n71y0bpkzbmfkdqjhanqh1lqz"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/danwakefield/fnmatch"))
+     (home-page url)
+     (synopsis "Updated clone of kballards golang fnmatch
+ gist (https://gist.github.com/kballard/272720)")
+     (description "Updated clone of kballards golang fnmatch
+gist (https://gist.github.com/kballard/272720)")
+     (license license:bsd-2))))
+
+(define-public go-github-com-ddevault-go-libvterm
+  (let ((commit "b7d861da381071e5d3701e428528d1bfe276e78f")
+        (url "https://github.com/ddevault/go-libvterm"))
+    (package
+     (name "go-github-com-ddevault-go-libvterm")
+     (version (git-version "0.0.0" "0" commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit commit)))
+       (sha256
+        (base32
+         "06vv4pgx0i6hjdjcar4ch18hp9g6q6687mbgkvs8ymmbacyhp7s6"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/ddevault/go-libvterm"))
+     (propagated-inputs
+      `(("go-github-com-mattn-go-pointer" ,go-github-com-mattn-go-pointer)))
+     (home-page url)
+     (synopsis "Go binding to libvterm")
+     (description "This is a personal fork for use with aerc. Breaking changes
+ will come unannounced.")
+     (license license:expat))))
+
+(define-public go-github-com-emersion-go-imap
+  (let ((url "https://github.com/emersion/go-imap"))
+    (package
+     (name "go-github-com-emersion-go-imap")
+     (version "1.0.0")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit (string-append "v" version))))
+       (sha256
+        (base32
+         "1id8j2d0rn9sj8y62xhyygqpk5ygrcl9jlfx92sm1jsvxsm3kywq"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/emersion/go-imap"))
+     (native-inputs
+      `(("go-golang-org-x-text-encoding" ,go-golang-org-x-text-encoding)
+        ("go-golang-org-x-text-transform" ,go-golang-org-x-text-transform)))
+     (home-page url)
+     (synopsis "An IMAP4rev1 library written in Go")
+     (description "An IMAP4rev1 library written in Go. It can be used to build
+ a client and/or a server.")
+     (license license:expat))))
+
+(define-public go-github-com-emersion-go-sasl
+  (let ((commit "240c8404624e076f633766c16adbe96c7ac516b7")
+        (url "https://github.com/emersion/go-sasl"))
+    (package
+     (name "go-github-com-emersion-go-sasl")
+     (version (git-version "0.0.0" "0" commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit commit)))
+       (sha256
+        (base32
+         "1py18p3clp474xhx6ypyp0bgv6n1dfm24m95cyyqb0k3vibar6ih"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/emersion/go-sasl"))
+     (home-page url)
+     (synopsis "A SASL library written in Go")
+     (description "A SASL library written in Go.")
+     (license license:expat))))
+
+(define-public go-github-com-emersion-go-imap-idle
+  (let ((commit "2704abd7050ed7f2143753554ee23affdf847bd9")
+        (url "https://github.com/emersion/go-imap-idle"))
+    (package
+     (name "go-github-com-emersion-go-imap-idle")
+     (version (git-version "0.0.0" "0" commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit commit)))
+       (sha256
+        (base32
+         "0blwcadmxgqsdwgr9m4jqfbpfa2viw5ah19xbybpa1z1z4aj5cbc"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/emersion/go-imap-idle"))
+     (native-inputs
+      `(("go-github-com-emersion-go-imap" ,go-github-com-emersion-go-imap)
+        ("go-github-com-emersion-go-sasl" ,go-github-com-emersion-go-sasl)
+        ("go-golang-org-x-text-encoding" ,go-golang-org-x-text-encoding)
+        ("go-golang-org-x-text-transform" ,go-golang-org-x-text-transform)))
+     (home-page url)
+     (synopsis "IDLE extension for go-imap")
+     (description "IDLE extension for go-imap.")
+     (license license:expat))))
+
+(define-public go-github-com-emersion-go-maildir
+  (let ((url "https://github.com/emersion/go-maildir")
+        (commit "941194b0ac705efac39bd89c5eae6cce84b26202"))
+    (package
+     (name "go-github-com-emersion-go-maildir")
+     (version (git-version "0.0.0" "0" commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emersion/go-maildir")
+             (commit commit)))
+       (sha256
+        (base32
+         "10dm0qvjm4payh2hfifwfpz9511fngp2vaf2yrg111di67x1148m"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/emersion/go-maildir"))
+     (home-page url)
+     (synopsis "A Go library for maildir")
+     (description "A Go library for maildir.")
+     (license license:expat))))
+
+(define-public go-github-com-emersion-go-message
+  (let ((url "https://github.com/emersion/go-message"))
+    (package
+     (name "go-github-com-emersion-go-message")
+     (version "0.10.7")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit (string-append "v" version))))
+       (sha256
+        (base32
+         "05s6x6x5k5b4qmfam716b5wi47rrvj702lfkc6gr681z64g2hirb"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/emersion/go-message"))
+     (propagated-inputs
+      `(("go-github-com-emersion-go-textwrapper"
+         ,go-github-com-emersion-go-textwrapper)
+        ("go-github-com-martinlindhe-base36"
+	 ,go-github-com-martinlindhe-base36)))
+     (home-page url)
+     (synopsis "A Go library for the Internet Message Format")
+     (description "A Go library for the Internet Message Format. It implements:
+@itemize
+@item RFC 5322: Internet Message Format
+@item RFC 2045, RFC 2046 and RFC 2047: Multipurpose Internet Mail Extensions
+@item RFC 2183: Content-Disposition Header Field
+@end itemize")
+     (license license:expat))))
+
+(define-public go-github-com-emersion-go-textwrapper
+  (let ((url "https://github.com/emersion/go-textwrapper")
+        (commit "d0e65e56babe3f687ff94c1d764ca0e6aa7723ee"))
+    (package
+     (name "go-github-com-emersion-go-textwrapper")
+     (version (git-version "0.0.0" "0" commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit commit)))
+       (sha256
+        (base32
+         "1nw8qpjjbpkz49wd19yg2qsln1dmdfxi83wp2aa819cv6xxf2y7l"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/emersion/go-textwrapper"))
+     (home-page url)
+     (synopsis "A writer that wraps long text lines to a specified length")
+     (description "A writer that wraps long text lines to a specified length")
+     (license license:expat))))
+
+(define-public go-github-com-emersion-go-smtp
+  (let ((url "https://github.com/emersion/go-smtp"))
+    (package
+     (name "go-github-com-emersion-go-smtp")
+     (version "0.11.2")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit (string-append "v" version))))
+       (sha256
+        (base32
+         "08v7x513hxkfyihixp0cdy4cmf2j9hw1yzm7bzy5g95fai71azm0"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/emersion/go-smtp"))
+     (native-inputs
+      `(("go-github-com-emersion-go-sasl" ,go-github-com-emersion-go-sasl)))
+     (home-page url)
+     (synopsis "An ESMTP client and server library written in Go")
+     (description "An ESMTP client and server library written in Go. It features:
+@itemize
+@item ESMTP client & server implementing RFC 532
+@item Support for SMTP AUTH and PIPELINING
+@item UTF-8 support for subject and message
+@item LMTP support
+@end itemize ")
+     (license license:expat))))
+
+(define-public go-github-com-fsnotify-fsnotify
+  (let ((url "https://github.com/fsnotify/fsnotify"))
+    (package
+     (name "go-github-com-fsnotify-fsnotify")
+     (version "1.4.7")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit (string-append "v" version))))
+       (sha256
+        (base32
+         "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/fsnotify/fsnotify"))
+     (native-inputs
+      `(("go-github-com-emersion-go-sasl" ,go-github-com-emersion-go-sasl)
+        ("go-golang-org-x-sys-unix",go-golang-org-x-sys-unix)))
+     (home-page url)
+     (synopsis "File system notifications for Go")
+     (description "File system notifications for Go")
+     (license license:bsd-3))))
+
+(define-public go-github-com-go-ini-ini
+  (let ((url "https://github.com/go-ini/ini"))
+    (package
+     (name "go-github-com-go-ini-ini")
+     (version "1.44.0")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit (string-append "v" version))))
+       (sha256
+        (base32
+         "072fhg4i5k26pxq3kg5y5h9lb9w5ka75jl000q5bjcdv2yf8qhcv"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/go-ini/ini"
+		      #:tests? #f))
+     (home-page url)
+     (synopsis "Package ini provides INI file read and write functionality in Go")
+     (description "Package ini provides INI file read and write functionality in Go.")
+     (license license:asl2.0))))
+
+(define-public go-github-com-google-shlex
+  (let ((commit "c34317bd91bf98fab745d77b03933cf8769299fe")
+        (url "https://github.com/google/shlex"))
+    (package
+     (name "go-github-com-google-shlex")
+     (version (git-version "0.0.0" "0" commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit commit)))
+       (sha256
+        (base32
+         "00qivza4hkllfkar2vpqmyxybi0fwqipgijv61dgapq4xddxdq0r"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/google/shlex"))
+     (home-page url)
+     (synopsis "A simple lexer")
+     (description "go-shlex is a simple lexer for go that supports shell-style 
+quoting, commenting, and escaping.")
+     (license license:asl2.0))))
+
+(define-public go-github-com-kyoh86-xdg
+  (let ((url "https://github.com/kyoh86/xdg"))
+    (package
+     (name "go-github-com-kyoh86-xdg")
+     (version "1.0.0")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit (string-append "v" version))))
+       (sha256
+        (base32
+         "02wrm9rl6qqv3nr2n5yariwg1rgr7w76l1sp0ak1kxin1y184ivf"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/kyoh86/xdg"))
+     (home-page url)
+     (synopsis "Light weight helper functions in golang to get config, data and
+ cache files according to the XDG Base Directory Specification")
+     (description "Light weight helper functions in golang to get config, data
+ and cache files according to the XDG Base Directory Specification.")
+     (license license:expat))))
+
+(define-public go-github-com-martinlindhe-base36
+  (let ((url "https://github.com/martinlindhe/base36"))
+    (package
+     (name "go-github-com-martinlindhe-base36")
+     (version "1.0.0")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit (string-append "v" version))))
+       (sha256
+        (base32
+         "0hib6cnx543fxbcy7fm3kcfz8ajhd90kxzbld49qi7w930pcz26c"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/martinlindhe/base36"))
+     (native-inputs
+      `(("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify)))
+     (home-page url)
+     (synopsis "Implements Base36 encoding and decoding")
+     (description "Implements Base36 encoding and decoding, which is useful to
+ represent large integers in a case-insensitive alphanumeric way.")
+     (license license:expat))))
+
+(define-public go-github-com-miolini-datacounter
+  (let ((url "https://github.com/miolini/datacounter")
+        (commit "aa48df3a02c1fbcd3040271f631887991c3071fb"))
+    (package
+     (name "go-github-com-miolini-datacounter")
+     (version (git-version "0.0.0" "0" commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit commit)))
+       (sha256
+        (base32
+         "12ldh5jhafjhh3jvh979mldwygkkcnm97axs7dhlai6gqwlhls87"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/miolini/datacounter"))
+     (home-page url)
+     (synopsis "Golang counters for readers/writers")
+     (description "Golang counters for readers/writers")
+     (license license:expat))))
+
+(define-public go-github-com-riywo-loginshell
+  (let ((url "https://github.com/riywo/loginshell")
+        (commit "2ed199a032f65b5e6a0a1294abc96b7d3efade86"))
+    (package
+     (name "go-github-com-riywo-loginshell")
+     (version (git-version "0.0.0" "0" commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit commit)))
+       (sha256
+        (base32
+         "1chhpp22kd3r2h84206bvdjj6815n4r6pjq8n9jhav9mfal4qvzj"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/riywo/loginshell"
+		      #:tests? #f))
+     (home-page url)
+     (synopsis "A golang library to get the login shell of the current user")
+     (description "A golang library to get the login shell of the current user.")
+     (license license:expat))))
+
+(define-public go-git-sr-ht-sircmpwn-getopt
+  (let ((commit "daaf1274538b02b41238d1e6c219186c76af3b8c")
+        (url "https://git.sr.ht/~sircmpwn/getopt"))
+    (package
+     (name "go-git-sr-ht-sircmpwn-getopt")
+     (version (git-version "0.0.0" "0" commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit commit)))
+       (sha256
+        (base32
+         "0qf9kmzs3h4vzcbc1ha0z68ivckzvl7jq9jwb8rbbaq0d1a6baq7"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "git.sr.ht/~sircmpwn/getopt"))
+     (native-inputs
+      `(("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify)))
+     (home-page url)
+     (synopsis "A POSIX-compatible getopt implementation for Go")
+     (description "A POSIX-compatible getopt implementation for Go, because
+ POSIX getopt is The Correct Way to interpret arguments to command line utilities.")
+     (license license:expat))))
+
+(define-public go-git-sr-ht-sircmpwn-pty
+  (let ((commit "3a43678975a9cb13dbcf05ea7a1611ebce3eadb2")
+        (url "https://git.sr.ht/~sircmpwn/pty"))
+    (package
+     (name "go-git-sr-ht-sircmpwn-pty")
+     (version (git-version "0.0.0" "0" commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url url)
+             (commit commit)))
+       (sha256
+        (base32
+         "1spa779vb2j1vgwm1cpbmf7f8wj6zwyyy49ihz134izvah7vncsw"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "git.sr.ht/~sircmpwn/pty"))
+     (home-page url)
+     (synopsis "A Go package for using unix pseudo-terminals")
+     (description "Pty is a Go package for using unix pseudo-terminals.")
+     (license license:expat))))
+
+(define-public go-git-sr-ht-sircmpwn-tcell
+  (let ((commit "3fdb6bc01a5035fe7cd57b9b0b56166a44db8620")
+        (version "0.0.0"))
+    (package
+      (name "go-git-sr-ht-sircmpwn-tcell")
+      (version (git-version version "0" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://git.sr.ht/~sircmpwn/tcell")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1g7vx0qzwp6wsp47l2rabmkrxp7x3z8s94gjf6722z7sfb8xybas"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/gdamore/tcell"
+         #:unpack-path "github.com/gdamore/tcell"
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'reset-gzip-timestamps 'make-files-writable
+             (lambda* (#:key outputs #:allow-other-keys)
+               ;; Make sure .gz files are writable so that the
+               ;; 'reset-gzip-timestamps' phase can do its work.
+               (let ((out (assoc-ref outputs "out")))
+                 (for-each make-file-writable
+                           (find-files out "\\.gz$"))
+                 #t))))))
+      (propagated-inputs
+       `(("go-golang-org-colorful" ,go-golang-org-colorful)
+         ("go-github-com-gdamore-encoding" ,go-github-com-gdamore-encoding)))
+      (inputs
+       `(("go-github.com-mattn-go-runewidth" ,go-github.com-mattn-go-runewidth)
+         ("go-golang-org-x-text-encoding" ,go-golang-org-x-text-encoding)
+         ("go-golang-org-x-text-transform" ,go-golang-org-x-text-transform)
+         ("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
+      (home-page "https://github.com/gdamore/tcell")
+      (synopsis "Provide a cell-based view for text terminals")
+      (description "This package includes a full parser and expander for
+terminfo capability strings to avoid hard-coding escape strings for
+formatting.  It also favors portability, and includes support for all POSIX
+systems.")
+      (license license:expat))))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index fdbb082fdc..3b96a1443b 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -28,6 +28,7 @@ 
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2019 Martin Becze <mjbecze@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -74,6 +75,7 @@ 
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages golang)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages gsasl)
   #:use-module (gnu packages gtk)
@@ -111,6 +113,7 @@ 
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages textutils)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
@@ -133,6 +136,7 @@ 
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system guile)
+  #:use-module (guix build-system go)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial))
@@ -3082,3 +3086,73 @@  related tools to process winmail.dat files.")
 complement or replace traditional mailing lists.  Readers may read via NNTP,
 Atom feeds or HTML archives.")
      (license agpl3+))))
+
+(define-public aerc
+  (let ((url "https://git.sr.ht/~sircmpwn/aerc"))
+    (package
+      (name "aerc")
+      (version "0.2.1")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url url)
+               (commit version)))
+         (sha256
+          (base32
+           "0l063pnz02r4jsg0kd9jp8m5nq10n5q9zdjpx26gfnd9ww4fs46h"))
+         (file-name (git-file-name name version))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "git.sr.ht/~sircmpwn/aerc"
+         #:install-source? #f
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'setup-go-environment 'setup-make-environment
+             (lambda* (#:key outputs #:allow-other-keys)
+               (setenv "PREFIX" (assoc-ref outputs "out"))
+               #t))
+           (replace 'build
+             (lambda _
+               (with-directory-excursion "src/git.sr.ht/~sircmpwn/aerc"
+                 (invoke "make"))))
+           (replace 'install
+             (lambda _
+               (with-directory-excursion "src/git.sr.ht/~sircmpwn/aerc"
+                 (invoke "make" "install")))))))
+      (inputs
+       `(("ncurses" ,ncurses)))
+      (native-inputs
+       `(("scdoc" ,scdoc)
+         ("automake" ,automake)
+         ("go-git-sr-ht-sircmpwn-getopt" ,go-git-sr-ht-sircmpwn-getopt)
+         ("go-git-sr-ht-sircmpwn-pty" ,go-git-sr-ht-sircmpwn-pty)
+         ("go-git-sr-ht-sircmpwn-tcell" ,go-git-sr-ht-sircmpwn-tcell)
+         ("go-github-com-danwakefield-fnmatch"
+	 ,go-github-com-danwakefield-fnmatch)
+         ("go-github-com-ddevault-go-libvterm"
+	 ,go-github-com-ddevault-go-libvterm)
+         ("go-github-com-emersion-go-imap" ,go-github-com-emersion-go-imap)
+         ("go-github-com-emersion-go-imap-idle"
+	 ,go-github-com-emersion-go-imap-idle)
+         ("go-github-com-emersion-go-maildir" ,go-github-com-emersion-go-maildir)
+         ("go-github-com-emersion-go-message" ,go-github-com-emersion-go-message)
+         ("go-github-com-emersion-go-sasl" ,go-github-com-emersion-go-sasl)
+         ("go-github-com-emersion-go-smtp" ,go-github-com-emersion-go-smtp)
+         ("go-github-com-fsnotify-fsnotify" ,go-github-com-fsnotify-fsnotify)
+         ("go-github-com-go-ini-ini" ,go-github-com-go-ini-ini)
+         ("go-github-com-google-shlex" ,go-github-com-google-shlex)
+         ("go-github-com-kyoh86-xdg" ,go-github-com-kyoh86-xdg)
+         ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
+         ("go-github.com-mattn-go-runewidth" ,go-github.com-mattn-go-runewidth)
+         ("go-github-com-miolini-datacounter" ,go-github-com-miolini-datacounter)
+         ("go-github-com-mitchellh-go-homedir"
+	 ,go-github-com-mitchellh-go-homedir)
+         ("go-github-com-pkg-errors" ,go-github-com-pkg-errors)
+         ("go-github-com-riywo-loginshell" ,go-github-com-riywo-loginshell)
+         ("go-golang-org-x-oauth2" ,go-golang-org-x-oauth2)))
+      (home-page url)
+      (synopsis "An email client for your terminal")
+      (description "Join the IRC channel: #aerc on irc.freenode.net for end-user
+ support, and #aerc-dev for development.")
+      (license license:expat))))