237 lines
10 KiB
Scheme
237 lines
10 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-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. . © 2006-2007 Stefan O'Rear; BSD3 license. . © Corey O'Connor; BSD3 license. . © 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)))
|