;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Hartmut Goebel ;;; Copyright © 2016, 2019, 2020, 2021 Efraim Flashner ;;; Copyright © 2017 Nikita ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017 Ricardo Wurmus ;;; Copyright © 2018 Vijayalakshmi Vedantham ;;; Copyright © 2019 Sam ;;; Copyright © 2020, 2021, 2022, 2023 Marius Bakke ;;; Copyright © 2021 Maxim Cournoyer ;;; Copyright © 2021 Luis Felipe López Acevedo ;;; Copyright © 2022 Pradana Aumars ;;; ;;; 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 django) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix gexp) #:use-module (guix build-system pyproject) #:use-module (guix build-system python) #:use-module (guix deprecation) #:use-module (guix search-paths) #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages databa
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2015, 2019 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
;;; Copyright © 2016, 2019, 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
;;; Copyright © 2017, 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
;;; Copyright © 2017–2019, 2021, 2023 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Tonton <tonton@riseup.net>
;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018, 2019 Gabriel Hondet <gabrielhondet@gmail.com>
;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
;;; Copyright © 2019,2020 John Soo <jsoo1@asu.edu>
;;; Copyright © 2019, 2020 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 JoJo <jo@jo.zone>
;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
;;; Copyright © 2020 Christine Lemmer-Webber <cwebber@dustycloud.org>
;;; Copyright © 2021–2023 Alice BRENON <alice.brenon@ens-lyon.fr>
;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
;;;
;;; 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 <http://www.gnu.org/licenses/>.

(define-module (gnu packages haskell-xyz)
  #:use-module (gnu packages)
  #:use-module (gnu packages base)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages databases)
  #:use-module (gnu packages emacs)
  #:use-module (gnu packages freedesktop)
  #:use-module (gnu packages gl)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages graphviz)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages haskell)
  #:use-module (gnu packages haskell-apps)
  #:use-module (gnu packages haskell-check)
  #:use-module (gnu packages haskell-crypto)
  #:use-module (gnu packages haskell-web)
  #:use-module (gnu packages icu4c)
  #:use-module (gnu packages libffi)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages llvm)
  #:use-module (gnu packages lua)
  #:use-module (gnu packages maths)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages pcre)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages sdl)
  #:use-module (gnu packages serialization)
  #:use-module (gnu packages tls)
  #:use-module (gnu packages version-control)
  #:use-module (gnu packages xml)
  #:use-module (gnu packages xorg)
  #:use-module (guix build-system haskell)
  #:use-module (guix download)
  #:use-module (guix gexp)
  #:use-module (guix git-download)
  #:use-module (guix utils)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (srfi srfi-1))

(define-public ghc-abstract-deque
  (package
    (name "ghc-abstract-deque")
    (version "0.3")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "abstract-deque" version))
       (sha256
        (base32
         "18jwswjxwzc9bjiy4ds6hw2a74ki797jmfcifxd2ga4kh7ri1ah9"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "abstract-deque")))
    (inputs (list ghc-random))
    (home-page "https://github.com/rrnewton/haskell-lockfree/wiki")
    (synopsis "Abstract, parameterized interface to mutable Deques for Haskell")
    (description "This Haskell package provides an abstract interface to
highly-parameterizable queues/deques.

Background: There exists a feature space for queues that extends between:

@itemize
@item Simple, single-ended, non-concurrent, bounded queues

@item Double-ended, thread-safe, growable queues with important points
in between (such as the queues used for work stealing).
@end itemize

This package includes an interface for Deques that allows the programmer
to use a single API for all of the above, while using the type system to
select an efficient implementation given the requirements (using type families).

This package also includes a simple reference implementation based on
@code{IORef} and @code{Data.Sequence}.")
    (license license:bsd-3)))

(define-public ghc-abstract-par
  (package
    (name "ghc-abstract-par")
    (version "0.3.3")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "abstract-par" version))
       (sha256
        (base32
         "0q6qsniw4wks2pw6wzncb1p1j3k6al5njnvm2v5n494hplwqg2i4"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "abstract-par")))
    (home-page "https://github.com/simonmar/monad-par")
    (synopsis "Abstract parallelization interface for Haskell")
    (description "This Haskell package is an abstract interface
only.  It provides a number of type clasess, but not an
implementation.  The type classes separate different levels
of @code{Par} functionality.  See the @code{Control.Monad.Par.Class}
module for more details.")
    (license license:bsd-3)))

(define-public ghc-active
  (package
    (name "ghc-active")
    (version "0.2.0.18")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "active" version))
       (sha256
        (base32 "1fn3cyf43x18p2phs8bhacbp8zl8aifrh7ndzs0qi6n6g9sw95qn"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "active")))
    (inputs (list ghc-vector ghc-semigroups ghc-semigroupoids ghc-lens
                  ghc-linear))
    (native-inputs (list ghc-quickcheck))
    (home-page "https://hackage.haskell.org/package/active")
    (synopsis "Abstractions for animation")
    (description
     "This package defines an @code{Active} abstraction for
time-varying values with finite start and end times.  It is used for
describing animations within the
@url{https://archives.haskell.org/projects.haskell.org/diagrams/,
diagrams framework}.")
    (license license:bsd-3)))

