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

250 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-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.38")
(source (origin
(method url-fetch)
(uri (hackage-uri "vty" version))
(sha256
(base32
"18s84rrc1dhm5j8c24r8lgk8hjdrwsdjgf6hilqcdm90dx6jz0al"))))
(build-system haskell-build-system)
(inputs (list ghc-blaze-builder
ghc-microlens
ghc-microlens-mtl
ghc-microlens-th
ghc-utf8-string
ghc-vector
ghc-ansi-terminal))
(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 and to
provide good support for common terminal types. . See the @@vty-examples@@ package as well as
the program @@examples/interactive_terminal_test.hs@@ included in the @@vty@@ repository for
examples on how to use the library. Import the @@Graphics.Vty@@ convenience module to get
access to the core parts of the library.")
(license license:bsd-3)))
(define-public ghc-brick
(package
(name "ghc-brick")
(version "1.4")
(source (origin
(method url-fetch)
(uri (hackage-uri "brick" version))
(sha256
(base32
"12gwwqq38x0k6hjcn72dpcdwi0lrvyy8gxmp884h22l73xa4vda6"))))
(build-system haskell-build-system)
(inputs (list ghc-vty
ghc-bimap
ghc-data-clist
ghc-microlens
ghc-microlens-th
ghc-microlens-mtl
ghc-config-ini
ghc-vector
ghc-contravariant
ghc-text-zipper
ghc-word-wrap
ghc-random))
(native-inputs (list 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. 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>.")
(license license:bsd-3)))
(define-public hledger-ui
(package
(name "hledger-ui")
(version "1.27.1")
(source (origin
(method url-fetch)
(uri (hackage-uri "hledger-ui" version))
(sha256
(base32
"1srzlz0mdcp0259k0vsc8xkisd9l59s30j1k1x9bnsn179n8bi22"))))
(build-system haskell-build-system)
(inputs (list ghc-ansi-terminal
ghc-async
ghc-breakpoint
ghc-brick ;note: fails to compile with brick@{1.5,1.6}
ghc-cmdargs
ghc-data-default
ghc-doclayout
ghc-extra
ghc-fsnotify
ghc-hledger
ghc-hledger-lib
ghc-megaparsec
ghc-microlens
ghc-microlens-platform
ghc-safe
ghc-split
ghc-text-zipper
ghc-vector
ghc-vty))
(home-page "http://hledger.org")
(synopsis
"Curses-style terminal interface for the hledger accounting system")
(description
"This package provides 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. . hledger is a robust, cross-platform set of tools for
tracking money, time, or any other commodity, using double-entry accounting and
a simple, editable file format, with command-line, terminal and web interfaces.
It is a Haskell rewrite of Ledger, and one of the leading implementations of
Plain Text Accounting. Read more at: <https://hledger.org>")
(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)))