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

From: Martin Becze <[email-masked]>
Date: Wed, 18 Sep 2019 04:23:13 -0400

---
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(-)

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 <[email-masked]>
 ;;; Copyright @ 2019 Alex Griffin <[email-masked]>
 ;;; Copyright © 2019 Arun Isaac <[email-masked]>
+;;; Copyright © 2019 Martin Becze <[email-masked]>
 ;;;
 ;;; 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 <[email-masked]>
 ;;; Copyright © 2018 Gábor Boskovits <[email-masked]>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <[email-masked]>
+;;; Copyright © 2019 Martin Becze <[email-masked]>
 ;;;
 ;;; 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))))
-- 
2.23.0