(define-public ghc-adjunctions
  (package
    (name "ghc-adjunctions")
    (version "4.4.2")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "adjunctions" version))
              (sha256
               (base32
                "06354xzgf78jl4g1xw11rp74gi7zh94rgvsji7ma1g0hp26myyql"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "adjunctions")))
    (inputs (list ghc-comonad
                  ghc-contravariant
                  ghc-distributive
                  ghc-free
                  ghc-profunctors
                  ghc-tagged
                  ghc-semigroupoids
                  ghc-semigroups
                  ghc-transformers-compat
                  ghc-void))
    (native-inputs (list ghc-generic-deriving ghc-hspec hspec-discover))
    (home-page "https://github.com/ekmett/adjunctions/")
    (synopsis "Adjunctions and representable functors")
    (description "This library provides adjunctions and representable functors
for Haskell.")
    (license license:bsd-3)))

;; Deprecated package.
(define-public ghc-aeson-compat
  (package
    (name "ghc-aeson-compat")
    (version "0.3.10")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "aeson-compat" version))
       (sha256
        (base32
         "0ia3qfdpbrzhwwg4ywpdwca0z1m85k081pcz6jh1sx8qjsvcr71w"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "aeson-compat")))
    (inputs (list ghc-base-compat
                  ghc-aeson
                  ghc-attoparsec
                  ghc-attoparsec-iso8601
                  ghc-hashable
                  ghc-scientific
                  ghc-time-locale-compat
                  ghc-unordered-containers
                  ghc-vector
                  ghc-tagged))
    (native-inputs
     (list ghc-tasty
           ghc-tasty-hunit
           ghc-tasty-quickcheck
           ghc-quickcheck
           ghc-quickcheck-instances
           ghc-base-orphans))
    (arguments
     `(#:cabal-revision ("4"
                         "001w7pck3q5k4cnx53npllil5cblkg1ssqza4s9v347dfih3zmss")))
    (home-page "https://github.com/phadej/aeson-compat")
    (synopsis "Compatibility layer for ghc-aeson")
    (description "This Haskell package provides compatibility layer for
ghc-aeson.")
    (license license:bsd-3)))

(define-public ghc-aeson-diff
  (package
    (name "ghc-aeson-diff")
    (version "1.1.0.13")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "aeson-diff" version))
       (sha256
        (base32
         "0sd13q0nj0k1sam5xfj6dcjcki18f375sa69hm6i4xc6snfhn3cb"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "aeson-diff")))
    (inputs
     (list ghc-aeson
           ghc-edit-distance-vector
           ghc-hashable
           ghc-scientific
           ghc-unordered-containers
           ghc-vector
           ghc-semigroups
           ghc-optparse-applicative))
    (native-inputs
     (list ghc-quickcheck
           ghc-quickcheck-instances
           ghc-glob
           ghc-quickcheck
           ghc-quickcheck-instances
           ghc-quickcheck
           ghc-doctest
           hlint))
    (arguments
     `(#:cabal-revision ("1"
                         "1028adallw7bm72948lj322bb5a99gfs0qc1j0pnm8hryp6n7ma5")
       #:tests? #f ; Needs doctest Setup.hs
       #:phases
       (modify-phases %standard-phases
         ;; Tries to use non-existent doctest API.
         (add-after 'unpack 'disable-doctest
           (lambda _
             (with-output-to-file "Setup.hs"
               (lambda _
                 (display
                  "import Distribution.Simple\nmain = defaultMain\n"))))))))
   (home-page "https://github.com/thsutton/aeson-diff")
    (synopsis "Extract and apply patches to JSON documents")
    (description "This is a small library for working with changes to JSON
documents.  It includes a library and two command-line executables in the
style of the @command{diff} and @command{patch} commands available on many
systems.")
    (license license:bsd-3)))

(define-public ghc-alex
  (package
    (name "ghc-alex")
    (version "3.2.7.4")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "alex" version))
       (sha256
        (base32 "0vr2jmh7qba9c5lrd969p0qqdc9mi22cw5axsyikm200x80zl4wa"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "alex")))
    (home-page "http://www.haskell.org/alex/")
    (synopsis "Tool for generating lexical analysers in Haskell")
    (description
     "Alex is a tool for generating lexical analysers in Haskell.  It takes a
description of tokens based on regular expressions and generates a Haskell
module containing code for scanning text efficiently.  It is similar to the
tool lex or flex for C/C++.")
    (license license:bsd-3)))

