;; (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-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: . * . * The . * The demonstration programs in the 'programs' directory . . This package deprecates .") (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 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)))