@@ -15766,3 +15766,68 @@ using STM and with support for expiration times.")
(description
"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.12.11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/hedis/hedis-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32 "1n83zwg011n9w2v1zz4mwpms9jh3c8mk700zya4as1jg83748xww"))))
+ (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"))
+ #t)))))
+ (inputs
+ `(("ghc-scanner" ,ghc-scanner)
+ ("ghc-async" ,ghc-async)
+ ("ghc-bytestring-lexing" ,ghc-bytestring-lexing)
+ ("ghc-unordered-containers" ,ghc-unordered-containers)
+ ("ghc-network" ,ghc-network)
+ ("ghc-resource-pool" ,ghc-resource-pool)
+ ("ghc-tls" ,ghc-tls)
+ ("ghc-vector" ,ghc-vector)
+ ("ghc-http" ,ghc-http)
+ ("ghc-errors" ,ghc-errors)
+ ("ghc-network-uri" ,ghc-network-uri)))
+ (native-inputs
+ `(("ghc-hunit" ,ghc-hunit)
+ ("ghc-test-framework" ,ghc-test-framework)
+ ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+ ("ghc-doctest" ,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)))