(define-public ghc-alsa-core
  (package
    (name "ghc-alsa-core")
    (version "0.5.0.1")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "alsa-core" version))
       (sha256
        (base32
         "1avh4a419h9d2zsslg6j8hm87ppgsgqafz8ll037rk2yy1g4jl7b"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "alsa-core")))
    (arguments
     `(#:extra-directories ("alsa-lib")))
    (inputs
     (list ghc-extensible-exceptions alsa-lib))
    (native-inputs
     (list pkg-config))
    (home-page "https://wiki.haskell.org/ALSA")
    (synopsis "Binding to the ALSA Library API (Exceptions)")
    (description "This package provides access to ALSA infrastructure, that is
needed by both alsa-seq and alsa-pcm.")
    (license license:bsd-3)))

(define-public ghc-alsa-mixer
  (package
   (name "ghc-alsa-mixer")
   (version "0.3.0")
   (source
    (origin
     (method url-fetch)
     (uri
      (hackage-uri "alsa-mixer" version))
     (sha256
      (base32
       "00ny2p3276jilidjs44npc8zmbhynz3f2lpmlwwl6swwx5yijsnb"))))
   (build-system haskell-build-system)
   (properties '((upstream-name . "alsa-mixer")))
   (inputs (list ghc-alsa-core))
   (native-inputs (list ghc-c2hs))
   (home-page "https://github.com/ttuegel/alsa-mixer")
   (synopsis "Bindings to the ALSA simple mixer API")
   (description
    "This package provides bindings to the ALSA simple mixer API.")
   (license license:bsd-3)))

(define-public ghc-annotated-wl-pprint
  (package
    (name "ghc-annotated-wl-pprint")
    (version "0.7.0")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "annotated-wl-pprint" version))
       (sha256
        (base32
         "061xfz6qany3wf95csl8dcik2pz22cn8iv1qchhm16isw5zjs9hc"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "annotated-wl-pprint")))
    (home-page
     "https://github.com/david-christiansen/annotated-wl-pprint")
    (synopsis
     "The Wadler/Leijen Pretty Printer, with annotation support")
    (description "This is a modified version of wl-pprint, which was based on
Wadler's paper \"A Prettier Printer\".  This version allows the library user
to annotate the text with semantic information, which can later be rendered in
a variety of ways.")
    (license license:bsd-3)))

(define-public ghc-ansi-terminal
  (package
    (name "ghc-ansi-terminal")
    (version "0.11.4")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "ansi-terminal" version))
              (sha256
               (base32
                "098f8bdxqmgxaz8y87s6b6bshsq950zq0b75rmbihp2k1a7y963q"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "ansi-terminal")))
    (inputs (list ghc-colour))
    (home-page "https://github.com/UnkindPartition/ansi-terminal")
    (synopsis "ANSI terminal support for Haskell")
    (description
     "This package provides ANSI terminal support for Haskell.  It
allows cursor movement, screen clearing, color output showing or hiding the
cursor, and changing the title.")
    (license license:bsd-3)))

(define-public ghc-ansi-wl-pprint
  (package
    (name "ghc-ansi-wl-pprint")
    (version "0.6.9")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "ansi-wl-pprint" version))
       (sha256
        (base32
         "1b2fg8px98dzbaqyns10kvs8kn6cl1hdq5wb9saz40izrpkyicm7"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "ansi-wl-pprint")))
    (arguments
     `(#:cabal-revision
       ("2" "1xrv66v5hqchjhj8a0g3awy1qpsswk2jqb4w4yh3mm1py5s0dlr0")))
    (inputs
     (list ghc-ansi-terminal))
    (home-page "https://github.com/ekmett/ansi-wl-pprint")
    (synopsis "Wadler/Leijen Pretty Printer for colored ANSI terminal output")
    (description "This is a pretty printing library based on Wadler's paper
\"A Prettier Printer\".  It has been enhanced with support for ANSI terminal
colored output using the ansi-terminal package.")
    (license license:bsd-3)))

(define-public ghc-appar
  (package
    (name "ghc-appar")
    (version "0.1.8")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "appar" version))
       (sha256
        (base32
         "07v3h766q9mnhphsm53718h1lds147ix7dj15kc5hnsj4vffvkn4"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "appar")))
    (home-page
     "https://hackage.haskell.org/package/appar")
    (synopsis "Simple applicative parser")
    (description "This package provides a simple applicative parser in Parsec
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 "https://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")
    (version "1.0.2")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "assoc" version))
       (sha256
        (base32
         "0kqlizznjy94fm8zr1ng633yxbinjff7cnsiaqs7m33ix338v66q"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "assoc")))
    (inputs
     (list ghc-bifunctors ghc-tagged))
    (arguments
     `(#:cabal-revision ("3"
                         "0mrb12dx316q4gxyn68x2rl8jq0gd77zffd12r8j1r41l0xd9f4k")))
    (home-page
     "https://hackage.haskell.org/package/assoc")
    (synopsis
     "Swap and assoc: Symmetric and Semigroupy Bifunctors")
    (description
     "Provides generalisations of @code{swap :: (a,b) -> (b,a)} and
@code{assoc :: ((a,b),c) -> (a,(b,c))} to @code{Bifunctor}s supporting
similar operations (e.g. @code{Either}, @code{These}).")
    (license license:bsd-3)))

(define-public ghc-async
  (package
    (name "ghc-async")
    (version "2.2.4")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "async" version))
       (sha256
        (base32
         "09d7w3krfhnmf9dp6yffa9wykinhw541wibnjgnlyv77w1dzhka8"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "async")))
    (inputs
     (list ghc-hashable))
    (native-inputs
     (list ghc-hunit ghc-test-framework ghc-test-framework-hunit))
    (arguments
     `(#:cabal-revision ("2"
                         "1j93w1krkadqijn59yjiws1366yhcn2mad1irqrk50in6l10k51b")))
    (home-page "https://github.com/simonmar/async")
    (synopsis "Library to run IO operations asynchronously")
    (description "Async provides a library to run IO operations
asynchronously, and wait for their results.  It is a higher-level interface
over threads in Haskell, in which @code{Async a} is a concurrent thread that
will eventually deliver a value of type @code{a}.")
    (license license:bsd-3)))

(define-public ghc-atomic-primops
  (package
    (name "ghc-atomic-primops")
    (version "0.8.4")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "atomic-primops" version))
       (sha256
        (base32
         "0gidqyk913vhcz3q4vnpadx3vkkrwb66rqhsxvdba8g2p5z63a12"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "atomic-primops")))
    (inputs (list ghc-primitive))
    (home-page "https://github.com/rrnewton/haskell-lockfree/wiki")
    (synopsis "Safe approach to CAS and other atomic ops")
    (description
     "GHC 7.4 introduced a new @code{casMutVar} PrimOp which is difficult to
use safely, because pointer equality is a highly unstable property in Haskell.
This library provides a safer method based on the concept of @code{Ticket}s.")
    (license license:bsd-3)))

