rekahsoft-guix/rekahsoft-gnu/packages/haskell-apps.scm

258 lines
11 KiB
Scheme

;; (C) Copyright Collin J. Doering 2021
;;
;; This program 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.
;;
;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
;; File: haskell-apps.scm
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Dec 22, 2021
(define-module (rekahsoft-gnu packages haskell-apps)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system haskell)
#:use-module (gnu packages haskell-web)
#:use-module (gnu packages haskell-xyz)
#:use-module (gnu packages haskell-check)
#:use-module (gnu packages version-control)
#:use-module (gnu packages finance)
#:use-module (rekahsoft-gnu packages haskell-web))
(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)
(native-inputs (list ghc-quickcheck))
(inputs (list ghc-exceptions))
(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-vty
(package
(name "ghc-vty")
(version "5.33")
(source
(origin
(method url-fetch)
(uri (hackage-uri "vty" version))
(sha256
(base32 "0qsx4lwlkp6mwyr7rm1r9dg5ic1lc1awqgyag0nj1qgj2gnv6nc9"))))
(build-system haskell-build-system)
(inputs
`(("ghc-blaze-builder" ,ghc-blaze-builder)
("ghc-microlens" ,ghc-microlens)
("ghc-microlens-mtl" ,ghc-microlens-mtl)
("ghc-microlens-th" ,ghc-microlens-th)
("ghc-hashable" ,ghc-hashable)
("ghc-parallel" ,ghc-parallel)
("ghc-utf8-string" ,ghc-utf8-string)
("ghc-vector" ,ghc-vector)
("ghc-ansi-terminal" ,ghc-ansi-terminal)))
(native-inputs
`(("ghc-hunit" ,ghc-hunit)
("ghc-quickcheck" ,ghc-quickcheck)
("ghc-quickcheck-assertions" ,ghc-quickcheck-assertions)
("ghc-random" ,ghc-random)
("ghc-smallcheck" ,ghc-smallcheck)
("ghc-string-qq" ,ghc-string-qq)
("ghc-test-framework" ,ghc-test-framework)
("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
("ghc-test-framework-smallcheck" ,ghc-test-framework-smallcheck)
("ghc-test-framework-smallcheck" ,ghc-test-framework-smallcheck)))
(arguments
`(#:cabal-revision
("1" "1in66nd2xkb6mxxzazny900pz1xj83iqsql42c0rwk72chnnb8cd")))
(home-page "https://github.com/jtdaugherty/vty")
(synopsis "A simple terminal UI library")
(description
"vty is terminal GUI library in the niche of ncurses. It is intended to be easy to use, have no confusing corner cases, and good support for common terminal types. . See the @vty-examples@ package as well as the program @test/interactive_terminal_test.hs@ included in the @vty@ package for examples on how to use the library. . Import the \"Graphics.Vty\" convenience module to get access to the core parts of the library. . &#169; 2006-2007 Stefan O'Rear; BSD3 license. . &#169; Corey O'Connor; BSD3 license. . &#169; Jonathan Daugherty; BSD3 license.")
(license license:bsd-3)))
(define-public ghc-brick
(package
(name "ghc-brick")
(version "0.65")
(source
(origin
(method url-fetch)
(uri (hackage-uri "brick" version))
(sha256
(base32 "1yk9r5igg5p7aixlpls167z2fajq3vp0xxqcjw4cg168g20lnhbs"))))
(build-system haskell-build-system)
(inputs
`(("ghc-vty" ,ghc-vty)
("ghc-data-clist" ,ghc-data-clist)
("ghc-dlist" ,ghc-dlist)
("ghc-microlens" ,ghc-microlens)
("ghc-microlens-th" ,ghc-microlens-th)
("ghc-microlens-mtl" ,ghc-microlens-mtl)
("ghc-config-ini" ,ghc-config-ini)
("ghc-vector" ,ghc-vector)
("ghc-contravariant" ,ghc-contravariant)
("ghc-text-zipper" ,ghc-text-zipper)
("ghc-word-wrap" ,ghc-word-wrap)
("ghc-random" ,ghc-random)))
(native-inputs `(("ghc-quickcheck" ,ghc-quickcheck)))
(home-page "https://github.com/jtdaugherty/brick/")
(synopsis "A declarative terminal user interface library")
(description
"Write terminal user interfaces (TUIs) painlessly with 'brick'! You write an event handler and a drawing function and the library does the rest. . . > module Main where > > import Brick > > ui :: Widget () > ui = str \"Hello, world!\" > > main :: IO () > main = simpleMain ui . . To get started, see: . * <https://github.com/jtdaugherty/brick/blob/master/README.md The README> . * The <https://github.com/jtdaugherty/brick/blob/master/docs/guide.rst Brick user guide> . * The demonstration programs in the 'programs' directory . . This package deprecates <http://hackage.haskell.org/package/vty-ui vty-ui>.")
(license license:bsd-3)))
(define-public hledger-ui
(package
(name "hledger-ui")
(version "1.21")
(source
(origin
(method url-fetch)
(uri (hackage-uri name version))
(sha256
(base32 "1h9d686z0y8cvq6780g6r8fdrs76y9649js0c350b6xnhzggbx0l"))))
(build-system haskell-build-system)
(native-inputs `(("ghc-hspec-discover" ,ghc-hspec-discover)))
(inputs
`(("ghc-ansi-terminal" ,ghc-ansi-terminal)
("ghc-async" ,ghc-async)
("ghc-brick" ,ghc-brick)
("ghc-cmdargs" ,ghc-cmdargs)
("ghc-data-default" ,ghc-data-default)
("ghc-doclayout" ,ghc-doclayout)
("ghc-extra" ,ghc-extra)
("ghc-fsnotify" ,ghc-fsnotify)
("hledger" ,hledger)
("ghc-hledger-lib" ,ghc-hledger-lib)
("ghc-megaparsec" ,ghc-megaparsec)
("ghc-microlens" ,ghc-microlens)
("ghc-microlens-platform" ,ghc-microlens-platform)
("ghc-safe" ,ghc-safe)
("ghc-split" ,ghc-split)
("ghc-text-zipper" ,ghc-text-zipper)
("ghc-vector" ,ghc-vector)
("ghc-vty" ,ghc-vty)))
(home-page "https://hledger.org")
(synopsis
"Curses-style terminal interface for the hledger accounting system")
(description
"A simple curses-style terminal user interface for the hledger
accounting system. It can be a more convenient way to browse your accounts
than the CLI. This package currently does not support Microsoft Windows, except
in WSL.")
(license license:gpl3)))
(define-public ghc-js-dgtable
(package
(name "ghc-js-dgtable")
(version "0.5.2")
(source
(origin
(method url-fetch)
(uri (hackage-uri "js-dgtable" version))
(sha256
(base32 "1b10kx703kbkb5q1ggdpqcrxqjb33kh24khk21rb30w0xrdxd3g2"))))
(build-system haskell-build-system)
(home-page "https://github.com/ndmitchell/js-dgtable#readme")
(synopsis "Obtain minified jquery.dgtable code")
(description
"This package bundles the minified <https://github.com/danielgindi/jquery.dgtable
jquery.dgtable> code into a Haskell package, so it can be depended upon by Cabal
packages. The first three components of the version number match the upstream
jquery.dgtable version. The package is designed to meet the redistribution
requirements of downstream users (e.g. Debian).")
(license license:expat)))
(define-public ghc-heaps
(package
(name "ghc-heaps")
(version "0.4")
(source
(origin
(method url-fetch)
(uri (hackage-uri "heaps" version))
(sha256
(base32 "1zbw0qrlnhb42v04phzwmizbpwg21wnpl7p4fbr9xsasp7w9scl9"))))
(build-system haskell-build-system)
(home-page "http://github.com/ekmett/heaps/")
(synopsis "Asymptotically optimal Brodal/Okasaki heaps.")
(description
"Asymptotically optimal Brodal\\/Okasaki bootstrapped skew-binomial heaps from the
paper <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.973 \"Optimal
Purely Functional Priority Queues\">, extended with a 'Foldable' interface.")
(license license:bsd-3)))
;; TODO: this package cannot go upstream until tests can be run correctly
(define-public ghc-shake
(package
(name "ghc-shake")
(version "0.19.6")
(source
(origin
(method url-fetch)
(uri (hackage-uri "shake" version))
(sha256
(base32 "0hnm3h1ni4jq73a7b7yxhbg9wm8mrjda5kmkpnmclynnpwvvi7bx"))))
(build-system haskell-build-system)
(inputs
(list ghc-extra
ghc-filepattern
ghc-hashable
ghc-heaps
ghc-js-dgtable
ghc-js-flot
ghc-js-jquery
ghc-primitive
ghc-random
ghc-unordered-containers
ghc-utf8-string
ghc-semigroups))
(native-inputs (list ghc-quickcheck))
;; fixme: tests currently fail. Current guess: /bin/sh is used to run
;; commands (in 'src/Development/Shake/Command.hs#L164') which is somehow
;; related to the issue?
(arguments
`(#:tests? #f))
(home-page "https://shakebuild.com")
(synopsis
"Build system library, like Make, but more accurate dependencies.")
(description
"Shake is a Haskell library for writing build systems - designed as a replacement
for @make@. See \"Development.Shake\" for an introduction, including an example.
The homepage contains links to a user manual, an academic paper and further
information: <https://shakebuild.com> . To use Shake the user writes a Haskell
program that imports \"Development.Shake\", defines some build rules, and calls
the 'Development.Shake.shakeArgs' function. Thanks to do notation and infix
operators, a simple Shake build system is not too dissimilar from a simple
Makefile. However, as build systems get more complex, Shake is able to take
advantage of the excellent abstraction facilities offered by Haskell and easily
support much larger projects. The Shake library provides all the standard
features available in other build systems, including automatic parallelism and
minimal rebuilds. Shake also provides more accurate dependency tracking,
including seamless support for generated files, and dependencies on system
information (e.g. compiler version).")
(license license:bsd-3)))