summary refs log tree commit diff
path: root/gnu/packages/haskell-xyz.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/haskell-xyz.scm')
-rw-r--r--gnu/packages/haskell-xyz.scm451
1 files changed, 451 insertions, 0 deletions
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index a819698710..12d1246c58 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -32,6 +32,7 @@
 ;;; 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.
 ;;;
@@ -2047,6 +2048,27 @@ Colours can be blended and composed.  Various colour spaces are
 supported.  A module of colour names (\"Data.Colour.Names\") is provided.")
     (license license:expat)))
 
+(define-public ghc-hscolour
+  (package
+    (name "ghc-hscolour")
+    (version "1.24.4")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "hscolour" version))
+              (sha256
+               (base32
+                "079jwph4bwllfp03yfr26s5zc6m6kw3nhb1cggrifh99haq34cr4"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "hscolour")))
+    (home-page "http://code.haskell.org/~malcolm/hscolour/")
+    (synopsis "Colourise Haskell code")
+    (description
+     "hscolour is a small Haskell script to colourise Haskell code.  It currently has
+six output formats: ANSI terminal codes (optionally XTerm-256colour codes), HTML
+3.2 with <font> tags, HTML 4.01 with CSS, HTML 4.01 with CSS and mouseover
+annotations, XHTML 1.0 with inline CSS styling, LaTeX, and mIRC chat codes.")
+    (license license:lgpl2.1)))
+
 (define-public ghc-comonad
   (package
     (name "ghc-comonad")
@@ -2446,6 +2468,29 @@ They stopped crashing the compiler in GHC 7.6.  This package provides
 a vocabulary for working with them.")
     (license license:bsd-2)))
 
