250 lines
10 KiB
Scheme
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)))
|