(define-public ghc-atomic-write
  (package
    (name "ghc-atomic-write")
    (version "0.2.0.7")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "atomic-write" version))
       (sha256
        (base32
         "03cn3ii74h0w3g4h78xsx9v2sn58r3qsr2dbdwq340xwhiwcgxdm"))))
    (build-system haskell-build-system)
    (properties `((upstream-name . "atomic-write")))
    (inputs
     (list ghc-temporary ghc-unix-compat))
    (native-inputs
     (list ghc-temporary ghc-unix-compat ghc-hspec hspec-discover))
    (home-page "https://github.com/stackbuilders/atomic-write")
    (synopsis "Atomically write to a file")
    (description
     "Atomically write to a file on POSIX-compliant systems while preserving
permissions.  @code{mv} is an atomic operation.  This makes it simple to write
to a file atomically just by using the @code{mv} operation.  However, this
will destroy the permissions on the original file.  This library preserves
permissions while atomically writing to a file.")
    (license license:expat)))

(define-public ghc-attoparsec
  (package
    (name "ghc-attoparsec")
    (version "0.14.4")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "attoparsec" version))
              (sha256
               (base32
                "0v4yjz4qi8bwhbyavqxlhsfb1iv07v10gxi64khmsmi4hvjpycrz"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "attoparsec")))
    (inputs (list ghc-scientific))
    (native-inputs (list ghc-quickcheck ghc-quickcheck-unicode ghc-tasty
                         ghc-tasty-quickcheck ghc-vector))
    (arguments
     `(#:cabal-revision ("2"
                         "00jyrn2asz1kp698l3fyh19xxxz4npf1993y041x9b9cq239smn0")))
    (home-page "https://github.com/bgamari/attoparsec")
    (synopsis "Fast combinator parsing for bytestrings and text")
    (description
     "This library provides a fast parser combinator library,
aimed particularly at dealing efficiently with network protocols and
complicated text/binary file formats.")
    (license license:bsd-3)))

(define-public ghc-attoparsec-iso8601
  (package
    (name "ghc-attoparsec-iso8601")
    (version "1.0.2.1")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "attoparsec-iso8601" version))
              (sha256
               (base32
                "1zmj6v63xjj20ja50ffbi222yg513cnnqyxl76ybb4x98z9jld0k"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "attoparsec-iso8601")))
    (inputs (list ghc-attoparsec ghc-base-compat-batteries ghc-time-compat))
    (home-page "https://github.com/haskell/aeson")
    (synopsis "Parse ISO 8601 dates")
    (description "Haskell library for parsing of ISO 8601 dates, originally
from aeson.")
    (license license:bsd-3)))

(define-public ghc-auto-update
  (package
    (name "ghc-auto-update")
    (version "0.1.6")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "auto-update" version))
       (sha256
        (base32
         "1i36xc2i34aync8271x3pv515l3zb53i518dybn8ghqkhzf27q7l"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "auto-update")))
    (native-inputs
     (list ghc-hspec ghc-hunit ghc-retry hspec-discover))
    (home-page "https://github.com/yesodweb/wai")
    (synopsis "Efficiently run periodic, on-demand actions")
    (description "This library provides mechanisms to efficiently run
periodic, on-demand actions in Haskell.")
    (license license:expat)))