+(define-public ghc-constraints-extras
+  (package
+    (name "ghc-constraints-extras")
+    (version "0.4.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "constraints-extras" version))
+              (sha256
+               (base32
+                "1irf4kd7a5h1glczbc73c3590m58azn4s68nfrjfg1h96i7mjfgn"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "constraints-extras")))
+    (inputs (list ghc-constraints ghc-aeson))
+    (arguments
+     `(#:cabal-revision ("1"
+                         "1fdabah3ilq9yf94916ml3c3rxgcgab1jhzl4mk1zgzsw78j53qf")))
+    (home-page "https://github.com/obsidiansystems/constraints-extras")
+    (synopsis "Utility package for constraints")
+    (description
+     "Convenience functions and TH for working with constraints.  See
+@file{README.md} for example usage.")
+    (license license:bsd-3)))
+
 (define-public ghc-contravariant
   (package
     (name "ghc-contravariant")
@@ -6315,6 +6360,77 @@ polymorphism.  @code{Lens.Family.Clone} allows for first-class support of
 lenses and traversals for those who require Haskell 98.")
     (license license:bsd-3)))
 
+(define-public ghc-generic-lens-core
+  (package
+    (name "ghc-generic-lens-core")
+    (version "2.2.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "generic-lens-core" version))
+              (sha256
+               (base32
+                "08i4c9yb6z84iknrnl9f3f343121j7ilp0a679v81nsjm9xz3rlf"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "generic-lens-core")))
+    (inputs (list ghc-indexed-profunctors))
+    (arguments
+     `(#:cabal-revision ("1"
+                         "1dbjhd6k7ypqa9f4h9v2xndgb4mjhfli3n1vjm8r8ga0kfndbqfn")))
+    (home-page "https://github.com/kcsongor/generic-lens")
+    (synopsis "Generically derive traversals, lenses and prisms.")
+    (description
+     "This library uses GHC.Generics to derive efficient optics (traversals,
+lenses and prisms) for algebraic data types in a type-directed way, with a
+focus on good type inference and error messages when possible.  This package
+is the shared internal logic of the @code{generic-lens} and
+@code{generic-optics} libraries.")
+    (license license:bsd-3)))
+
+(define-public ghc-generic-lens
+  (package
+    (name "ghc-generic-lens")
+    (version "2.2.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "generic-lens" version))
+              (sha256
+               (base32
+                "0s4b51s11ssmndmx9m9zbwgv9rb27ajwihsrk10hn582rp4ck3c6"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "generic-lens")))
+    (inputs (list ghc-generic-lens-core ghc-profunctors))
+    (native-inputs (list ghc-lens ghc-inspection-testing ghc-hunit ghc-doctest))
+    (home-page "https://github.com/kcsongor/generic-lens")
+    (synopsis "Generically derive traversals, lenses and prisms.")
+    (description
+     "This library uses @code{GHC.Generics} to derive efficient
+optics (traversals, lenses and prisms) for algebraic data types in a
+type-directed way, with a focus on good type inference and error messages when
+possible.  The library exposes a van Laarhoven interface.  For an alternative
+interface, supporting an opaque optic type, see @code{generic-optics}.")
+    (license license:bsd-3)))
+
+(define-public ghc-these-lens
+  (package
+    (name "ghc-these-lens")
+    (version "1.0.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "these-lens" version))
+              (sha256
+               (base32
+                "1v3kj7j4bkywbmdbblwqs5gsj5s23d59sb3s27jf3bwdzf9d21p6"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "these-lens")))
+    (inputs (list ghc-these ghc-lens))
+    (arguments
+     `(#:cabal-revision ("2"
+                         "1mncy6mcwqxy4fwibrsfc3jcx183wfjfvfvbj030y86pfihvbwg3")))
+    (home-page "https://github.com/haskellari/these")
+    (synopsis "Lenses for These")
+    (description "This package provides Prism and Traversals for @code{These}.")
+    (license license:bsd-3)))
+
 (define-public ghc-libffi
   (package
     (name "ghc-libffi")
@@ -9187,6 +9303,26 @@ API.")
     (description "This library provides profunctors for Haskell.")
     (license license:bsd-3)))
 
+(define-public ghc-indexed-profunctors
+  (package
+    (name "ghc-indexed-profunctors")
+    (version "0.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "indexed-profunctors" version))
+              (sha256
+               (base32
+                "1cbccbvrx73drr1jf3yyw0rp1mcfv3jc1rvdcby5xxx4ja543fjs"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "indexed-profunctors")))
+    (home-page "http://hackage.haskell.org/package/indexed-profunctors")
+    (synopsis "Utilities for indexed profunctors")
+    (description
+     "This package contains basic definitions related to indexed profunctors.  These
+are primarily intended as internal utilities to support the @code{optics} and
+@code{generic-lens} package families.")
+    (license license:bsd-3)))
+
 (define-public ghc-project-template
   (package
     (name "ghc-project-template")
@@ -9574,6 +9710,110 @@ configurations to coexist without resorting to mutable global variables or
 @code{System.IO.Unsafe.unsafePerformIO}.")
     (license license:bsd-3)))
 
+(define-public ghc-reflex
+  (package
+    (name "ghc-reflex")
+    (version "0.8.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "reflex" version))
+              (sha256
+               (base32
+                "1add5bcsyq2k02w2q0ifbyfcvcic1hmjdbgxg8ajd5riam0lhb16"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "reflex")))
+    (inputs (list ghc-memotrie
+                  ghc-bifunctors
+                  ghc-comonad
+                  ghc-commutative-semigroups
+                  ghc-constraints
+                  ghc-constraints-extras
+                  ghc-data-default
+                  ghc-dependent-map
+                  ghc-exception-transformers
+                  ghc-lens
+                  ghc-mmorph
+                  ghc-monad-control
+                  ghc-patch
+                  ghc-prim-uniq
+                  ghc-primitive
+                  ghc-profunctors
+                  ghc-random
+                  ghc-ref-tf
+                  ghc-reflection
+                  ghc-semigroupoids
+                  ghc-syb
+                  ghc-unbounded-delays
+                  ghc-witherable
+                  ghc-these
+                  ghc-semialign
+                  ghc-monoidal-containers
+                  ghc-dependent-sum
+                  ghc-haskell-src-exts
+                  ghc-haskell-src-meta))
+    (native-inputs (list hlint
+                         ghc-split
+                         ghc-filemanip
+                         ghc-these-lens
+                         ghc-hspec
+                         ghc-proctest))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'update-constraints
+           (lambda _
+             (substitute* "reflex.cabal"
+               (("\\bmmorph >= 1\\.0 && < 1\\.2,") "mmorph,")))))))
+    (home-page "https://reflex-frp.org")
+    (synopsis "Higher-order functional reactive programming")
+    (description
+     "This library lets you write interactive programs without callbacks or
+side-effects.  Functional Reactive Programming (FRP) uses composable events
+and time-varying values to describe interactive systems as pure functions.
+Just like other pure functional code, functional reactive code is easier to
+get right on the first try, maintain, and reuse.  Reflex is a
+fully-deterministic, higher-order FRP interface and an engine that efficiently
+implements that interface.")
+    (license license:bsd-3)))
+
+(define-public ghc-reflex-sdl2
+  (let ((commit "6dadf2c4f383b8a58fcd73616996b219c4f93972")
+        (revision "1"))
+    (package
+      (name "ghc-reflex-sdl2")
+      (version (git-version "0.3.0.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/schell/reflex-sdl2")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "06lxfgp18l1car6wd07mbjn4yblnp89acf1i67nd815p2hx0ihbz"))))
+      (build-system haskell-build-system)
+      (properties '((upstream-name . "reflex-sdl2")))
+      (inputs (list ghc-async
+                    ghc-dependent-sum
+                    ghc-exception-transformers
+                    ghc-ref-tf
+                    ghc-primitive
+                    ghc-reflex
+                    ghc-sdl2))
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-before 'configure 'update-constraints
+             (lambda _
+               (substitute* "reflex-sdl2.cabal"
+                 (("\\bref-tf +>= 0\\.4 +&& < 0\\.5\\b") "ref-tf")))))))
+      (home-page "https://github.com/schell/reflex-sdl2")
+      (synopsis "SDL2 and Reflex functional reactive programming")
+      (description
+       "This package provides a minimal host for SDL2-based Reflex
+applications.")
+      (license license:expat))))
+
 (define-public ghc-regex
   (package
     (name "ghc-regex")
@@ -10288,6 +10528,47 @@ programming.")
 @code{SDL2_mixer}.")
     (license license:bsd-3)))
 
+(define-public ghc-sdl2-ttf
+  (package
+    (name "ghc-sdl2-ttf")
+    (version "2.1.3")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "sdl2-ttf" version))
+              (sha256
+               (base32
+                "0sm5lrdif5wmz3iah1658zlr7yr45d1hfihb2hdxdia4h7z1j0mn"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "sdl2-ttf")))
+    (inputs (list ghc-sdl2 ghc-th-abstraction sdl2-ttf))
+    (native-inputs (list pkg-config))
+    (home-page "http://hackage.haskell.org/package/sdl2-ttf")
+    (synopsis "Bindings to SDL2_ttf")
+    (description "This package provides Haskell bindings to SDL2_ttf C++
+library.")
+    (license license:bsd-3)))
+
+(define-public ghc-sdl2-gfx
+  (package
+    (name "ghc-sdl2-gfx")
+    (version "0.3.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "sdl2-gfx" version))
+              (sha256
+               (base32
+                "0r9m54ffkp1dv2ffz9i9318qhvpinc76iih7vg1dwq3siwgpxaxw"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "sdl2-gfx")))
+    (inputs (list ghc-lifted-base ghc-monad-control ghc-sdl2 ghc-vector sdl2-gfx))
+    (native-inputs (list pkg-config))
+    (home-page "http://hackage.haskell.org/package/sdl2-gfx")
+    (synopsis "Haskell bindings to SDL2_gfx")
+    (description
+     "This package provides Haskell bindings to the SDL2_gfx graphics
+library.")
+    (license license:expat)))
+
 (define-public ghc-sdl-image
   (package
     (name "ghc-sdl-image")
@@ -12457,6 +12738,28 @@ transformers 0.2 or 0.3 compatibility to run on old versions of the platform,
 but also need those types.")
     (license license:bsd-3)))
 
+(define-public ghc-exception-transformers
+  (package
+    (name "ghc-exception-transformers")
+    (version "0.4.0.11")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "exception-transformers" version))
+              (sha256
+               (base32
+                "1zmd2s40m86c9mhv32l5bvvf5r52cgpxvb4v5phyc3pjwlr7m8g5"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "exception-transformers")))
+    (inputs (list ghc-fail ghc-transformers-compat))
+    (native-inputs (list ghc-hunit ghc-test-framework ghc-test-framework-hunit))
+    (home-page "http://hackage.haskell.org/package/exception-transformers")
+    (synopsis "Type classes and monads for unchecked extensible exceptions")
+    (description
+     "This package provides type classes, a monad and a monad transformer that support
+unchecked extensible exceptions as well as asynchronous exceptions.  It is
+compatible with the transformers package.")
+    (license license:bsd-3)))
+
 (define-public ghc-tree-diff
   (package
     (name "ghc-tree-diff")
@@ -12947,6 +13250,80 @@ and high speed.")
     (native-inputs '())
     (properties '((hidden? #t)))))
 
+(define-public ghc-commutative-semigroups
+  (package
+    (name "ghc-commutative-semigroups")
+    (version "0.1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "commutative-semigroups" version))
+              (sha256
+               (base32
+                "1bmafx363gfsd9wwrf3xyrw9mnw6anmc1zdfv0p8597y4lxxach7"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "commutative-semigroups")))
+    (home-page "http://hackage.haskell.org/package/commutative-semigroups")
+    (synopsis "Commutative semigroups")
+    (description
+     "This package provides a commutative semigroup is a semigroup where the order of
+arguments to mappend does not matter.")
+    (license license:bsd-3)))
+
+(define-public ghc-dependent-sum
+  (package
+    (name "ghc-dependent-sum")
+    (version "0.7.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "dependent-sum" version))
+              (sha256
+               (base32
+                "1frw5965v8i6xqdgs95gg8asgdqcqnmfahz0pmbwiaw5ybn62rc2"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "dependent-sum")))
+    (inputs (list ghc-constraints-extras ghc-some))
+    (arguments
+     `(#:cabal-revision ("1"
+                         "0qybk8x6gyvg8pgf84mywlfajlcvg9pp4rs1wfn9fa7ns6sms88n")))
+    (home-page "https://github.com/obsidiansystems/dependent-sum")
+    (synopsis "Dependent sum type")
+    (description
+     "This package provides a dependent sum is a generalization of a
+particular way of thinking about the @code{Either} type.  @code{Either a b}
+can be thought of as a 2-tuple @code{(tag, value)}, where the value of the tag
+determines the type of the value.  In particular, either @code{tag = Left} and
+@code{value :: a} or @code{tag = Right} and @code{value :: b}.  This package
+allows you to define your own dependent sum types by using your own \"tag\"
+types.")
+    (license license:public-domain)))
+
+(define-public ghc-dependent-map
+  (package
+    (name "ghc-dependent-map")
+    (version "0.4.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "dependent-map" version))
+              (sha256
+               (base32
+                "0b0zhyl3wkl4kkrxvq7vwjz3gn0ndxjjgyw9cky8a6xyv190pkjk"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "dependent-map")))
+    (inputs (list ghc-dependent-sum ghc-constraints-extras))
+    (arguments
+     `(#:cabal-revision ("1"
+                         "160p9crvlx1sn60inkwxa6mv1h2d4fgqnpsb2km67zrkpdfyd2s2")))
+    (home-page "https://github.com/obsidiansystems/dependent-map")
+    (synopsis "Dependent finite maps (partial dependent products)")
+    (description
+     "This package provides a type called @@DMap@@ which generalizes @@Data.Map.Map@@,
+allowing keys to specify the type of value that can be associated with them.")
+
+    ;; XXX: The 'LICENSE' file lists several licenses, stating "I have no idea
+    ;; which, if any, of the following licenses apply […].  Any modifications
+    ;; by myself I release into the public domain […]"."
+    (license license:public-domain)))
+
 (define-public ghc-unsafe
   (package
     (name "ghc-unsafe")
@@ -16291,6 +16668,80 @@ same-and-increasingly-sized values.")
 to incorporate LeanCheck tests into test-framework test suites.")
     (license license:bsd-3)))
 
+(define-public ghc-prim-uniq
+  (package
+    (name "ghc-prim-uniq")
+    (version "0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "prim-uniq" version))
+              (sha256
+               (base32
+                "1l7jlv3pfasn89n2wpgff972npy423vqsidkkn5crxfyqjyzxbdv"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "prim-uniq")))
+    (inputs (list ghc-dependent-sum ghc-primitive))
+    (home-page "https://github.com/obsidiansystems/prim-uniq")
+    (synopsis "Opaque unique identifiers in primitive state monads")
+    (description
+     "This library provides opaque unique identifiers in primitive state
+monads and a GADT-like type using them as witnesses of type equality.")
+    (license license:public-domain)))
+
+(define-public ghc-patch
+  (package
+    (name "ghc-patch")
+    (version "0.0.8.2")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "patch" version))
+              (sha256
+               (base32
+                "15r2sjlpvp22iwd7qa1lqdq7n8nvqv2klvzrlm3phqq3j5n5x5y5"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "patch")))
+    (inputs (list ghc-constraints-extras
+                  ghc-commutative-semigroups
+                  ghc-dependent-map
+                  ghc-dependent-sum
+                  ghc-lens
+                  ghc-indexed-traversable
+                  ghc-semigroupoids
+                  ghc-witherable
+                  ghc-these
+                  ghc-semialign
+                  ghc-monoidal-containers))
+    (native-inputs (list ghc-hedgehog ghc-hunit ghc-filemanip hlint))
+    (home-page "https://obsidian.systems")
+    (synopsis
+     "Data structures for describing changes to other data structures")
+    (description
+     "This library provides data structures for describing changes to other
+data structures.  In this library, a patch is something that can be applied,
+analogous to a function, and which distinguishes returning the argument it was
+provided from returning something else.")
+    (license license:bsd-3)))
+
+(define-public ghc-ref-tf
+  (package
+    (name "ghc-ref-tf")
+    (version "0.5.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "ref-tf" version))
+              (sha256
+               (base32
+                "0isilgcbw12zyh8s2liaj5r9r5m3yg1xskyhag6f36qi60y29hx5"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "ref-tf")))
+    (home-page "http://hackage.haskell.org/package/ref-tf")
+    (synopsis "Type class for monads with references using type families")
+    (description
+     "This package contains a @code{MonadRef} type class that abstracts over
+the details of manipulating references, allowing one to write code that can
+operate in either the @code{ST} monad or the @code{IO} monad.")
+    (license license:bsd-3)))
+
 ;;;
 ;;; Avoid adding new packages to the end of this file. To reduce the chances
 ;;; of a merge conflict, place them above by existing packages with similar