diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 3fce4f803c..8a41ea247c 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -37,6 +37,7 @@
 
 (define-module (gnu packages haskell-apps)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module ((guix licenses) #:prefix license:)
@@ -682,6 +683,97 @@ (define-public kmonad
 Wayland, and Linux console environments alike.")
       (license license:expat))))
 
+(define-public matterhorn
+  (package
+    (name "matterhorn")
+    (version "90000.0.0")
+    (source
+     (origin
+       ;; use git repo instead of hackage URL because the hackage tarball
+       ;; doesn't contain the sample config file
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/matterhorn-chat/matterhorn")
+             (commit version)))
+       (sha256
+        (base32 "08ng5axranilvfl9j3v0mjgpg76kzacrqj4c8x6pblpc3yxx02i5"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "matterhorn")))
+    (inputs (list ghc-mattermost-api
+                  ghc-base-compat
+                  ghc-unordered-containers
+                  ghc-split
+                  ghc-data-clist
+                  ghc-semigroups
+                  ghc-crypton-connection
+                  ghc-config-ini
+                  ghc-microlens-platform
+                  ghc-brick
+                  ghc-brick-skylighting
+                  ghc-vty-6
+                  ghc-vty-crossplatform
+                  ghc-word-wrap
+                  ghc-text-zipper
+                  ghc-xdg-basedir
+                  ghc-vector
+                  ghc-strict
+                  ghc-hashable
+                  ghc-commonmark
+                  ghc-commonmark-extensions
+                  ghc-utf8-string
+                  ghc-temporary
+                  ghc-gitrev
+                  ghc-hclip
+                  ghc-aspell-pipe
+                  ghc-stm-delay
+                  ghc-unix-compat-7
+                  ghc-skylighting-core
+                  ghc-timezone-olson
+                  ghc-timezone-series
+                  ghc-aeson
+                  ghc-async
+                  ghc-uuid
+                  ghc-random
+                  ghc-network-uri
+                  ghc-bimap))
+    (native-inputs (list ghc-unique
+                         ghc-checkers
+                         ghc-tasty
+                         ghc-tasty-hunit
+                         ghc-tasty-quickcheck
+                         ghc-mattermost-api-qc))
+    (arguments
+     (list
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'fix-requirements
+                     (lambda _
+                       (for-each (lambda (dep)
+                                   (substitute* "matterhorn.cabal"
+                                     (((string-append "(,\\s" dep
+                                                      "\\s*>=\\s[0-9].[0-9]).*")
+                                       all pat)
+                                      pat)))
+                                 (list "random"
+                                       "data-clist"
+                                       "semigroups"
+                                       "word-wrap"
+                                       "unix-compat"
+                                       "skylighting-core"
+                                       "checkers"
+                                       "vty"
+                                       "vty-crossplatform"
+                                       "brick"))))
+                   (add-after 'install 'install-config-file
+                     (lambda _
+                       (install-file "./docs/sample-config.ini"
+                                     (string-append #$output "/share/doc/" #$name "-" #$version "/etc/")))))))
+    (home-page "http://hackage.haskell.org/package/matterhorn")
+    (synopsis "Terminal client for the Mattermost chat system")
+    (description
+     "This is a terminal client for the Mattermost chat system.  Please see the README
+for a list of features and information on getting started.")
+    (license license:bsd-3)))
+
 (define-public nixfmt
   (package
     (name "nixfmt")
diff --git a/gnu/packages/haskell-crypto.scm b/gnu/packages/haskell-crypto.scm
index 83ba8bc10b..9d99cc67c3 100644
--- a/gnu/packages/haskell-crypto.scm
+++ b/gnu/packages/haskell-crypto.scm
@@ -612,6 +612,138 @@ (define-public ghc-crypto-random
 abstraction for CPRNGs.")
     (license license:bsd-3)))
 
+
+(define-public ghc-crypton
+  (package
+    (name "ghc-crypton")
+    (version "0.34")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "crypton" version))
+       (sha256
+        (base32 "1mhypjhzn95in853bp7ary0a2xc6lsji6j8hrrgn2mfa4ilq8i24"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "crypton")))
+    (inputs (list ghc-memory ghc-basement))
+    (native-inputs (list ghc-tasty ghc-tasty-quickcheck ghc-tasty-hunit
+                         ghc-tasty-kat))
+    (home-page "https://github.com/kazu-yamamoto/crypton")
+    (synopsis "Cryptography Primitives sink")
+    (description
+     "This package provides a repository of cryptographic primitives. . * Symmetric
+ciphers: AES, DES, 3DES, CAST5, Blowfish, Twofish, Camellia, RC4, Salsa, XSalsa,
+@code{ChaCha}. . * Hash: SHA1, SHA2, SHA3, SHAKE, MD2, MD4, MD5, Keccak, Skein,
+Ripemd, Tiger, Whirlpool, Blake2 . * MAC: HMAC, KMAC, Poly1305 . * Asymmetric
+crypto: DSA, RSA, DH, ECDH, ECDSA, ECC, Curve25519, Curve448, Ed25519, Ed448 . *
+Key Derivation Function: PBKDF2, Scrypt, HKDF, Argon2, BCrypt,
+B@code{CryptPBKDF} . * Cryptographic Random generation: System Entropy,
+Deterministic Random Generator . * Data related: Anti-Forensic Information
+Splitter (AFIS) .  If anything cryptographic related is missing from here,
+submit a pull request to have it added.  This package strives to be a
+cryptographic kitchen sink that provides cryptography for everyone. .  Evaluate
+the security related to your requirements before using. .  Read
+\"Crypto.Tutorial\" for a quick start guide.")
+    (license license:bsd-3)))
+
+(define-public ghc-crypton-x509
+  (package
+    (name "ghc-crypton-x509")
+    (version "1.7.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "crypton-x509" version))
+       (sha256
+        (base32 "1zyaz0krf08g36g30zr5wn8f2x51l4dj2zcjnhpiw9h05p54mdzb"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "crypton-x509")))
+    (inputs (list ghc-memory
+                  ghc-hourglass
+                  ghc-pem
+                  ghc-asn1-types
+                  ghc-asn1-encoding
+                  ghc-asn1-parse
+                  ghc-crypton))
+    (native-inputs (list ghc-tasty ghc-tasty-quickcheck ghc-x509))
+    (arguments
+     `(#:cabal-revision ("1"
+                         "10a2x47znhbayyfr6fqgq27623akpycyjbfxz4hnavavf1x6ary5")
+       #:tests? #f))                    ;tests fail
+    (home-page "https://github.com/kazu-yamamoto/crypton-certificate")
+    (synopsis "X509 reader and writer")
+    (description "X509 reader and writer.  please see README")
+    (license license:bsd-3)))
+
+(define-public ghc-crypton-x509-store
+  (package
+    (name "ghc-crypton-x509-store")
+    (version "1.6.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "crypton-x509-store" version))
+       (sha256
+        (base32 "0vr5b9cyf9x016wn1g0bryslf5nz8jq2sy8r3llwqfg02apihqiy"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "crypton-x509-store")))
+    (inputs (list ghc-pem ghc-asn1-types ghc-asn1-encoding ghc-crypton
+                  ghc-crypton-x509))
+    (native-inputs (list ghc-tasty ghc-tasty-hunit))
+    (home-page "https://github.com/kazu-yamamoto/crypton-certificate")
+    (synopsis "X.509 collection accessing and storing methods")
+    (description
+     "X.509 collection accessing and storing methods for certificate, crl, exception
+list")
+    (license license:bsd-3)))
+
+(define-public ghc-crypton-x509-system
+  (package
+    (name "ghc-crypton-x509-system")
+    (version "1.6.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "crypton-x509-system" version))
+       (sha256
+        (base32 "1jilnr9715njlx1hqvg5lrsrwk12r04maypmh18di0sybwg2cdm4"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "crypton-x509-system")))
+    (inputs (list ghc-pem ghc-crypton-x509 ghc-crypton-x509-store))
+    (home-page "https://github.com/kazu-yamamoto/crypton-certificate")
+    (synopsis "Handle per-operating-system X.509 accessors and storage")
+    (description
+     "System X.509 handling for accessing operating system dependents store and other
+storage methods")
+    (license license:bsd-3)))
+
+(define-public ghc-crypton-x509-validation
+  (package
+    (name "ghc-crypton-x509-validation")
+    (version "1.6.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "crypton-x509-validation" version))
+       (sha256
+        (base32 "1xjhwvmkcy47a6xiqxb3xy944ca7g660203jdrz5xzd46zibfq0f"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "crypton-x509-validation")))
+    (inputs (list ghc-memory
+                  ghc-hourglass
+                  ghc-data-default-class
+                  ghc-pem
+                  ghc-asn1-types
+                  ghc-asn1-encoding
+                  ghc-crypton-x509
+                  ghc-crypton-x509-store
+                  ghc-crypton))
+    (native-inputs (list ghc-tasty ghc-tasty-hunit))
+    (home-page "https://github.com/kazu-yamamoto/crypton-certificate")
+    (synopsis "X.509 Certificate and CRL validation")
+    (description "X.509 Certificate and CRL validation.  please see README")
+    (license license:bsd-3)))
+
 (define-public ghc-cprng-aes
   (package
     (name "ghc-cprng-aes")
@@ -721,6 +853,43 @@ (define-public ghc-tls
 extensions.")
     (license license:bsd-3)))
 
+(define-public ghc-tls-1.9
+  (package
+    (name "ghc-tls")
+    (version "1.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "tls" version))
+       (sha256
+        (base32 "0gj3af9sqd0bw7dpcqfyvbslpxsk2ij00a77kl710fwhw35vj1an"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "tls")))
+    (inputs (list ghc-cereal
+                  ghc-data-default-class
+                  ghc-memory
+                  ghc-crypton
+                  ghc-asn1-types
+                  ghc-asn1-encoding
+                  ghc-crypton-x509
+                  ghc-crypton-x509-store
+                  ghc-crypton-x509-validation
+                  ghc-async
+                  ghc-unix-time
+                  ghc-network))
+    (native-inputs (list ghc-tasty ghc-tasty-quickcheck ghc-quickcheck))
+    (home-page "http://github.com/vincenthz/hs-tls")
+    (synopsis "TLS/SSL protocol native implementation (Server and Client)")
+    (description
+     "Native Haskell TLS and SSL protocol implementation for server and client.
+This provides a high-level implementation of a sensitive security protocol,
+eliminating a common set of security issues through the use of the advanced
+type system, high level constructions and common Haskell features.  Currently
+implement the SSL3.0, TLS1.0, TLS1.1 and TLS1.2 protocol, and support RSA and
+Ephemeral (Elliptic curve and regular) Diffie Hellman key exchanges, and many
+extensions.")
+    (license license:bsd-3)))
+
 (define-public ghc-hsopenssl
   (package
     (name "ghc-hsopenssl")
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 0aaa609e42..afa9520f53 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -89,6 +89,35 @@ (define-public ghc-cookie
     (description "HTTP cookie parsing and rendering library for Haskell.")
     (license license:expat)))
 
+(define-public ghc-crypton-connection
+  (package
+    (name "ghc-crypton-connection")
+    (version "0.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "crypton-connection" version))
+       (sha256
+        (base32 "07lrkv6lwphsyp4797yp8ywnndzd270bk58r8gwyby0hr4xy52r0"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "crypton-connection")))
+    (inputs (list ghc-basement
+                  ghc-data-default-class
+                  ghc-network
+                  ghc-tls-1.9
+                  ghc-socks
+                  ghc-crypton-x509
+                  ghc-crypton-x509-store
+                  ghc-crypton-x509-system
+                  ghc-crypton-x509-validation))
+    (home-page "https://github.com/kazu-yamamoto/crypton-connection")
+    (synopsis "Simple and easy network connections API")
+    (description
+     "Simple network library for all your connection need. Features: Really simple to
+use, SSL/TLS, SOCKS. This library provides a very simple api to create sockets to a
+destination with the choice of SSL/TLS, and SOCKS.")
+    (license license:bsd-3)))
+
 (define-public ghc-curl
   (package
     (name "ghc-curl")
@@ -814,6 +843,69 @@ (define-public ghc-css-text
 Haskell.")
     (license license:bsd-3)))
 
+(define-public ghc-mattermost-api
+  (package
+    (name "ghc-mattermost-api")
+    (version "90000.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "mattermost-api" version))
+       (sha256
+        (base32 "1ka3r4bnfwlbjnkws8vkg8i9gj8wzsyss137p7hxrx4sr75s6iyv"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "mattermost-api")))
+    (inputs (list ghc-websockets
+                  ghc-aeson
+                  ghc-crypton-connection
+                  ghc-memory
+                  ghc-resource-pool
+                  ghc-http
+                  ghc-http-media
+                  ghc-network-uri
+                  ghc-modern-uri
+                  ghc-unordered-containers
+                  ghc-hashable
+                  ghc-gitrev
+                  ghc-microlens
+                  ghc-microlens-th
+                  ghc-pretty-show
+                  ghc-split
+                  ghc-connection))
+    (native-inputs (list ghc-tasty ghc-tasty-hunit ghc-hunit))
+    (arguments
+     (list
+      #:tests? #f)) ;tests fail: unable to setup network socket
+    (home-page "http://hackage.haskell.org/package/mattermost-api")
+    (synopsis "Client API for Mattermost chat system")
+    (description
+     "Client API for Mattermost chat system.  Mattermost is a flexible, open source
+messaging platform that meets even the most demanding privacy and security
+standards.  This library provides network API interaction with the Mattermost
+server.")
+    (license license:bsd-3)))
+
+(define-public ghc-mattermost-api-qc
+  (package
+    (name "ghc-mattermost-api-qc")
+    (version "90000.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "mattermost-api-qc" version))
+       (sha256
+        (base32 "0lrb8l8nbrdp4y2ala8hchr8ikv5hqw710ffiiw1sz6z2dqiqbxm"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "mattermost-api-qc")))
+    (inputs (list ghc-mattermost-api ghc-quickcheck))
+    (home-page "https://github.com/matterhorn-chat/mattermost-api-qc")
+    (synopsis "QuickCheck instances for the Mattermost client API library")
+    (description
+     "This package provides a library providing @code{QuickCheck} for the
+mattermost-api library to allow testing.  This is provided as a separate library
+to allow use of the API library without testing dependencies.")
+    (license license:isc)))
+
 (define-public ghc-mime-types
   (package
     (name "ghc-mime-types")
@@ -832,6 +924,35 @@ (define-public ghc-mime-types
      "This library provides basic MIME type handling types and functions.")
     (license license:expat)))
 
+(define-public ghc-modern-uri
+  (package
+    (name "ghc-modern-uri")
+    (version "0.3.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "modern-uri" version))
+       (sha256
+        (base32 "1sag8l91qd7xs56rlx8r6dz9zxxmqsnfw0v47az7l8nirv7zjih2"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "modern-uri")))
+    (inputs (list ghc-quickcheck
+                  ghc-hashable
+                  ghc-megaparsec
+                  ghc-profunctors
+                  ghc-reflection
+                  ghc-tagged))
+    (native-inputs (list ghc-hspec
+                         ghc-hspec-megaparsec
+                         ghc-hspec-discover))
+    (arguments
+     `(#:cabal-revision ("1"
+                         "0c0mr8aqs963nmy7i8yfih24snaijgwkxim2q2khw12capshac0q")))
+    (home-page "https://github.com/mrkkrp/modern-uri")
+    (synopsis "Modern library for working with URIs")
+    (description "Modern library for working with URIs.")
+    (license license:bsd-3)))
+
 (define-public ghc-html
   (package
     (name "ghc-html")
@@ -2161,4 +2282,3 @@ (define-public ghc-network-run
     (description
      "This package provides a simple network runner library in Haskell.")
     (license license:bsd-3)))
-
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index fa423ae2ca..f5539b85c0 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -450,6 +450,26 @@ (define-public ghc-appar
 style.")
     (license license:bsd-3)))
 
+(define-public ghc-aspell-pipe
+  (package
+    (name "ghc-aspell-pipe")
+    (version "0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "aspell-pipe" version))
+       (sha256
+        (base32 "09dw4v4j5pmqi8pdh3p7kk7f8pph5w33s7vd21fgvhv3arnrj6p8"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "aspell-pipe")))
+    (inputs (list ghc-async))
+    (home-page "http://hackage.haskell.org/package/aspell-pipe")
+    (synopsis "Pipe-based interface to the Aspell program")
+    (description
+     "This package provides a pipe-based interface to the Aspell program (no dynamic
+linking required).")
+    (license license:bsd-3)))
+
 (define-public ghc-assoc
   (package
     (name "ghc-assoc")
@@ -952,6 +972,27 @@ (define-public ghc-bifunctors
     (description "This package provides bifunctors for Haskell.")
     (license license:bsd-3)))
 
+(define-public ghc-bimap
+  (package
+    (name "ghc-bimap")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "bimap" version))
+       (sha256
+        (base32 "158cdwk9jwklcfgbn62dqq255i40w13ifggsdps87sxc5q7lpd5h"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "bimap")))
+    (native-inputs (list ghc-quickcheck))
+    (home-page "https://github.com/joelwilliamson/bimap")
+    (synopsis "Bidirectional mapping between two key types")
+    (description
+     "This package provides a data structure representing a bidirectional mapping
+between two key types.  Each value in the bimap is associated with exactly one
+value of the opposite type.")
+    (license license:bsd-3)))
+
 (define-public ghc-bindings-dsl
   (package
     (name "ghc-bindings-dsl")
@@ -1482,8 +1523,8 @@ (define-public ghc-cassava
 
 @verbatim
 >>> Data.Csv.encode [(\"John\",27),(\"Jane\",28)]
-\"John,27
-Jane,28
+\"John,27
+Jane,28
 \"
 @end verbatim
 ")
@@ -1789,6 +1830,31 @@ (define-public ghc-cheapskate
 cross-site scripting (@dfn{XSS}) attacks.")
     (license license:bsd-3)))
 
+(define-public ghc-checkers
+  (package
+    (name "ghc-checkers")
+    (version "0.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "checkers" version))
+       (sha256
+        (base32 "1r4rsa4k0fy8xig3m530ryflry9viv9v47g4gh7h0ld27rbd6z60"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "checkers")))
+    (inputs (list ghc-random ghc-quickcheck ghc-semigroupoids))
+    (arguments
+     `(#:cabal-revision ("1"
+                         "0wkvf57zd7i87z18vj285whjpcl9pscpwxz2cp7v7w6kk0769p0i")))
+    (home-page "https://github.com/haskell-checkers/checkers")
+    (synopsis "Check properties on standard classes and data structures")
+    (description
+     "Checkers wraps up the expected properties associated with various standard type
+classes as @code{QuickCheck} properties.  Also some morphism properties.  It
+also provides arbitrary instances and generator combinators for common data
+types. . &#169; 2008-2013 by Conal Elliott; BSD3 license.")
+    (license license:bsd-3)))
+
 (define-public ghc-chell
   (package
     (name "ghc-chell")
@@ -7497,6 +7563,28 @@ (define-public ghc-monad-par-extras
 and other added capabilities layered on top of the @code{Par} monad.")
     (license license:bsd-3)))
 
+(define-public ghc-monad-parallel
+  (package
+    (name "ghc-monad-parallel")
+    (version "0.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "monad-parallel" version))
+       (sha256
+        (base32 "1j905cwc440g7rvbhsdkqf50ag7p2bi6cy2rqsk918rn80fqqra4"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "monad-parallel")))
+    (inputs (list ghc-parallel ghc-transformers-compat))
+    (home-page "https://hub.darcs.net/blamario/SCC.wiki/")
+    (synopsis "Parallel execution of monadic computations")
+    (description
+     "This package defines classes of monads that can perform multiple executions in
+parallel and combine their results.  For any monad that's an instance of the
+class, the package re-implements a subset of the Control.Monad interface, but
+with parallel execution.")
+    (license license:bsd-3)))
+
 (define-public ghc-monadrandom
   (package
     (name "ghc-monadrandom")
@@ -8454,6 +8542,25 @@ (define-public ghc-text-zipper
 Implementations using both of these examples are provided.")
     (license license:bsd-3)))
 
+(define-public ghc-text-zipper-13
+  (package
+    (name "ghc-text-zipper-13")
+    (version "0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "text-zipper" version))
+       (sha256
+        (base32 "1acq583wmgb53viqslbkgl454300fawg5lryxddfiy1mqk3iqlh6"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "text-zipper")))
+    (inputs (list ghc-vector))
+    (native-inputs (list ghc-hspec ghc-quickcheck hspec-discover))
+    (home-page "https://github.com/jtdaugherty/text-zipper/")
+    (synopsis "Text editor zipper library")
+    (description "This library provides a zipper and API for editing text.")
+    (license license:bsd-3)))
+
 (define-public ghc-doclayout
   (package
     (name "ghc-doclayout")
@@ -11669,6 +11776,31 @@ (define-public ghc-stm-conduit
 source and a sink.")
     (license license:bsd-3)))
 
+(define-public ghc-stm-delay
+  (package
+    (name "ghc-stm-delay")
+    (version "0.1.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "stm-delay" version))
+       (sha256
+        (base32 "0cla21v89gcvmr1iwzibq13v1yq02xg4h6k9l6kcprj7mhd5hcmi"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "stm-delay")))
+    (home-page "https://github.com/joeyadams/haskell-stm-delay")
+    (synopsis "Updatable one-shot timer polled with STM")
+    (description
+     "This library lets you create a one-shot timer, poll it using STM, and update it
+to ring at a different time than initially specified. .  It uses GHC event
+manager timeouts when available (GHC 7.2+, @@-threaded@@, non-Windows OS),
+yielding performance similar to @@@code{threadDelay}@@ and
+@@@code{registerDelay}@@.  Otherwise, it falls back to forked threads and
+@@@code{threadDelay}@@. . [0.1.1] Add @code{tryWaitDelayIO}, improve performance
+for certain cases of @@@code{newDelay}@@ and @@@code{updateDelay}@@, and improve
+example.")
+    (license license:bsd-3)))
+
 (define-public ghc-stmonadtrans
   (package
     (name "ghc-stmonadtrans")
@@ -13277,6 +13409,30 @@ (define-public ghc-uniplate
 work, but is substantially simpler and faster.")
     (license license:bsd-3)))
 
+(define-public ghc-unique
+  (package
+    (name "ghc-unique")
+    (version "0.4.7.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "Unique" version))
+       (sha256
+        (base32 "14f1qnmhdmbam8qis725dhwq1mk9h86fsnzhkwhsx73ny9z29s1l"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "Unique")))
+    (inputs (list ghc-extra ghc-hashable ghc-unordered-containers))
+    (native-inputs (list ghc-hspec ghc-quickcheck))
+    (arguments
+     `(#:tests? #f ;test  Data.List.UniqueUnsorted.removeDuplicates fails
+       #:cabal-revision ("1"
+                         "10s0npnfkh7naj49afmyrvnilikp6426fbhi49f97pxrgcmy4dvw")))
+    (home-page "http://hackage.haskell.org/package/Unique")
+    (synopsis "It provides the functionality like unix \"uniq\" utility")
+    (description
+     "Library provides the functions to find unique and duplicate elements in the list")
+    (license license:bsd-3)))
+
 (define-public ghc-unix-compat
   (package
     (name "ghc-unix-compat")
@@ -13300,6 +13456,28 @@ (define-public ghc-unix-compat
 isn't available, portable implementations are used.")
     (license license:bsd-3)))
 
+(define-public ghc-unix-compat-7
+  (package
+    (name "ghc-unix-compat")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "unix-compat" version))
+       (sha256
+        (base32 "0gz30f4g3gyjz60jbcg072ms67pwdn4by6wvdkg63hjshgl0cj60"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "unix-compat")))
+    (native-inputs (list ghc-monad-parallel ghc-hspec ghc-hunit ghc-extra
+                         ghc-temporary))
+    (home-page "https://github.com/haskell-pkg-janitors/unix-compat")
+    (synopsis "Portable POSIX-compatibility layer")
+    (description
+     "This package provides portable implementations of parts of the unix package.
+This package re-exports the unix package when available.  When it isn't
+available, portable implementations are used.")
+    (license license:bsd-3)))
+
 (define-public ghc-unix-time
   (package
     (name "ghc-unix-time")
@@ -13975,16 +14153,88 @@ (define-public ghc-vty
 to use and to provide good support for common terminal types.")
     (license license:bsd-3)))
 
+(define-public ghc-vty-6
+  (package
+    (name "ghc-vty")
+    (version "6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "vty" version))
+       (sha256
+        (base32 "0ywqfdngfv5pnsk5pa99yizpbhdq856sy3z70q2hmpmlc2r4h7vg"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "vty")))
+    (inputs (list ghc-blaze-builder ghc-microlens ghc-microlens-mtl
+                  ghc-utf8-string ghc-vector))
+    (home-page "https://github.com/jtdaugherty/vty")
+    (synopsis "A simple terminal UI library")
+    (description
+     "vty is terminal GUI library in the niche of ncurses.  It is intended to be easy
+to use and to provide good support for common terminal types. .  See the
+@@vty-examples@@ package as well as the program
+@@examples/interactive_terminal_test.hs@@ included in the @@vty@@ repository for
+examples on how to use the library. .  Import the @@Graphics.Vty@@ convenience
+module to get access to the core parts of the library. . &#169; 2006-2007 Stefan
+O'Rear; BSD3 license. . &#169; Corey O'Connor; BSD3 license. . &#169; Jonathan
+Daugherty; BSD3 license.")
+    (license license:bsd-3)))
+
+(define-public ghc-vty-crossplatform
+  (package
+    (name "ghc-vty-crossplatform")
+    (version "0.4.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "vty-crossplatform" version))
+       (sha256
+        (base32 "06iwxgqrqzz05hmic7z5hxd48x0i49sk935vm0xfi0xq28sl7r9m"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "vty-crossplatform")))
+    (inputs (list ghc-vty-6 ghc-vty-unix ghc-random ghc-string-qq))
+    (home-page "http://hackage.haskell.org/package/vty-crossplatform")
+    (synopsis "Cross-platform support for Vty")
+    (description
+     "This package provides a generic interface for multiple Vty platforms in one
+package so you don't have to conditionally depend on them in your cabal file.")
+    (license license:bsd-3)))
+
+(define-public ghc-vty-unix
+  (package
+    (name "ghc-vty-unix")
+    (version "0.2.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "vty-unix" version))
+       (sha256
+        (base32 "1hfxc7qw884vlq8qshhyndl3zs10jc2xr6i69vhasjywkvh6gay2"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "vty-unix")))
+    (inputs (list ghc-blaze-builder
+                  ghc-vty-6
+                  ghc-vector
+                  ghc-utf8-string
+                  ghc-microlens
+                  ghc-microlens-mtl
+                  ghc-microlens-th
+                  ghc-ansi-terminal))
+    (home-page "http://hackage.haskell.org/package/vty-unix")
+    (synopsis "Unix backend for Vty")
+    (description "This package provides Unix terminal support for Vty.")
+    (license license:bsd-3)))
+
 (define-public ghc-wave
   (package
     (name "ghc-wave")
     (version "0.2.0")
     (source (origin
-      (method url-fetch)
-      (uri (hackage-uri "wave" version))
-      (sha256
-        (base32
-          "149kgwngq3qxc7gxpkqb16j669j0wpv2f3gnvfwp58yg6m4259ki"))))
+              (method url-fetch)
+              (uri (hackage-uri "wave" version))
+              (sha256
+               (base32
+                "149kgwngq3qxc7gxpkqb16j669j0wpv2f3gnvfwp58yg6m4259ki"))))
     (build-system haskell-build-system)
     (properties '((upstream-name . "wave")))
     (arguments
@@ -14922,6 +15172,30 @@ (define-public ghc-commonmark-pandoc
 Pandoc types.")
     (license license:bsd-3)))
 
+(define-public ghc-hclip
+  (package
+    (name "ghc-hclip")
+    (version "3.0.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "Hclip" version))
+       (sha256
+        (base32 "04ppwm7vfzndrys8x1n8vfb41vzwx59r9xp4dkbiqmrms390pj6q"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "Hclip")))
+    (inputs (list ghc-strict))
+    (home-page "https://github.com/jetho/Hclip")
+    (synopsis
+     "Small cross-platform library for reading and modifying the system clipboard")
+    (description
+     "This package provides a small cross-platform library for reading and modifying
+the system clipboard. .  Hclip works on Windows, Mac OS X and Linux (but see the
+requirements below!). .  Requirements: . * Windows: No additional requirements.
+. * Mac OS X: Requires the pbcopy and pbpaste commands, which ship with Mac OS
+X. . * Linux: Requires xclip or xsel installed.")
+    (license license:bsd-3)))
+
 (define-public ghc-hslua-module-path
   (package
     (name "ghc-hslua-module-path")
@@ -15632,6 +15906,65 @@ (define-public ghc-breakpoint
 [README](https://github.com/aaronallen8455/breakpoint#breakpoint) for details.")
     (license license:expat)))
 
+(define-public ghc-brick
+  (package
+    (name "ghc-brick")
+    (version "2.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "brick" version))
+       (sha256
+        (base32 "160np0bz1mcfkp077yc936i026s3zv1czn8lj3k3qr6scldavw35"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "brick")))
+    (inputs (list ghc-vty-6
+                  ghc-vty-crossplatform
+                  ghc-bimap
+                  ghc-data-clist
+                  ghc-microlens
+                  ghc-microlens-th
+                  ghc-microlens-mtl
+                  ghc-config-ini
+                  ghc-vector
+                  ghc-text-zipper-13
+                  ghc-unix-compat-7
+                  ghc-word-wrap
+                  ghc-random))
+    (native-inputs (list ghc-quickcheck))
+    (home-page "https://github.com/jtdaugherty/brick/")
+    (synopsis "Declarative terminal user interface library")
+    (description
+     "Write terminal user interfaces (TUIs) painlessly with brick'! You write an event
+handler and a drawing function and the library does the rest. . . > module Main
+where > > import Brick > > ui :: Widget () > ui = str \"Hello, world!\" > > main
+:: IO () > main = @code{simpleMain} ui . .  To get started, see: . *
+<https://github.com/jtdaugherty/brick/blob/master/README.md The README> . * The
+<https://github.com/jtdaugherty/brick/blob/master/docs/guide.rst Brick user
+guide> . * The demonstration programs in the programs directory . .  This
+package deprecates <http://hackage.haskell.org/package/vty-ui vty-ui>.")
+    (license license:bsd-3)))
+
+(define-public ghc-brick-skylighting
+  (package
+    (name "ghc-brick-skylighting")
+    (version "1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "brick-skylighting" version))
+       (sha256
+        (base32 "1nw2x9zn0jlvykm89v80fh4187bxgn8l4cljgnf4mp4ci7aqjmkr"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "brick-skylighting")))
+    (inputs (list ghc-brick ghc-vty-6 ghc-skylighting-core))
+    (home-page "https://github.com/jtdaugherty/brick-skylighting/")
+    (synopsis "Show syntax-highlighted text in your Brick UI")
+    (description
+     "This package provides a module to use Skylighting to perform syntax highlighting
+and display the results in Brick-based interfaces.")
+    (license license:bsd-3)))
+
 (define-public ghc-githash
   (package
     (name "ghc-githash")
@@ -15650,10 +15983,10 @@ (define-public ghc-githash
      (list
       #:phases
       #~(modify-phases %standard-phases
-         (add-after 'unpack 'patch-git-path
-           (lambda _
-             (substitute* "src/GitHash.hs"
-               (("\"git\"") (string-append "\"" #$git "/bin/git\""))))))))
+          (add-after 'unpack 'patch-git-path
+            (lambda _
+              (substitute* "src/GitHash.hs"
+                (("\"git\"") (string-append "\"" #$git "/bin/git\""))))))))
     (home-page "https://github.com/snoyberg/githash#readme")
     (synopsis "Compile git revision info into Haskell projects")
     (description "Please see the README and documentation at
@@ -16982,4 +17315,3 @@ (define-public ghc-data-array-byte
 ;;; of a merge conflict, place them above by existing packages with similar
 ;;; functionality or similar names.
 ;;;
-