(define-public ghc-aws
  (package
    (name "ghc-aws")
    (version "0.23")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "aws" version))
       (sha256 (base32
                "0kfdj9hxjvziq1y74xj9mm17zcgwywpvp9c0i6gfd5malf4qxgg0"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "aws")))
    (arguments
     `(#:tests? #f ; Tests require AWS credentials.
       #:configure-flags (list "-fNetworkBSD"))) ; Use network-bsd.
    (inputs
     (list ghc-aeson
           ghc-attoparsec
           ghc-base16-bytestring
           ghc-base64-bytestring
           ghc-blaze-builder
           ghc-byteable
           ghc-case-insensitive
           ghc-cereal
           ghc-conduit
           ghc-conduit-extra
           ghc-cryptonite
           ghc-data-default
           ghc-http-conduit
           ghc-http-types
           ghc-lifted-base
           ghc-monad-control
           ghc-network
           ghc-network-bsd
           ghc-old-locale
           ghc-safe
           ghc-scientific
           ghc-tagged
           ghc-unordered-containers
           ghc-utf8-string
           ghc-vector
           ghc-xml-conduit))
    (native-inputs
     (list ghc-quickcheck
           ghc-errors
           ghc-http-client
           ghc-http-client-tls
           ghc-quickcheck-instances
           ghc-tasty
           ghc-tasty-quickcheck
           ghc-tasty-hunit
           ghc-conduit-combinators))
    (home-page "https://github.com/aristidb/aws")
    (synopsis "Amazon Web Services for Haskell")
    (description "This package attempts to provide support for using
Amazon Web Services like S3 (storage), SQS (queuing) and others to
Haskell programmers.  The ultimate goal is to support all Amazon
Web Services.")
    (license license:bsd-3)))

(define-public ghc-base16-bytestring
  (package
    (name "ghc-base16-bytestring")
    (version "1.0.2.0")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "base16-bytestring" version))
              (sha256
               (base32
                "1167f9jaivnabn6kg2gc421ac9njb67fr4v0adbj3qph7qa92nhx"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "base16-bytestring")))
    (native-inputs (list ghc-hunit ghc-quickcheck ghc-test-framework
                         ghc-test-framework-hunit
                         ghc-test-framework-quickcheck2))
    (home-page "https://github.com/haskell/base16-bytestring")
    (synopsis "Fast base16 (hex) encoding and decoding for ByteStrings")
    (description
     "This package provides a Haskell library for working with base16-encoded
data quickly and efficiently, using the ByteString type.")
    (license license:bsd-3)))

(define-public ghc-base64-bytestring
  (package
    (name "ghc-base64-bytestring")
    (version "1.2.1.0")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "base64-bytestring" version))
              (sha256
               (base32
                "1ja9vkgnpkzaw8gz6sm5jmgha6wg3m1j281m0nv1w9yyxlqfvy7v"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "base64-bytestring")))
    (native-inputs (list ghc-hunit ghc-quickcheck ghc-test-framework
                         ghc-test-framework-hunit
                         ghc-test-framework-quickcheck2))
    (home-page "https://github.com/haskell/base64-bytestring")
    (synopsis "Base64 encoding and decoding for ByteStrings")
    (description "This library provides fast base64 encoding and decoding for
Haskell @code{ByteString}s.")
    (license license:bsd-3)))

(define-public ghc-base-compat
  (package
    (name "ghc-base-compat")
    (version "0.12.2")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "base-compat" version))
              (sha256
               (base32
                "1gah466nd6hkj716gwljfh0g270iaqy2rq2a1vw3di2s7a4dqam6"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "base-compat")))
    (home-page "https://hackage.haskell.org/package/base-compat")
    (synopsis "Haskell compiler compatibility library")
    (description
     "This library provides functions available in later versions
of base to a wider range of compilers, without requiring the use of CPP
pragmas in your code.")
    (license license:expat)))

(define-public ghc-base-compat-batteries
  (package
    (name "ghc-base-compat-batteries")
    (version "0.12.2")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "base-compat-batteries" version))
              (sha256
               (base32
                "16gbqng8556wqcvrmj3dmqxh9sxp7z6ixgv0j5sy017r0wp0ksgd"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "base-compat-batteries")))
    (inputs (list ghc-base-compat))
    (native-inputs (list ghc-hspec ghc-quickcheck hspec-discover))
    (home-page "https://hackage.haskell.org/package/base-compat-batteries")
    (synopsis "base-compat with extra batteries")
    (description
     "This library provides functions available in later
versions of @code{base} to a wider range of compilers, without requiring
you to use CPP pragmas in your code.  This package provides the same API
as the @code{base-compat} library, but depends on compatibility
packages (such as @code{semigroups}) to offer a wider support window
than @code{base-compat}, which has no dependencies.")
    (license license:expat)))

(define-public ghc-basement
  (package
    (name "ghc-basement")
    (version "0.0.16")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "basement" version))
       (sha256
        (base32 "00332i4n98gh06x8ii4p8mhjpq0ch1bdan9hxmdblxpgk8j7xdvz"))))
    (build-system haskell-build-system)
    (arguments
     (if (target-64bit?)
         '()
         (list #:phases
               #~(modify-phases %standard-phases
                   (add-after 'unpack 'patch-for-32-bit-system
                     (lambda _
                       (define patch
                         #$(local-file
                            (search-patch "ghc-basement-fix-32-bit.patch")))

                       (invoke "patch" "-p1" "--force" "-i" patch)))))))
    (properties '((upstream-name . "basement")))
    (home-page "https://github.com/haskell-foundation/foundation#readme")
    (synopsis "Basic primitives for Foundation starter pack")
    (description
     "This package contains basic primitives for the Foundation set of
packages.")
    (license license:bsd-3)))

(define-public ghc-base-orphans
  (package
    (name "ghc-base-orphans")
    (version "0.8.8.2")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "base-orphans" version))
       (sha256
        (base32 "14jhh848q3451hqi4knslc7nnvw9dn77vawnhp4qs4l4703fgjk1"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "base-orphans")))
    (native-inputs (list ghc-quickcheck ghc-hspec hspec-discover))
    (home-page "https://github.com/haskell-compat/base-orphans#readme")
    (synopsis "Orphan instances for backwards compatibility")
    (description
     "This package defines orphan instances that mimic instances
available in later versions of base to a wider (older) range of compilers.")
    (license license:expat)))

(define-public ghc-base-orphans-bootstrap
  (package
    (inherit ghc-base-orphans)
    (name "ghc-base-orphans-bootstrap")
    (arguments '(#:tests? #f))
    (native-inputs '())
    (properties '((hidden? #t)))))

(define-public ghc-base-prelude
  (package
    (name "ghc-base-prelude")
    (version "1.6.1")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "base-prelude" version))
              (sha256
               (base32
                "0rbx6k85svqrkw5ixp2xal8bg6xrz729g7rrhkgsr3ixv38k943j"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "base-prelude")))
    (home-page "https://github.com/nikita-volkov/base-prelude")
    (synopsis "The most complete prelude formed solely from the Haskell's base
package")
    (description
     "This Haskell package aims to reexport all the non-conflicting
and most general definitions from the \"base\" package.

This includes APIs for applicatives, arrows, monoids, foldables, traversables,
exceptions, generics, ST, MVars and STM.

This package will never have any dependencies other than \"base\".

Versioning policy:

The versioning policy of this package deviates from PVP in the sense
that its exports in part are transitively determined by the version of \"base\".
Therefore it's recommended for the users of @code{ghc-base-prelude} to specify
the bounds of \"base\" as well.")
    (license license:expat)))

(define-public ghc-base-unicode-symbols
  (package
    (name "ghc-base-unicode-symbols")
    (version "0.2.4.2")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "base-unicode-symbols" version))
       (sha256
        (base32
         "0qkhp4ybmx4nbqqkrmw3hkm47bv61i2wpi20qb09wvk10g2dcr23"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "base-unicode-symbols")))
    (home-page "https://wiki.haskell.org/Unicode-symbols")
    (synopsis "Unicode alternatives for common functions and operators")
    (description "This package defines new symbols for a number of functions,
operators and types in the base package.  All symbols are documented with
their actual definition and information regarding their Unicode code point.
They should be completely interchangeable with their definitions.  For
further Unicode goodness you can enable the @code{UnicodeSyntax}
@url{https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exs.html#unicode-syntax,
language extension}.  This extension enables Unicode characters to be used to
stand for certain ASCII character sequences, i.e. → instead of @code{->},
∀ instead of @code{forall} and many others.")
    (license license:bsd-3)))

(define-public ghc-basic-prelude
  (package
    (name "ghc-basic-prelude")
    (version "0.7.0")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "basic-prelude" version))
       (sha256
        (base32
         "0yckmnvm6i4vw0mykj4fzl4ldsf67v8d2h0vp1bakyj84n4myx8h"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "basic-prelude")))
    (inputs
     (list ghc-hashable ghc-unordered-containers ghc-vector))
    (home-page "https://github.com/snoyberg/basic-prelude#readme")
    (synopsis "Enhanced core prelude; a common foundation for alternate preludes")
    (description
     "The premise of basic-prelude is that there are a lot of very commonly
desired features missing from the standard Prelude, such as commonly used
operators (<$> and >=>, for instance) and imports for common datatypes
(e.g., ByteString and Vector).  At the same time, there are lots of other
components which are more debatable, such as providing polymorphic versions
of common functions.

So basic-prelude is intended to give a common foundation for a number of
alternate preludes.  The package provides two modules: CorePrelude provides
the common ground for other preludes to build on top of, while BasicPrelude
exports CorePrelude together with commonly used list functions to provide a
drop-in replacement for the standard Prelude.

Users wishing to have an improved Prelude can use BasicPrelude.  Developers
wishing to create a new prelude should use CorePrelude.")
    (license license:expat)))

(define-public ghc-bencode
  (package
    (name "ghc-bencode")
    (version "0.6.1.1")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "bencode" version))
       (sha256
        (base32 "0znv0y3b3zm5jvhlvj5f5s7y93db67j9yd59w1bnrw2pqv30gqaq"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "bencode")))
    (inputs
     (list ghc-transformers-compat))
    (native-inputs
     (list ghc-hspec ghc-quickcheck))
    (home-page "https://hackage.haskell.org/package/bencode")
    (synopsis "Parsers and printers for bencoded data")
    (description
     "This library provides parsers and printers for bencoded data.  Bencode
is the encoding used by the peer-to-peer file sharing system BitTorrent for
storing and transmitting loosely structured data.")
    (license license:bsd-3)))

(define-public ghc-bifunctors
  (package
    (name "ghc-bifunctors")
    (version "5.5.15")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "bifunctors" version))
       (sha256
        (base32 "1dz3v6qdilm6z9vl25xrma2if6i151v6rmgnvd461parsd89sdfn"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "bifunctors")))
    (inputs (list ghc-base-orphans ghc-comonad ghc-th-abstraction ghc-tagged))
    (native-inputs (list ghc-hspec ghc-quickcheck ghc-transformers-compat hspec-discover))
    (home-page "https://github.com/ekmett/bifunctors/")
    (synopsis "Bifunctors for Haskell")
    (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")
    (version "1.0.25")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "bindings-DSL" version))
       (sha256
        (base32
         "0kqrd78nspl3lk4a0fqn47d8dirjg3b24dkvkigcrlb81hw35pk3"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "bindings-DSL")))
    (home-page "https://github.com/jwiegley/bindings-dsl/wiki")
    (synopsis "FFI domain specific language, on top of hsc2hs")
    (description
     "This is a set of macros to be used when writing Haskell FFI.  They were
designed to be able to fully describe C interfaces, so that @code{hsc2hs} can
extract from them all Haskell code needed to mimic such interfaces.  All
Haskell names used are automatically derived from C names, structures are
mapped to Haskell instances of @code{Storable}, and there are also macros you
can use with C code to help write bindings to inline functions or macro
functions.")
    (license license:bsd-3)))

(define-public ghc-bitarray
  (package
    (name "ghc-bitarray")
    (version "0.0.1.1")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "bitarray" version))
       (sha256
        (base32
         "00nqd62cbh42qqqvcl6iv1i9kbv0f0mkiygv4j70wfh5cl86yzxj"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "bitarray")))
    (arguments
     `(#:cabal-revision
       ("1" "10fk92v9afjqk43zi621jxl0n8kci0xjj32lz3vqa9xbh67zjz45")))
    (home-page "https://hackage.haskell.org/package/bitarray")
    (synopsis "Mutable and immutable bit arrays")
    (description "The package provides mutable and immutable bit arrays.")
    (license license:bsd-3)))

