@@ -16084,3 +16084,69 @@ using STM and with support for expiration times.")
"Scanner is a parser combinator library designed to be fast.
It doesn't support backtracking.")
(license license:bsd-3)))
+
+(define-public ghc-hedis
+ (package
+ (name "ghc-hedis")
+ (version "0.14.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/hedis/hedis-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32 "0h6s3x3pylyidjbzjqyrmc2cm5ls67m9iij35fn48rvq4l41w9h9"))))
+ (build-system haskell-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ ; The main tests require redis-server running, but not doctest
+ (when tests? (invoke "runhaskell" "Setup.hs" "test" "doctest")))))))
+ (inputs
+ (list
+ ghc-scanner
+ ghc-async
+ ghc-bytestring-lexing
+ ghc-unordered-containers
+ ghc-network
+ ghc-resource-pool
+ ghc-tls
+ ghc-vector
+ ghc-http
+ ghc-errors
+ ghc-network-uri))
+ (native-inputs
+ (list
+ ghc-hunit
+ ghc-test-framework
+ ghc-test-framework-hunit
+ ghc-doctest))
+ (home-page "https://github.com/informatikr/hedis")
+ (synopsis
+ "Client library for the Redis datastore: supports full command set, pipelining")
+ (description
+ "Redis is an open source, advanced key-value store. It is often referred
+to as a data structure server since keys can contain strings, hashes, lists,
+sets and sorted sets. This library is a Haskell client for the Redis datastore.
+Compared to other Haskell client libraries it has some advantages.
+
+Hedis is intended to be used with the latest stable version of Redis.
+Most redis commands are available as haskell functions, although MONITOR and SYNC
+are intentionally omitted. Additionally, a low-level API is exposed that
+makes it easy for the library user to implement further commands, such as new
+commands from an experimental Redis version.
+
+Commands are pipelined as much as possible without any work by the user.
+
+When subscribed to the Redis PubSub server, clients are not allowed to issue
+commands other than subscribing to or unsubscribing from channels.
+This library uses the type system to enforce the correct behavior.
+
+TCP sockets are the default way to connect to a Redis server. For connections
+to a server on the same machine, Unix domain sockets offer higher performance
+than the standard TCP connection.")
+ (license license:bsd-3)))