;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2015, 2016, 2018 Ricardo Wurmus ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2016 Ludovic Courtès ;;; Copyright © 2017 rsiddharth ;;; Copyright © 2017 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu packages haskell-web) #:use-module (gnu packages) #:use-module (gnu packages haskell) #:use-module (gnu packages haskell-check) #:use-module (gnu packages haskell-crypto) #:use-module (gnu packages tls) #:use-module (guix build-system haskell) #:use-module (guix download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils)) (define-public ghc-tagsoup (package (name "ghc-tagsoup") (version "0.14") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/tagsoup/tagsoup-" version ".tar.gz")) (sha256 (base32 "07pax7i0bl79dmqqz58zy09yrgpnyyr2ya0z183hv96kp65jv0lh")))) (build-system haskell-build-system) (inputs `(("ghc-text" ,ghc-text))) (home-page "http://community.haskell.org/~ndm/tagsoup/") (synopsis "Parsing and extracting information from (possibly malformed) HTML/XML documents") (description "TagSoup is a library for parsing HTML/XML. It supports the HTML 5 specification, and can be used to parse either well-formed XML, or unstructured and malformed HTML from the web. The library also provides useful functions to extract information from an HTML document, making it ideal for screen-scraping.") (license license:bsd-3))) (define-public ghc-cookie (package (name "ghc-cookie") (version "0.4.3") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/cookie/cookie-" version ".tar.gz")) (sha256 (base32 "0qpdydhb9gw590ffabqg70x7xvjpg8l74idqnrfbhv5yrr7hryzv")))) (build-system haskell-build-system) (inputs `(("ghc-old-locale" ,ghc-old-locale) ("ghc-blaze-builder" ,ghc-blaze-builder) ("ghc-text" ,ghc-text) ("ghc-data-default-class" ,ghc-data-default-class) ("ghc-hunit" ,ghc-hunit) ("ghc-quickcheck" ,ghc-quickcheck) ("ghc-tasty" ,ghc-tasty) ("ghc-tasty-hunit" ,ghc-tasty-hunit) ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck))) (home-page "https://github.com/snoyberg/cookie") (synopsis "HTTP cookie parsing and rendering") (description "HTTP cookie parsing and rendering library for Haskell.") (license license:bsd-3))) (define-public ghc-http-types (package (name "ghc-http-types") (version "0.11") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/http-types/http-types-" version ".tar.gz")) (sha256 (base32 "08w30rf1i7kbh2j1iajqmj6yhhmglnb8kjggc8kdni3xahhrgcss")))) (build-system haskell-build-system) (native-inputs `(("ghc-doctest" ,ghc-doctest) ("ghc-hspec" ,ghc-hspec) ("ghc-quickcheck" ,ghc-quickcheck) ("ghc-quickcheck-instances" ,ghc-quickcheck-instances) ("hspec-discover" ,hspec-discover))) (inputs `(("ghc-case-insensitive" ,ghc-case-insensitive) ("ghc-blaze-builder" ,ghc-blaze-builder) ("ghc-text" ,ghc-text))) (home-page "https://github.com/aristidb/http-types") (synopsis "Generic HTTP types for Haskell") (description "This package provides generic HTTP types for Haskell (for both client and server code).") (license license:bsd-3))) (define-public ghc-http (package (name "ghc-http") (version "4000.3.3") (outputs '("out" "doc")) (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/HTTP/HTTP-" version ".tar.gz")) (sha256 (base32 "1wlvvqcxsnd2is3khsla0vd8i9cy12v1pg6d6i13ihcd131a7bdv")))) (build-system haskell-build-system) (native-inputs `(("ghc-hunit" ,ghc-hunit))) (inputs `(("ghc-old-time" ,ghc-old-time) ("ghc-parsec" ,ghc-parsec) ("ghc-mtl" ,ghc-mtl) ("ghc-network" ,ghc-network) ("ghc-network-uri" ,ghc-network-uri))) (arguments `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. (home-page "https://github.com/haskell/HTTP") (synopsis "Library for client-side HTTP") (description "The HTTP package supports client-side web programming in Haskell. It lets you set up HTTP connections, transmitting requests and processing the responses coming back.") (license license:bsd-3))) (define-public ghc-http-client (package (name "ghc-http-client") (version "0.5.7.1") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "http-client/http-client-" version ".tar.gz")) (sha256 (base32 "19cvnnfcjj2m3pgs6ivyjs21rw9wx5ynarh6hvb27a76cscai2fy")))) (build-system haskell-build-system) ;; Tests require access to the web. (arguments `(#:tests? #f)) (inputs `(("ghc-text" ,ghc-text) ("ghc-http-types" ,ghc-http-types) ("ghc-blaze-builder" ,ghc-blaze-builder) ("ghc-data-default-class" ,ghc-data-default-class) ("ghc-network" ,ghc-network) ("ghc-streaming-commons" ,ghc-streaming-commons) ("ghc-case-insensitive" ,ghc-case-insensitive) ("ghc-base64-bytestring" ,ghc-base64-bytestring) ("ghc-cookie" ,ghc-cookie) ("ghc-exceptions" ,ghc-exceptions) ("ghc-random" ,ghc-random) ("ghc-mime-types" ,ghc-mime-types) ("ghc-network-uri" ,ghc-network-uri) ("ghc-monad-control" ,ghc-monad-control) ("ghc-zlib" ,ghc-zlib) ("ghc-async" ,ghc-async))) (native-inputs `(("ghc-hspec" ,ghc-hspec))) (home-page "https://github.com/snoyberg/http-client") (synopsis "HTTP client engine") (description "This package provides an HTTP client engine, intended as a base layer for more user-friendly packages.") (license license:expat))) (define-public ghc-http-client-tls (package (name "ghc-http-client-tls") (version "0.3.5.1") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "http-client-tls/http-client-tls-" version ".tar.gz")) (sha256 (base32 "0n4mi8z77qaggfyq17z79cl304nf1f4h6gag60v4wjwghvmj7yn1")))) (build-system haskell-build-system) ;; Tests require Internet access (arguments `(#:tests? #f)) (inputs `(("ghc-data-default-class" ,ghc-data-default-class) ("ghc-http-client" ,ghc-http-client) ("ghc-connection" ,ghc-connection) ("ghc-network" ,ghc-network) ("ghc-tls" ,ghc-tls) ("ghc-http-types" ,ghc-http-types))) (native-inputs `(("ghc-hspec" ,ghc-hspec))) (home-page "https://github.com/snoyberg/http-client") (synopsis "Backend for http-client using the TLS library") (description "This package provides a backend for the http-client package using the connection and TLS libraries. It is intended for use by higher-level libraries, such as http-conduit.") (license license:expat))) (define-public ghc-http-date (package (name "ghc-http-date") (version "0.0.6.1") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "http-date-" version "/" "http-date-" version ".tar.gz")) (sha256 (base32 "0dknh28kyarnzqrsc80ssalxjrq0qbv7ir49247p2grb7rh0dqgj")))) (build-system haskell-build-system) (inputs `(("ghc-attoparsec" ,ghc-attoparsec))) (native-inputs `(("ghc-doctest" ,ghc-doctest) ("ghc-hspec" ,ghc-hspec) ("hspec-discover" ,hspec-discover) ("ghc-old-locale" ,ghc-old-locale))) (home-page "https://github.com/kazu-yamamoto/http-date") (synopsis "HTTP Date parser/formatter") (description "Library for Parsing and formatting HTTP Date in Haskell.") (license license:bsd-3))) (define-public ghc-http2 (package (name "ghc-http2") (version "1.6.3") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "http2-" version "/" "http2-" version ".tar.gz")) (sha256 (base32 "0hww0rfsv6lqx62qzycbcqy5q6rh9k09qkyjkdm5m1sp1z50wqk1")))) (build-system haskell-build-system) (inputs `(("ghc-bytestring-builder" ,ghc-bytestring-builder) ("ghc-case-insensitive" ,ghc-case-insensitive) ("ghc-aeson" ,ghc-aeson) ("ghc-aeson-pretty" ,ghc-aeson-pretty) ("ghc-hex" ,ghc-hex) ("ghc-unordered-containers" ,ghc-unordered-containers) ("ghc-vector" ,ghc-vector) ("ghc-word8" ,ghc-word8) ("ghc-psqueues" ,ghc-psqueues) ("ghc-stm" ,ghc-stm))) (native-inputs `(("ghc-glob" ,ghc-glob) ("ghc-hspec" ,ghc-hspec) ("ghc-doctest" ,ghc-doctest) ("hspec-discover" ,hspec-discover))) (home-page "https://github.com/kazu-yamamoto/http2") (synopsis "HTTP/2 library including frames, priority queues and HPACK") (description "This package provides a HTTP/2.0 library including frames and HPACK. Currently HTTP/2 16 framing and HPACK 10 is supported.") (license license:bsd-3))) (define-public ghc-http-conduit (package (name "ghc-http-conduit") (version "2.2.4") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "http-conduit-" version "/" "http-conduit-" version ".tar.gz")) (sha256 (base32 "1wcl3lpg4v1ylq9j77j9fmf6l9qbmp8dmj3a9829q19q6bbgza7l")))) (build-system haskell-build-system) ;; FIXME: `httpLbs TLS` in test-suite `test` fails with ;; ConnectionFailure getProtocolByName: does not exist (no such protocol ;; name: tcp) (arguments `(#:tests? #f)) (inputs `(("ghc-aeson" ,ghc-aeson) ("ghc-resourcet" ,ghc-resourcet) ("ghc-conduit" ,ghc-conduit) ("ghc-conduit-extra" ,ghc-conduit-extra) ("ghc-http-types" ,ghc-http-types) ("ghc-lifted-base" ,ghc-lifted-base) ("ghc-http-client" ,ghc-http-client) ("ghc-http-client-tls" ,ghc-http-client-tls) ("ghc-monad-control" ,ghc-monad-control) ("ghc-mtl" ,ghc-mtl) ("ghc-exceptions" ,ghc-exceptions))) (native-inputs `(("ghc-hunit" ,ghc-hunit) ("ghc-hspec" ,ghc-hspec) ("ghc-data-default-class" ,ghc-data-default-class) ("ghc-connection" ,ghc-connection) ("ghc-warp-tls" ,ghc-warp-tls) ("ghc-blaze-builder" ,ghc-blaze-builder) ("ghc-text" ,ghc-text) ("ghc-conduit" ,ghc-conduit) ("ghc-utf8-string" ,ghc-utf8-string) ("ghc-case-insensitive" ,ghc-case-insensitive) ("ghc-lifted-base" ,ghc-lifted-base) ("ghc-network" ,ghc-network) ("ghc-wai" ,ghc-wai) ("ghc-warp" ,ghc-warp) ("ghc-wai-conduit" ,ghc-wai-conduit) ("ghc-http-types" ,ghc-http-types) ("ghc-http-client" ,ghc-http-client) ("ghc-cookie" ,ghc-cookie) ("ghc-conduit-extra" ,ghc-conduit-extra) ("ghc-streaming-commons" ,ghc-streaming-commons) ("ghc-aeson" ,ghc-aeson) ("ghc-temporary" ,ghc-temporary) ("ghc-resourcet" ,ghc-resourcet))) (home-page "https://hackage.haskell.org/package/http-conduit") (synopsis "HTTP/HTTPS client with conduit interface") (description "This library uses attoparsec for parsing the actual contents of the HTTP connection. It also provides higher-level functions which allow you to avoid direct usage of conduits.") (license license:bsd-3))) (define-public ghc-wai (package (name "ghc-wai") (version "3.2.1.1") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/wai/wai-" version ".tar.gz")) (sha256 (base32 "08afasnirja21vr0bmzcywz4w29x736dmdv7h8nnh1l8bn7sd02x")))) (build-system haskell-build-system) (inputs `(("ghc-bytestring-builder" ,ghc-bytestring-builder) ("ghc-unix-compat" ,ghc-unix-compat) ("ghc-vault" ,ghc-vault) ("ghc-blaze-builder" ,ghc-blaze-builder) ("ghc-network" ,ghc-network) ("ghc-text" ,ghc-text) ("ghc-http-types" ,ghc-http-types))) (native-inputs `(("hspec-discover" ,hspec-discover) ("ghc-quickcheck" ,ghc-quickcheck) ("ghc-hunit" ,ghc-hunit) ("ghc-hspec" ,ghc-hspec))) (home-page "https://hackage.haskell.org/package/wai") (synopsis "Web application interface for Haskell") (description "This package provides a Web Application Interface (WAI) library for the Haskell language. It defines a common protocol for communication between web applications and web servers.") (license license:bsd-3))) (define-public ghc-wai-logger (package (name "ghc-wai-logger") (version "2.3.0") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/wai-logger/wai-logger-" version ".tar.gz")) (sha256 (base32 "1w0b0vinsyqr37wciljkz8g5dcmfi2r210lq194a0wkycly9kkch")))) (build-system haskell-build-system) (arguments `(#:tests? #f)) ; FIXME: Tests cannot find libraries exported ; by propagated-inputs. (inputs `(("ghc-auto-update" ,ghc-auto-update) ("ghc-byteorder" ,ghc-byteorder) ("ghc-easy-file" ,ghc-easy-file) ("ghc-unix-time" ,ghc-unix-time) ("ghc-blaze-builder" ,ghc-blaze-builder) ("ghc-case-insensitive" ,ghc-case-insensitive) ("ghc-fast-logger" ,ghc-fast-logger) ("ghc-http-types" ,ghc-http-types) ("ghc-network" ,ghc-network) ("ghc-wai" ,ghc-wai))) (home-page "https://hackage.haskell.org/package/wai-logger") (synopsis "Logging system for WAI") (description "This package provides the logging system for WAI.") (license license:bsd-3))) (define-public ghc-wai-extra (package (name "ghc-wai-extra") (version "3.0.18") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/wai-extra/wai-extra-" version ".tar.gz")) (sha256 (base32 "0r079mqqdv14fp97w0rigdpwk6b88grpjlqsjc5y8bbc0skf5za2")))) (build-system haskell-build-system) (inputs `(("ghc-ansi-terminal" ,ghc-ansi-terminal) ("ghc-base64-bytestring" ,ghc-base64-bytestring) ("ghc-cookie" ,ghc-cookie) ("ghc-blaze-builder" ,ghc-blaze-builder) ("ghc-network" ,ghc-network) ("ghc-lifted-base" ,ghc-lifted-base) ("ghc-streaming-commons" ,ghc-streaming-commons) ("ghc-stringsearch" ,ghc-stringsearch) ("ghc-resourcet" ,ghc-resourcet) ("ghc-fast-logger" ,ghc-fast-logger) ("ghc-wai-logger" ,ghc-wai-logger) ("ghc-zlib" ,ghc-zlib) ("ghc-word8" ,ghc-word8) ("ghc-iproute" ,ghc-iproute) ("ghc-void" ,ghc-void) ("ghc-wai" ,ghc-wai) ("ghc-http-types" ,ghc-http-types) ("ghc-text" ,ghc-text) ("ghc-case-insensitive" ,ghc-case-insensitive) ("ghc-data-default-class" ,ghc-data-default-class) ("ghc-unix-compat" ,ghc-unix-compat) ("ghc-vault" ,ghc-vault) ("ghc-aeson" ,ghc-aeson))) (native-inputs `(("hspec-discover" ,hspec-discover) ("ghc-hspec" ,ghc-hspec) ("ghc-hunit" ,ghc-hunit))) (home-page "https://github.com/yesodweb/wai") (synopsis "Some basic WAI handlers and middleware") (description "This library provides basic WAI handlers and middleware functionality.") (license license:expat))) (define-public ghc-wai-conduit (package (name "ghc-wai-conduit") (version "3.0.0.3") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "wai-conduit-" version "/" "wai-conduit-" version ".tar.gz")) (sha256 (base32 "1zvsiwjq2mvkb9sjgp3ly9m968m7a2jjzr4id6jpi3mmqykj15z4")))) (build-system haskell-build-system) (inputs `(("ghc-conduit" ,ghc-conduit) ("ghc-http-types" ,ghc-http-types) ("ghc-wai" ,ghc-wai) ("ghc-blaze-builder" ,ghc-blaze-builder))) (home-page "https://github.com/yesodweb/wai") (synopsis "Conduit wrappers for Haskell's WAI") (description "This package provides data streaming abstraction for Haskell's Web Application Interface (WAI).") (license license:expat))) (define-public ghc-warp (package (name "ghc-warp") (version "3.2.11.1") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "warp-" version "/" "warp-" version ".tar.gz")) (sha256 (base32 "1zp5cy0bbj508vdvms1n5z80z37m253kwsqc5a83cfc990n6fgw5")))) (build-system haskell-build-system) (arguments `(#:tests? #f)) ; FIXME: Test-Suite `spec` fails. (inputs `(("ghc-async" ,ghc-async) ("ghc-auto-update" ,ghc-auto-update) ("ghc-blaze-builder" ,ghc-blaze-builder) ("ghc-bytestring-builder" ,ghc-bytestring-builder) ("ghc-case-insensitive" ,ghc-case-insensitive) ("ghc-hashable" ,ghc-hashable) ("ghc-http-types" ,ghc-http-types) ("ghc-iproute" ,ghc-iproute) ("ghc-network" ,ghc-network) ("ghc-stm" ,ghc-stm) ("ghc-streaming-commons" ,ghc-streaming-commons) ("ghc-text" ,ghc-text) ("ghc-unix-compat" ,ghc-unix-compat) ("ghc-vault" ,ghc-vault) ("ghc-wai" ,ghc-wai) ("ghc-word8" ,ghc-word8) ("ghc-lifted-base" ,ghc-lifted-base) ("ghc-http-date" ,ghc-http-date) ("ghc-simple-sendfile" ,ghc-simple-sendfile) ("ghc-http2" ,ghc-http2))) (native-inputs `(("ghc-silently" ,ghc-silently) ("ghc-hspec" ,ghc-hspec) ("ghc-auto-update" ,ghc-auto-update) ("ghc-doctest" ,ghc-doctest) ("ghc-quickcheck" ,ghc-quickcheck) ("ghc-hunit" ,ghc-hunit) ("ghc-http" ,ghc-http) ("hspec-discover" ,hspec-discover))) (home-page "http://github.com/yesodweb/wai") (synopsis "HTTP server library for Haskell's WAI") (description "Warp is a server library for HTTP/1.x and HTTP/2 based WAI (Web Application Interface in Haskell).") (license license:expat))) (define-public ghc-warp-tls (package (name "ghc-warp-tls") (version "3.2.3") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "warp-tls-" version "/" "warp-tls-" version ".tar.gz")) (sha256 (base32 "14m2bzk5ivz9gdpxlcj6qnh46f2lycm1ybdjnfkj2876zrqwii7m")))) (build-system haskell-build-system) (inputs `(("ghc-cryptonite" ,ghc-cryptonite) ("ghc-data-default-class" ,ghc-data-default-class) ("ghc-network" ,ghc-network) ("ghc-streaming-commons" ,ghc-streaming-commons) ("ghc-tls" ,ghc-tls) ("ghc-wai" ,ghc-wai) ("ghc-warp" ,ghc-warp))) (home-page "http://github.com/yesodweb/wai") (synopsis "SSL/TLS support for Warp") (description "This package provides SSL/TLS support for Warp, a WAI handler, via the native Haskell TLS implementation.") (license license:expat))) (define-public ghc-xss-sanitize (package (name "ghc-xss-sanitize") (version "0.3.5.7") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/xss-sanitize/xss-sanitize-" version ".tar.gz")) (sha256 (base32 "005cmhaw9xbzkcn42jmhvcvk63bzmg4lml368xwmqdvh7r0mcn4m")))) (build-system haskell-build-system) (inputs `(("ghc-tagsoup" ,ghc-tagsoup) ("ghc-utf8-string" ,ghc-utf8-string) ("ghc-css-text" ,ghc-css-text) ("ghc-network-uri" ,ghc-network-uri))) (native-inputs `(("ghc-text" ,ghc-text) ("ghc-attoparsec" ,ghc-attoparsec) ("ghc-hspec" ,ghc-hspec) ("ghc-hunit" ,ghc-hunit))) (home-page "https://github.com/yesodweb/haskell-xss-sanitize") (synopsis "Sanitize untrusted HTML to prevent XSS attacks") (description "This library provides @code{sanitizeXSS}. Run untrusted HTML through @code{Text.HTML.SanitizeXSS.sanitizeXSS} to prevent XSS attacks.") (license license:bsd-3))) (define-public ghc-css-text (package (name "ghc-css-text") (version "0.1.3.0") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/css-text/css-text-" version ".tar.gz")) (sha256 (base32 "0ynd9f4hn2sfwqzbsa0y7phmxq8za7jiblpjwx0ry8b372zhgxaz")))) (build-system haskell-build-system) (inputs `(("ghc-text" ,ghc-text) ("ghc-attoparsec" ,ghc-attoparsec) ("ghc-hspec" ,ghc-hspec) ("ghc-quickcheck" ,ghc-quickcheck))) (home-page "http://www.yesodweb.com/") (synopsis "CSS parser and renderer") (description "This package provides a CSS parser and renderer for Haskell.") (license license:bsd-3))) (define-public ghc-mime-types (package (name "ghc-mime-types") (version "0.1.0.7") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "mime-types/mime-types-" version ".tar.gz")) (sha256 (base32 "1fg9cqpp5lswk8ajlq4f41n12c2v2naz179l8dsz6zisjqj4l5l3")))) (build-system haskell-build-system) (inputs `(("ghc-text" ,ghc-text))) (home-page "https://github.com/yesodweb/wai") (synopsis "Basic MIME type handling types and functions") (description "This library provides basic MIME type handling types and functions.") (license license:expat))) (define-public ghc-html (package (name "ghc-html") (version "1.0.1.2") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/html/html-" version ".tar.gz")) (sha256 (base32 "0q9hmfii62kc82ijlg238fxrzxhsivn42x5wd6ffcr9xldg4jd8c")))) (build-system haskell-build-system) (home-page "https://hackage.haskell.org/package/html") (synopsis "HTML combinator library") (description "This package contains a combinator library for constructing HTML documents.") (license license:bsd-3))) (define-public ghc-xhtml (package (name "ghc-xhtml") (version "3000.2.1") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/xhtml/xhtml-" version ".tar.gz")) (sha256 (base32 "1n6wgzxbj8xf0wf1il827qidphnffb5vzhwzqlxhh70c2y10f0ik")))) (build-system haskell-build-system) (home-page "https://github.com/haskell/xhtml") (synopsis "XHTML combinator library") (description "This package provides combinators for producing XHTML 1.0, including the Strict, Transitional and Frameset variants.") (license license:bsd-3))) (define-public ghc-blaze-html (package (name "ghc-blaze-html") (version "0.8.1.2") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/blaze-html/blaze-html-" version ".tar.gz")) (sha256 (base32 "1dzjgsvfgz9d944z8af9lsl8h5as72vsyc0m4nzkks8jh6rr5vpp")))) (build-system haskell-build-system) (arguments `(#:tests? #f)) ; FIXME: testing libraries are missing. (inputs `(("ghc-blaze-builder" ,ghc-blaze-builder) ("ghc-text" ,ghc-text) ("ghc-blaze-markup" ,ghc-blaze-markup))) (home-page "http://jaspervdj.be/blaze") (synopsis "Fast HTML combinator library") (description "This library provides HTML combinators for Haskell.") (license license:bsd-3))) (define-public ghc-aeson (package (name "ghc-aeson") (version "1.2.4.0") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/aeson/aeson-" version ".tar.gz")) (sha256 (base32 "16zwpd07cmhs58wwsqbhxy3b58gqw8w5nr7nf6lwi4nvznjdn09l")))) (build-system haskell-build-system) (arguments `(#:tests? #f)) ; FIXME: testing libraries are missing. (inputs `(("ghc-attoparsec" ,ghc-attoparsec) ("ghc-base-compat" ,ghc-base-compat) ("ghc-dlist" ,ghc-dlist) ("ghc-hashable" ,ghc-hashable) ("ghc-scientific" ,ghc-scientific) ("ghc-tagged" ,ghc-tagged) ("ghc-text" ,ghc-text) ("ghc-th-abstraction" ,ghc-th-abstraction) ("ghc-time-locale-compat" ,ghc-time-locale-compat) ("ghc-unordered-containers" ,ghc-unordered-containers) ("ghc-uuid-types" ,ghc-uuid-types) ("ghc-vector" ,ghc-vector) ("ghc-hunit" ,ghc-hunit) ("ghc-quickcheck" ,ghc-quickcheck) ("ghc-integer-logarithms" ,ghc-integer-logarithms) ("ghc-base-orphans" ,ghc-base-orphans) ("ghc-base16-bytestring" ,ghc-base16-bytestring) ("ghc-generic-deriving" ,ghc-generic-deriving) ("ghc-test-framework" ,ghc-test-framework) ("ghc-test-framework-hunit" ,ghc-test-framework-hunit) ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2) ("ghc-quickcheck-instances" ,ghc-quickcheck-instances) ("ghc-hashable-time" ,ghc-hashable-time))) (home-page "https://github.com/bos/aeson") (synopsis "Fast JSON parsing and encoding") (description "This package provides a JSON parsing and encoding library for Haskell, optimized for ease of use and high performance. (A note on naming: in Greek mythology, Aeson was the father of Jason.)") (license license:bsd-3))) (define-public ghc-aeson-pretty (package (name "ghc-aeson-pretty") (version "0.8.2") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/aeson-pretty/aeson-pretty-" version ".tar.gz")) (sha256 (base32 "1c5r1w1hcv297pmj9yjpz9al22k3mh61gimi37wddga02212kd3c")))) (build-system haskell-build-system) (inputs `(("ghc-aeson" ,ghc-aeson) ("ghc-vector" ,ghc-vector) ("ghc-text" ,ghc-text) ("ghc-unordered-containers" ,ghc-unordered-containers) ("ghc-attoparsec" ,ghc-attoparsec) ("ghc-cmdargs" ,ghc-cmdargs))) (home-page "https://github.com/informatikr/aeson-pretty") (synopsis "JSON pretty-printing library and command-line tool") (description "This package provides a JSON pretty-printing library compatible with aeson as well as a command-line tool to improve readabilty of streams of JSON data. The library provides the function @code{encodePretty}. It is a drop-in replacement for aeson's @code{encode} function, producing JSON-ByteStrings for human readers. The command-line tool reads JSON from stdin and writes prettified JSON to stdout. It also offers a complementary \"compact\"-mode, essentially the opposite of pretty-printing.") (license license:bsd-3))) (define-public ghc-aeson-qq (package (name "ghc-aeson-qq") (version "0.8.2") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "aeson-qq/aeson-qq-" version ".tar.gz")) (sha256 (base32 "0ln13jqyfh5726hdrk1rad9a6cgrrj201plmwcfcpvq18v4m5ckd")))) (build-system haskell-build-system) (inputs `(("ghc-base-compat" ,ghc-base-compat) ("ghc-text" ,ghc-text) ("ghc-attoparsec" ,ghc-attoparsec) ("ghc-scientific" ,ghc-scientific) ("ghc-vector" ,ghc-vector) ("ghc-aeson" ,ghc-aeson) ("ghc-parsec" ,ghc-parsec) ("ghc-haskell-src-meta" ,ghc-haskell-src-meta))) (native-inputs `(("ghc-hspec" ,ghc-hspec) ("hspec-discover" ,hspec-discover))) (home-page "https://github.com/zalora/aeson-qq") (synopsis "JSON quasiquoter for Haskell") (description "aeson-qq provides a JSON quasiquoter for Haskell. This package exposes the function @code{aesonQQ} that compile-time converts a string representation of a JSON value into a @code{Data.Aeson.Value}.") (license license:expat))) (define-public ghc-multipart (package (name "ghc-multipart") (version "0.1.2") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/multipart/multipart-" version ".tar.gz")) (sha256 (base32 "0g04jhyw1ib1s7c9bcldyyn4n90qd9x7dmvic4vgq57bgcqgnhz5")))) (build-system haskell-build-system) (inputs `(("ghc-parsec" ,ghc-parsec))) (home-page "http://www.github.com/silkapp/multipart") (synopsis "HTTP multipart library") (description "HTTP multipart split out of the cgi package, for Haskell.") (license license:bsd-3)))