(define-public ghc-blaze-builder
  (package
    (name "ghc-blaze-builder")
    (version "0.4.2.2")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "blaze-builder" version))
       (sha256
        (base32
         "0rxg6vjr0ji6g1nngrqpl4k1q9w66fwkhld9cqm5yfhx0a69kp1c"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "blaze-builder")))
    (inputs
     (list ghc-bytestring-builder ghc-semigroups))
    (native-inputs
     (list ghc-hunit
           ghc-quickcheck
           ghc-test-framework
           ghc-test-framework-hunit
           ghc-test-framework-quickcheck2
           ghc-utf8-string))
    (home-page "https://github.com/lpsmith/blaze-builder")
    (synopsis "Efficient buffered output")
    (description "This library provides an implementation of the older
@code{blaze-builder} interface in terms of the new builder that shipped with
@code{bytestring-0.10.4.0}.  This implementation is mostly intended as a
bridge to the new builder, so that code that uses the old interface can
interoperate with code that uses the new implementation.")
    (license license:bsd-3)))

(define-public ghc-blaze-markup
  (package
    (name "ghc-blaze-markup")
    (version "0.8.2.8")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "blaze-markup" version))
       (sha256
        (base32
         "0jd30wg5yz0a97b36zwqg4hv8faifza1n2gys3l1p3fwf9l3zz23"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "blaze-markup")))
    (inputs
     (list ghc-blaze-builder))
    (native-inputs
     (list ghc-hunit ghc-quickcheck ghc-tasty ghc-tasty-hunit
           ghc-tasty-quickcheck))
    (arguments
     `(#:cabal-revision ("3"
                         "1hn694kk615prqdn7bfzl0wvbw8bksxk4cxwmx8yhwpl0cq3fiwa")))
    (home-page "https://jaspervdj.be/blaze")
    (synopsis "Fast markup combinator library for Haskell")
    (description "This library provides core modules of a markup combinator
library for Haskell.")
    (license license:bsd-3)))

(define-public ghc-bloomfilter
  (package
    (name "ghc-bloomfilter")
    (version "2.0.1.2")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "bloomfilter" version))
       (sha256
        (base32
         "0klb26ldkw32axv3927w489j71r2rc9pangsvznqjbljib9970hp"))
       (snippet
        #~(begin (use-modules (guix build utils))
                 ;; https://github.com/bos/bloomfilter/issues/7
                 (substitute* "Data/BloomFilter/Easy.hs"
                   ((" in if roundedBits <= 0 \\|\\| maxbitstoolarge roundedBits")
                    " in if roundedBits <= 0"))))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "bloomfilter")))
    (native-inputs
     (list ghc-quickcheck ghc-random ghc-test-framework
           ghc-test-framework-quickcheck2))
    (home-page "https://github.com/haskell-pkg-janitors/bloomfilter")
    (synopsis "Pure and impure Bloom filter implementations")
    (description "This package provides both mutable and immutable Bloom
filter data types, along with a family of hash functions and an easy-to-use
interface.")
    (license license:bsd-3)))

(define-public ghc-boxes
  (package
    (name "ghc-boxes")
    (version "0.1.5")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "boxes" version))
       (sha256
        (base32 "1hsnmw95i58d4bkpxby3ddsj1cawypw4mdyb18m393s5i8p7iq9q"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "boxes")))
    (inputs
     (list ghc-split ghc-quickcheck))
    (home-page "https://hackage.haskell.org/package/boxes")
    (synopsis "2D text pretty-printing library")
    (description
     "Boxes is a pretty-printing library for laying out text in two dimensions,
using a simple box model.")
    (license license:bsd-3)))

(define-public ghc-byteable
  (package
    (name "ghc-byteable")
    (version "0.1.1")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "byteable" version))
              (sha256
               (base32
                "1qizg0kxxjqnd3cbrjhhidk5pbbciz0pb3z5kzikjjxnnnhk8fr4"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "byteable")))
    (home-page "https://github.com/vincenthz/hs-byteable")
    (synopsis "Type class for sequence of bytes")
    (description
     "This package provides an abstract class to manipulate sequence of bytes.
The use case of this class is abstracting manipulation of types that are just
wrapping a bytestring with stronger and more meaniful name.")
    (license license:bsd-3)))

(define-public ghc-byteorder
  (package
    (name "ghc-byteorder")
    (version "1.0.4")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "byteorder" version))
       (sha256
        (base32
         "06995paxbxk8lldvarqpb3ygcjbg4v8dk4scib1rjzwlhssvn85x"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "byteorder")))
    (home-page
     "http://community.haskell.org/~aslatter/code/byteorder")
    (synopsis
     "Exposes the native endianness of the system")
    (description
     "This package is for working with the native byte-ordering of the
system.")
    (license license:bsd-3)))

(define-public ghc-bytes
  (package
    (name "ghc-bytes")
    (version "0.17.2")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "bytes" version))
              (sha256
               (base32
                "06kqqk19qjhrwdqi6pyd1lwqfnj2sw3b3s49lc5vr2fmv8gg8mdw"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "bytes")))
    (inputs (list ghc-binary-orphans
                  ghc-cereal
                  ghc-hashable
                  ghc-transformers-compat
                  ghc-unordered-containers
                  ghc-scientific
                  ghc-void))
    (arguments
     `(#:cabal-revision ("1"
                         "0frs6ag93kmg2fw3vd686czx8g7h9qmdn1ip6wdk96d94ap0fz9i")))
    (home-page "https://github.com/ekmett/bytes")
    (synopsis "Serialization between @code{binary} and @code{cereal}")
    (description
     "This package provides a simple compatibility shim that lets
you work with both @code{binary} and @code{cereal} with one chunk of
serialization code.")
    (license license:bsd-3)))

