;; (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 . ;; File: haskell-apps.scm ;; Author: Collin J. Doering ;; 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: . The .") (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: ") (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 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 , 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: . 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)))