(define-public ghc-bytestring-builder
  (package
    (name "ghc-bytestring-builder")
    (version "0.10.8.2.0")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "bytestring-builder" version))
       (sha256
        (base32
         "0grcrgwwwcvwrs9az7l4d3kf0lsqfa9qpmjzf6iyanvwn9nyzyi7"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "bytestring-builder")))
    (arguments `(#:haddock? #f)) ; Package contains no documentation.
    (home-page "https://hackage.haskell.org/package/bytestring-builder")
    (synopsis "The new bytestring builder, packaged outside of GHC")
    (description "This package provides the bytestring builder that is
debuting in bytestring-0.10.4.0, which should be shipping with GHC 7.8.
Compatibility package for older packages.")
    (license license:bsd-3)))

;; XXX: Incompatible with base
(define-public ghc-bytestring-handle
  (package
    (name "ghc-bytestring-handle")
    (version "0.1.0.6")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "bytestring-handle" version))
       (sha256
        (base32
         "18f17aja1ivhr3zyg2cccn2m03hdn5jf5410dndkhf12gvgiqs7y"))
       (patches (search-patches "ghc-bytestring-handle-ghc9.patch"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "bytestring-handle")))
    (arguments
     `(#:cabal-revision
       ("2" "1x1sy3dz2ph9v6jk22wmcv5gk2bka5fv4s68i8q0j9m9pk085w37")
       #:phases
       (modify-phases %standard-phases
         (add-before 'configure 'update-constraints
           (lambda _
             (substitute* "bytestring-handle.cabal"
               (("base >= 4\\.2 && < 4\\.15") "base")))))))
    (inputs
     (list ghc-hunit ghc-quickcheck ghc-test-framework
           ghc-test-framework-hunit ghc-test-framework-quickcheck2))
    (home-page "https://hub.darcs.net/ganesh/bytestring-handle")
    (synopsis "ByteString-backed Handles")
    (description "ByteString-backed Handles") ; There is no description
    (license license:bsd-3)))

(define-public ghc-bytestring-lexing
  (package
    (name "ghc-bytestring-lexing")
    (version "0.5.0.10")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "bytestring-lexing" version))
       (sha256
        (base32 "0mvqiss323vwvgqx2pv8cww1mkx29hpi094ff54hx545mmvhwb16"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "bytestring-lexing")))
    (native-inputs (list ghc-tasty ghc-tasty-smallcheck ghc-tasty-quickcheck))
    (home-page "https://wrengr.org/software/hackage.html")
    (synopsis "Parse and produce literals from strict or lazy bytestrings")
    (description
     "This package provides tools to parse and produce literals efficiently
from strict or lazy bytestrings.")
    (license license:bsd-3)))

(define-public ghc-bzlib-conduit
  (package
    (name "ghc-bzlib-conduit")
    (version "0.3.0.2")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "bzlib-conduit" version))
       (sha256
        (base32
         "0a21zin5plsl37hkxh2jv8cxwyjrbs2fy7n5cyrzgdaa7lmp6b7b"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "bzlib-conduit")))
    (inputs
     (list ghc-bindings-dsl ghc-conduit ghc-data-default-class
           ghc-resourcet))
    (native-inputs
     (list ghc-hspec ghc-random))
    (home-page "https://github.com/snoyberg/bzlib-conduit")
    (synopsis "Streaming compression/decompression via conduits")
    (description
     "This package provides Haskell bindings to bzlib and Conduit support for
streaming compression and decompression.")
    (license license:bsd-3)))

(define-public ghc-c2hs
  (package
    (name "ghc-c2hs")
    (version "0.28.8")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "c2hs" version))
       (sha256
        (base32
         "0k482wv94jbpwd96a2c2lc7qz9k8072slx7l7943472nzk7k41ir"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "c2hs")))
    (inputs
     (list ghc-language-c ghc-dlist))
    (native-inputs
     (list ghc-test-framework ghc-test-framework-hunit ghc-hunit
           ghc-shelly))
    (arguments
     `(#:cabal-revision
       ("1" "0hbv1j9b04gm617c5xqndr4iqidabwdpcn2dcrnaacc04ylchvl2")
       #:phases
       (modify-phases %standard-phases
         ;; The tarball on Hackage does not ship these tests. See
         ;; https://github.com/haskell/c2hs/issues/269
         (add-after 'unpack 'disable-tests
           (lambda _
             (substitute* "tests/test-bugs.hs"
               ((", testCase \"Issue #242\" issue242") ""))
             (substitute* "tests/test-system.hs"
               ((", testCase \"Interruptible\" test_interruptible") ""))))
         (add-before 'check 'set-cc
           ;; add a cc executable in the path, needed for some tests to pass
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((gcc (assoc-ref inputs "gcc"))
                   (tmpbin (tmpnam))
                   (curpath (getenv "PATH")))
               (mkdir-p tmpbin)
               (symlink (which "gcc") (string-append tmpbin "/cc"))
               (setenv "PATH" (string-append tmpbin ":" curpath)))
             #t))
         (add-after 'check 'remove-cc
           ;; clean the tmp dir made in 'set-cc
           (lambda _
             (let* ((cc-path (which "cc"))
                    (cc-dir (dirname cc-path)))
               (delete-file-recursively cc-dir)
               #t))))))
    (home-page "https://github.com/haskell/c2hs")
    (synopsis "Create Haskell bindings to C libraries")
    (description "C->Haskell assists in the development of Haskell bindings to
C libraries.  It extracts interface information from C header files and
generates Haskell code with foreign imports and marshaling.  Unlike writing
foreign imports by hand (or using hsc2hs), this ensures that C functions are
imported with the correct Haskell types.")
    (license license:gpl2)))

(define-public ghc-cairo
  (package
    (name "ghc-cairo")
    (version "0.13.10.0")
    (source
     (origin
       (method url-fetch)
       (uri (hackage-uri "cairo" version))
       (sha256
        (base32 "16dwjqg8gqk2dzp3qpcvhwdgn16rxxasll8qs2fl2gf84z41h0mf"))))
    (build-system haskell