[PATCH 00/16] Add hledger and its dependencies.

  • Done
  • quality assurance status badge
Details
3 participants
  • Carlo Holl
  • Christopher Baines
  • Ricardo Wurmus
Owner
unassigned
Submitted by
Carlo Holl
Severity
normal
C
C
Carlo Holl wrote on 23 Oct 2020 09:46
(address . guix-patches@gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023074653.8885-1-carloholl@gmail.com
Guix,

This patch series adds hledger, a plaintext accounting program. hledger started as a Haskell reimplementation of
Ledger CLI. I use hledger regularly to manage personal finances and those of several businesses, and would not be
suprised to find other hledger users in the Guix community.

More information is available at https://hledger.org.

A couple of notes:

1. The hledger package is placed in (gnu packages finance), and its dependencies in (gnu packages haskell-xyz).
2. The hledger package is *not* prefixed with 'ghc', but its dependencies are.
3. The package ghc-doctest was bumped (minor version), affecting several dependent packages.
I was able to build most of these affected packages (querying guix refresh --list-dependents),
but it was taking forever so I cut that effort short. I consider this a rough heuristic to determine
that there are no substantial changes associated with this version bump.
4. I'm not terribly familiar with the Texinfo format, so there are likely some rough edges there.
5. I am able to build hledger and its dependencies without error, but was unsuccessful building
on different architectures with qemu. I wasn't even able to build GHC under qemu so I didn't bother
digging any further.

This is my first contribution to Guix, and I'm also not a Haskell expert, so expect some headaches. I am happy to attend
to any issues as best I am able.

Carlo

Carlo Holl (16):
gnu: Add ghc-control-monad-free.
gnu: Add ghc-csv.
gnu: Add ghc-decimal.
gnu: Upgrade ghc-doctest.
gnu: Add ghc-hspec-megaparsec.
gnu: Add ghc-lucid.
gnu: Add ghc-only.
gnu: Add ghc-text-short.
gnu: Add ghc-tabular.
gnu: Add ghc-uglymemo.
gnu: Add ghc-wizards.
gnu: Add ghc-cassava.
gnu: Add ghc-cassava-megaparsec.
gnu: Add ghc-hledger-lib.
gnu: Add hledger.
Add attribution.

gnu/packages/finance.scm | 64 ++++
gnu/packages/haskell-xyz.scm | 579 ++++++++++++++++++++++++++++++++++-
2 files changed, 628 insertions(+), 15 deletions(-)

--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 01/16] gnu: Add ghc-control-monad-free.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-1-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 5b9da15630..ccbe026142 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -2608,6 +2608,37 @@ a vocabulary for working with them.")
@code{ghc-contravariant} package.")
(license license:expat)))
+(define-public ghc-control-monad-free
+ (package
+ (name "ghc-control-monad-free")
+ (version "0.6.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/control-monad-free/control-monad-free-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1habgf7byffqf1rqjkzpihvdhclaafgqsqpfpwp3fgpj5ayk1j33"))))
+ (build-system haskell-build-system)
+ (home-page
+ "https://github.com/pepeiborra/control-monad-free")
+ (synopsis "Free monads and monad transformers")
+ (description "This package provides datatypes to construct Free monads,
+Free monad transformers, and useful instances. In addition it provides the
+constructs to avoid quadratic complexity of left associative bind, as explained in:
+
+@itemize @bullet
+@item
+Janis Voigtlander, @cite{Asymptotic Improvement of Computations over
+Free Monads, MPC'08}
+@end itemize
+
+")
+ (license license:public-domain)))
+
(define-public ghc-convertible
(package
(name "ghc-convertible")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 02/16] gnu: Add ghc-csv.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-2-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index ccbe026142..952e24cd55 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -2665,6 +2665,32 @@ pure @code{Either} value. This means that you need not remember which specific
function performs the conversion you desire.")
(license license:bsd-3)))
+(define-public ghc-csv
+ (package
+ (name "ghc-csv")
+ (version "0.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/csv/csv-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "00767ai09wm7f0yzmpqck3cpgxncpr9djnmmz5l17ajz69139x4c"))))
+ (build-system haskell-build-system)
+ (home-page
+ "http://hackage.haskell.org/package/csv")
+ (synopsis "CSV loader and dumper")
+ (description "CSV loader and dumper
+
+This library parses and dumps documents that are formatted according
+to RFC 4180, @cite{The common Format and MIME Type for Comma-Separated
+Values (CSV) Files}. This format is used, among many other things,
+as a lingua franca for spreadsheets, and for certain web services.")
+ (license license:expat)))
+
(define-public ghc-data-accessor
(package
(name "ghc-data-accessor")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 03/16] gnu: Add ghc-decimal.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-3-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 952e24cd55..803ee995c0 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -2989,6 +2989,37 @@ to add D-Bus support to Haskell applications, without the awkward
interfaces common to foreign bindings.")
(license license:asl2.0)))
+(define-public ghc-decimal
+ (package
+ (name "ghc-decimal")
+ (version "0.5.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/Decimal/Decimal-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0k7kh05mr2f54w1lpgq1nln0h8k6s6h99dyp5jzsb9cfbb3aap2p"))))
+ (build-system haskell-build-system)
+ (native-inputs
+ `(("ghc-hunit" ,ghc-hunit)
+ ("ghc-quickcheck" ,ghc-quickcheck)
+ ("ghc-test-framework" ,ghc-test-framework)
+ ("ghc-test-framework-quickcheck2"
+ ,ghc-test-framework-quickcheck2)
+ ("ghc-test-framework-hunit"
+ ,ghc-test-framework-hunit)))
+ (home-page
+ "https://github.com/PaulJohnson/Haskell-Decimal")
+ (synopsis
+ "Decimal numbers with variable precision")
+ (description "A decimal number has an integer mantissa and a negative exponent.
+The exponent can be interpreted as the number of decimal places in the value.")
+ (license license:bsd-3)))
+
(define-public ghc-deepseq-generics
(package
(name "ghc-deepseq-generics")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 04/16] gnu: Upgrade ghc-doctest.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-4-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 35 ++++++++++++++++++++---------------
1 file changed, 20 insertions(+), 15 deletions(-)

Toggle diff (61 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 803ee995c0..ad9c49ddeb 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -3416,7 +3416,7 @@ Writer monad), where list append quickly becomes too expensive.")
(define-public ghc-doctest
(package
(name "ghc-doctest")
- (version "0.16.2")
+ (version "0.16.3")
(source
(origin
(method url-fetch)
@@ -3426,26 +3426,31 @@ Writer monad), where list append quickly becomes too expensive.")
".tar.gz"))
(sha256
(base32
- "0lk4cjfzi5bx2snfzw1zi06li0gvgz3ckfh2kwa98l7nxfdl39ag"))))
+ "1y1l7aa80qkib1z8lsizgg7fpfdmdwhxvi5m255a42jdkjgn5sfg"))))
(build-system haskell-build-system)
(arguments `(#:tests? #f)) ; FIXME: missing test framework
(inputs
- `(("ghc-syb" ,ghc-syb)
- ("ghc-paths" ,ghc-paths)
- ("ghc-base-compat" ,ghc-base-compat)
- ("ghc-code-page" ,ghc-code-page)
- ("ghc-hunit" ,ghc-hunit)
- ("ghc-hspec" ,ghc-hspec)
- ("ghc-quickcheck" ,ghc-quickcheck)
- ("ghc-stringbuilder" ,ghc-stringbuilder)
- ("ghc-silently" ,ghc-silently)
- ("ghc-setenv" ,ghc-setenv)))
+ `(("ghc-base-compat" ,ghc-base-compat)
+ ("ghc-code-page" ,ghc-code-page)
+ ("ghc-paths" ,ghc-paths)
+ ("ghc-syb" ,ghc-syb)))
+ (native-inputs
+ `(("ghc-hunit" ,ghc-hunit)
+ ("ghc-quickcheck" ,ghc-quickcheck)
+ ("ghc-hspec" ,ghc-hspec)
+ ("ghc-hspec-core" ,ghc-hspec-core)
+ ("ghc-mockery" ,ghc-mockery)
+ ("ghc-setenv" ,ghc-setenv)
+ ("ghc-silently" ,ghc-silently)
+ ("ghc-stringbuilder" ,ghc-stringbuilder)))
(home-page
"https://github.com/sol/doctest#readme")
(synopsis "Test interactive Haskell examples")
- (description "The doctest program checks examples in source code comments.
-It is modeled after doctest for Python, see
-@uref{https://docs.python.org/library/doctest.html, the Doctest website}.")
+ (description
+ "The doctest program checks examples in source code comments. It is modeled
+after doctest for Python (@url{http://docs.python.org/library/doctest.html}).
+
+Documentation is at @url{https://github.com/sol/doctest#readme}.")
(license license:expat)))
(define-public ghc-dotgen
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 05/16] gnu: Add ghc-hspec-megaparsec.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-5-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index ad9c49ddeb..84f28ee5a5 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -5934,6 +5934,34 @@ are described in a file named @code{package.yaml}. Both @code{cabal2nix} and
@code{package.yaml}.")
(license license:expat)))
+(define-public ghc-hspec-megaparsec
+ (package
+ (name "ghc-hspec-megaparsec")
+ (version "2.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/hspec-megaparsec/hspec-megaparsec-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0w8nn2rh01lkiwsiyqh3gviklhfmy0245rakj94dmliyljw8skfg"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-hspec-expectations"
+ ,ghc-hspec-expectations)
+ ("ghc-megaparsec" ,ghc-megaparsec)))
+ (native-inputs `(("ghc-hspec" ,ghc-hspec)))
+ (home-page
+ "https://github.com/mrkkrp/hspec-megaparsec")
+ (synopsis
+ "Utility functions for testing Megaparsec parsers with Hspec")
+ (description
+ "Utility functions for testing Megaparsec parsers with Hspec.")
+ (license license:bsd-3)))
+
(define-public ghc-hs-bibutils
(package
(name "ghc-hs-bibutils")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 06/16] gnu: Add ghc-lucid.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-6-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 48 ++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)

Toggle diff (61 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 84f28ee5a5..f090f62b86 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -7290,6 +7290,54 @@ Transformers\" available @uref{http://okmij.org/ftp/papers/LogicT.pdf,
online}.")
(license license:bsd-3)))
+(define-public ghc-lucid
+ (package
+ (name "ghc-lucid")
+ (version "2.9.12")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/lucid/lucid-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "156wniydd1hlb7rygbm95zln8ky8lai8rn2apkkv0rax9cdw6jrh"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-blaze-builder" ,ghc-blaze-builder)
+ ("ghc-hashable" ,ghc-hashable)
+ ("ghc-mmorph" ,ghc-mmorph)
+ ("ghc-unordered-containers"
+ ,ghc-unordered-containers)))
+ (native-inputs
+ `(("ghc-hunit" ,ghc-hunit)
+ ("ghc-hspec" ,ghc-hspec)
+ ("ghc-bifunctors" ,ghc-bifunctors)))
+ (arguments
+ `(#:cabal-revision
+ ("1"
+ "1f0whk5ncanxfjjanrf6rqyncig2xgc5mh2j0sqy3nrlyjr9aqq9")))
+ (home-page "https://github.com/chrisdone/lucid")
+ (synopsis
+ "Clear to write, read and edit DSL for HTML")
+ (description "Clear to write, read and edit DSL for HTML.
+
+@itemize @bullet
+@item
+Names are consistent, and do not conflict with base or are keywords
+(all have suffix @code{-}).
+@item
+Same combinator can be used for attributes and elements
+(e.g. @code{style_}).
+@item
+For more, read <https://chrisdone.com/posts/lucid the blog post>.
+@end itemize
+
+See the \"Lucid\" module for more documentation.")
+ (license license:bsd-3)))
+
(define-public ghc-lzma
(package
(name "ghc-lzma")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 07/16] gnu: Add ghc-only.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-7-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (46 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index f090f62b86..e831c12160 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8610,6 +8610,39 @@ old @code{time} library. For new projects, the newer
@uref{https://hackage.haskell.org/package/time, time library} is recommended.")
(license license:bsd-3)))
+(define-public ghc-only
+ (package
+ (name "ghc-only")
+ (version "0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/Only/Only-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0rdj3a629fk2vp121jq8mf2smkblrz5w3cxhlsyx6my2x29s2ymb"))))
+ (build-system haskell-build-system)
+ (arguments
+ `(#:cabal-revision
+ ("1"
+ "1ahk7p34kmh041mz7lyc10nhcxgv2i4z8nvzxvqm2x34gslmsbzr")))
+ (home-page
+ "https://hackage.haskell.org/package/Only")
+ (synopsis
+ "The 1-tuple type or single-value \"collection\"")
+ (description "This package provides a canonical anonymous 1-tuple
+type missing from Haskell for attaching typeclass instances.
+
+NOTE: There is also the @url{https://hackage.haskell.org/package/OneTuple,
+OneTuple package} which by using a boxed @code{data}-type provides a 1-tuple
+type which has laziness properties which are more faithful to the ones of
+Haskell's native tuples; whereas the primary purpose of @code{Only} is to provide
+the traditionally so named type-wrapper for attaching typeclass instances.")
+ (license license:bsd-3)))
+
(define-public ghc-opengl
(package
(name "ghc-opengl")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 08/16] gnu: Add ghc-text-short.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-8-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 41 ++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)

Toggle diff (54 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index e831c12160..c4a8d4c208 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8924,6 +8924,47 @@ require aeson
(description "Safe conversions between textual types")
(license license:isc)))
+(define-public ghc-text-short
+ (package
+ (name "ghc-text-short")
+ (version "0.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/text-short/text-short-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0xyrxlb602z8bc9sr2y1fag0x56a20yj5qrkvy7iwc6hnznrynxz"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-hashable" ,ghc-hashable)))
+ (native-inputs
+ `(("ghc-tasty" ,ghc-tasty)
+ ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
+ ("ghc-tasty-hunit" ,ghc-tasty-hunit)
+ ("ghc-quickcheck-instances"
+ ,ghc-quickcheck-instances)))
+ (arguments
+ `(#:cabal-revision
+ ("2"
+ "17cb7p0qywf2dsrq3g8qb3ssknd9wl5k0nc2pxz9gc3l8rxpkw51")))
+ (home-page
+ "https://hackage.haskell.org/package/text-short")
+ (synopsis
+ "Memory-efficient representation of Unicode text strings")
+ (description "This package provides the @code{ShortText} type which
+is suitable for keeping many short strings in memory. This is similiar
+to how @code{ShortByteString} relates to @code{ByteString}.
+
+The main difference between @code{Text} and @code{ShortText} is that
+@code{ShortText} uses UTF-8 instead of UTF-16 internally and also doesn't
+support zero-copy slicing (thereby saving 2 words). Consequently, the memory
+footprint of a (boxed) @{ShortText} value is 4 words (2 words when unboxed)
+plus the length of the UTF-8 encoded payload.")
+ (license license:bsd-3)))
+
(define-public ghc-doclayout
(package
(name "ghc-doclayout")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 09/16] gnu: Add ghc-tabular.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-9-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 40 ++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index c4a8d4c208..0cce72e9f5 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12813,6 +12813,46 @@ Unlike the filepath package, this package does not simply reuse String,
increasing type safety.")
(license license:expat)))
+(define-public ghc-tabular
+ (package
+ (name "ghc-tabular")
+ (version "0.2.2.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/tabular/tabular-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0z936gh8n8i8qdkagyxwd9gqq13skd5fv013vdvwsibrxkm0czfb"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-csv" ,ghc-csv) ("ghc-html" ,ghc-html)))
+ (home-page "https://github.com/bgamari/tabular")
+ (synopsis
+ "Two-dimensional data tables with rendering functions")
+ (description "Tabular provides a Haskell representation of
+two-dimensional data tables, the kind that you might find in a
+spreadsheet or or a research report. It also comes with some
+default rendering functions for turning those tables into ASCII
+art, simple text with an arbitrary delimiter, CSV, HTML or LaTeX.
+
+Below is an example of the kind of output this library produces.
+The tabular package can group rows and columns, each group having
+one of three separators (no line, single line, double line) between
+its members.
+
+ || memtest 1 | memtest 2 || time test | time test 2
+====++===========+===========++=============+============
+A 1 || hog | terrible || slow | slower
+A 2 || pig | not bad || fast | slowest
+----++-----------+-----------++-------------+------------
+B 1 || good | awful || intolerable | bearable
+B 2 || better | no chance || crawling | amazing
+B 3 || meh | well... || worst ever | ok")
+ (license license:bsd-3)))
(define-public ghc-tagged
(package
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 10/16] gnu: Add ghc-uglymemo.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-10-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)

Toggle diff (42 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 0cce72e9f5..269ba898b3 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -13875,6 +13875,35 @@ processes. It wraps around the @code{process} library, and intends to improve
upon it.")
(license license:expat)))
+(define-public ghc-uglymemo
+ (package
+ (name "ghc-uglymemo")
+ (version "0.1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/uglymemo/uglymemo-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0ixqg5d0ly1r18jbgaa89i6kjzgi6c5hanw1b1y8c5fbq14yz2gy"))))
+ (build-system haskell-build-system)
+ (home-page
+ "https://hackage.haskell.org/package/uglymemo")
+ (synopsis
+ "Simple (but internally ugly) memoization function")
+ (description "Simple (but internally ugly) memoization function.
+
+@itemize @bullet
+@item
+New in 0.1.0.1: Make it exception safe.
+@end itemize
+
+")
+ (license license:public-domain)))
+
(define-public ghc-unagi-chan
(package
(name "ghc-unagi-chan")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 11/16] gnu: Add ghc-wizards.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-11-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 50 ++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)

Toggle diff (63 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 269ba898b3..bfbe601ed7 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -14780,6 +14780,56 @@ widths to the Char type.")
Haskell value or function.")
(license license:bsd-3)))
+(define-public ghc-wizards
+ (package
+ (name "ghc-wizards")
+ (version "1.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/wizards/wizards-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1clvbd1ckhvy29qrbmpkn7bya7300fq6znnps23nn3nxyrxhsr85"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-control-monad-free"
+ ,ghc-control-monad-free)))
+ (arguments
+ `(#:cabal-revision
+ ("1"
+ "095qd17zrdhqmcvmslbyzfa5sh9glvvsnsvnlz31gzsmi8nnsgim")))
+ (home-page
+ "http://hackage.haskell.org/package/wizards")
+ (synopsis
+ "High level, generic library for interrogative user interfaces")
+ (description "@code{wizards} is a package designed for the quick
+and painless development of @emph{interrogative} programs, which revolve around
+a \"dialogue\" with the user, who is asked a series of questions in a
+sequence much like an installation wizard.
+
+Everything from interactive system scripts, to installation wizards, to full-blown
+shells can be implemented with the support of @code{wizards}.
+
+It is developed transparently on top of a free monad, which separates out the
+semantics of the program from any particular interface. A variety of backends
+exist, including console-based @code{System.Console.Wizard.Haskeline} and
+@code{System.Console.Wizard.BasicIO}, and the pure @code{System.Console.Wizard.Pure}.
+It is also possible to write your own backends, or extend existing back-ends with
+new features. While both built-in IO backends operate on a console, there is no
+reason why @code{wizards} cannot also be used for making GUI wizard interfaces.
+
+See the github page for examples on usage:
+
+@url{http://www.github.com/liamoc/wizards}
+
+For creating backends, the module @code{System.Console.Wizard.Internal} has a brief
+tutorial.")
+ (license license:bsd-3)))
+
(define-public ghc-wl-pprint
(package
(name "ghc-wl-pprint")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 12/16] gnu: Add ghc-cassava.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-12-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 89 ++++++++++++++++++++++++++++++++++++
1 file changed, 89 insertions(+)

Toggle diff (102 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index bfbe601ed7..8060c2f034 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -1551,6 +1551,95 @@ constructor which can be parameterised by a string-like type like:
the resulting type will be insensitive to cases.")
(license license:bsd-3)))
+(define-public ghc-cassava
+ (package
+ (name "ghc-cassava")
+ (version "0.5.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/cassava/cassava-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "01h1zrdqb313cjd4rqm1107azzx4czqi018c2djf66a5i7ajl3dk"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-attoparsec" ,ghc-attoparsec)
+ ("ghc-hashable" ,ghc-hashable)
+ ("ghc-scientific" ,ghc-scientific)
+ ("ghc-unordered-containers"
+ ,ghc-unordered-containers)
+ ("ghc-vector" ,ghc-vector)
+ ("ghc-only" ,ghc-only)
+ ("ghc-text-short" ,ghc-text-short)
+ ("ghc-bytestring-builder"
+ ,ghc-bytestring-builder)))
+ (native-inputs
+ `(("ghc-hunit" ,ghc-hunit)
+ ("ghc-quickcheck" ,ghc-quickcheck)
+ ("ghc-quickcheck-instances"
+ ,ghc-quickcheck-instances)
+ ("ghc-test-framework" ,ghc-test-framework)
+ ("ghc-test-framework-hunit"
+ ,ghc-test-framework-hunit)
+ ("ghc-test-framework-quickcheck2"
+ ,ghc-test-framework-quickcheck2)))
+ (arguments
+ `(#:cabal-revision
+ ("1"
+ "1ph8rf91z4nf1ryrh9s4gd1kq98jlgk2manwddkpch8k0n9xvfk4")
+ #:configure-flags '("--flags=-bytestring--lt-0_10_4")))
+ (home-page "https://github.com/haskell-hvr/cassava")
+ (synopsis "CSV parsing and encoding library")
+ (description "@code{cassava} is a library for parsing and encoding
+@url{https://tools.ietf.org/html/rfc4180, RFC 4180} compliant @url{https://
+en.wikipedia.org/wiki/Comma-separated_values, comma-separated values (CSV)}
+data, which is a textual line-oriented format commonly used for exchanging
+tabular data.
+
+@code{cassava}'s API includes support for
+
+@itemize @bullet
+
+@item
+Index-based record-conversion
+@item
+Name-based record-conversion
+@item
+Typeclass directed conversion of fields and records
+@item
+Built-in field-conversion instances for standard types
+@item
+Customizable record-conversion instance derivation via GHC generics
+@item
+Low-level @url{https://hackage.haskell.org/package/bytestring), bytestring}
+builders (see @url{https://hackage.haskell.org/package/cassava-0.5.2.0/docs/
+Data-Csv-Builder.html, Data.Csv.Builder})
+@item
+Incremental decoding and encoding API (see @url{https://hackage.haskell.org/
+package/cassava-0.5.2.0/docs/Data-Csv-Incremental.html, Data.Csv.Incremental})
+@item
+Streaming API for constant-space decoding (see @url{https://hackage.haskell.org/
+package/cassava-0.5.2.0/docs/Data-Csv-Streaming.html, Data.Csv.Streaming})
+@end itemize
+
+Moreover, this library is designed to be easy to use; for instance, here's a
+very simple example of encoding CSV data:
+
+@verbatim
+>>> Data.Csv.encode [(\"John\",27),(\"Jane\",28)]
+\"John,27\r\nJane,28\r\n\"
+@end verbatim
+
+Please refer to the documentation in @url{https://hackage.haskell.org/package/
+cassava-0.5.2.0/docs/Data-Csv.html, Data.Csv} and the included @url{https://
+hackage.haskell.org/package/cassava-0.5.2.0/#readme, README} for more usage
+examples.")
+ (license license:bsd-3)))
+
(define-public ghc-cborg
(package
(name "ghc-cborg")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 13/16] gnu: Add ghc-cassava-megaparsec.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-13-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (46 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 8060c2f034..46ed95d607 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -1640,6 +1640,39 @@ hackage.haskell.org/package/cassava-0.5.2.0/#readme, README} for more usage
examples.")
(license license:bsd-3)))
+(define-public ghc-cassava-megaparsec
+ (package
+ (name "ghc-cassava-megaparsec")
+ (version "2.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/cassava-megaparsec/"
+ "cassava-megaparsec-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "03x1462agrfdagklp8c89b8p4z2hd8nbf6d3895sz770zjkawda7"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-cassava" ,ghc-cassava)
+ ("ghc-megaparsec" ,ghc-megaparsec)
+ ("ghc-unordered-containers"
+ ,ghc-unordered-containers)
+ ("ghc-vector" ,ghc-vector)))
+ (native-inputs
+ `(("ghc-hspec" ,ghc-hspec)
+ ("ghc-hspec-megaparsec" ,ghc-hspec-megaparsec)))
+ (home-page
+ "https://github.com/stackbuilders/cassava-megaparsec")
+ (synopsis
+ "Megaparsec parser of CSV files that plays nicely with Cassava")
+ (description
+ "Megaparsec parser of CSV files that plays nicely with Cassava.")
+ (license license:expat)))
+
(define-public ghc-cborg
(package
(name "ghc-cborg")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 14/16] gnu: Add ghc-hledger-lib.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-14-carloholl@gmail.com
---
gnu/packages/haskell-xyz.scm | 64 ++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)

Toggle diff (77 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 46ed95d607..eaba188e97 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -5853,6 +5853,70 @@ feature, allowing applications to subscribe to notifications when a file is
accessed or modified.")
(license license:bsd-3)))
+(define-public ghc-hledger-lib
+ (package
+ (name "ghc-hledger-lib")
+ (version "1.19.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/hledger-lib/hledger-lib-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0py11011r358nmnvwwkc8mlx6mpy36jm8sqlr4i8ihx3x0zjdgya"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-decimal" ,ghc-decimal)
+ ("ghc-glob" ,ghc-glob)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-aeson-pretty" ,ghc-aeson-pretty)
+ ("ghc-ansi-terminal" ,ghc-ansi-terminal)
+ ("ghc-base-compat-batteries"
+ ,ghc-base-compat-batteries)
+ ("ghc-blaze-markup" ,ghc-blaze-markup)
+ ("ghc-call-stack" ,ghc-call-stack)
+ ("ghc-cassava" ,ghc-cassava)
+ ("ghc-cassava-megaparsec"
+ ,ghc-cassava-megaparsec)
+ ("ghc-cmdargs" ,ghc-cmdargs)
+ ("ghc-data-default" ,ghc-data-default)
+ ("ghc-extra" ,ghc-extra)
+ ("ghc-fgl" ,ghc-fgl)
+ ("ghc-file-embed" ,ghc-file-embed)
+ ("ghc-hashtables" ,ghc-hashtables)
+ ("ghc-megaparsec" ,ghc-megaparsec)
+ ("ghc-old-time" ,ghc-old-time)
+ ("ghc-parser-combinators"
+ ,ghc-parser-combinators)
+ ("ghc-pretty-show" ,ghc-pretty-show)
+ ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+ ("ghc-safe" ,ghc-safe)
+ ("ghc-split" ,ghc-split)
+ ("ghc-tabular" ,ghc-tabular)
+ ("ghc-tasty" ,ghc-tasty)
+ ("ghc-tasty-hunit" ,ghc-tasty-hunit)
+ ("ghc-timeit" ,ghc-timeit)
+ ("ghc-uglymemo" ,ghc-uglymemo)
+ ("ghc-unordered-containers"
+ ,ghc-unordered-containers)
+ ("ghc-utf8-string" ,ghc-utf8-string)))
+ (native-inputs `(("ghc-doctest" ,ghc-doctest)))
+ (home-page "https://hledger.org")
+ (synopsis "Reusable library providing the core functionality of hledger")
+ (description "A reusable library containing hledger's core functionality.
+This is used by most hledger* packages so that they support the same common
+file formats, command line options, reports etc.
+
+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: @url{https://hledger.org}")
+ (license license:gpl3)))
+
(define-public ghc-hmatrix
(package
(name "ghc-hmatrix")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 15/16] gnu: Add hledger.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-15-carloholl@gmail.com
---
gnu/packages/finance.scm | 63 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 63 insertions(+)

Toggle diff (90 lines)
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 4397cf8ba8..15a86b8688 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -45,6 +45,7 @@
#:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system emacs)
+ #:use-module (guix build-system haskell)
#:use-module (guix build-system python)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system go)
@@ -72,6 +73,9 @@
#:use-module (gnu packages graphviz)
#:use-module (gnu packages groff)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages haskell-check)
+ #:use-module (gnu packages haskell-web)
+ #:use-module (gnu packages haskell-xyz)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages libedit)
#:use-module (gnu packages libevent)
@@ -170,6 +174,65 @@ of the bitcoin protocol. This package provides the Bitcoin Core command
line client and a client based on Qt.")
(license license:expat)))
+(define-public hledger
+ (package
+ (name "hledger")
+ (version "1.19.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/hledger/hledger-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0wfsyf2q1kf90mj3lxs0m5ghj153axmpkc8xfy12vkz5imnyphfm"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-decimal" ,ghc-decimal)
+ ("ghc-diff" ,ghc-diff)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-ansi-terminal" ,ghc-ansi-terminal)
+ ("ghc-base-compat-batteries"
+ ,ghc-base-compat-batteries)
+ ("ghc-cmdargs" ,ghc-cmdargs)
+ ("ghc-data-default" ,ghc-data-default)
+ ("ghc-extra" ,ghc-extra)
+ ("ghc-hashable" ,ghc-hashable)
+ ("ghc-hledger-lib" ,ghc-hledger-lib)
+ ("ghc-lucid" ,ghc-lucid)
+ ("ghc-math-functions" ,ghc-math-functions)
+ ("ghc-megaparsec" ,ghc-megaparsec)
+ ("ghc-old-time" ,ghc-old-time)
+ ("ghc-pretty-show" ,ghc-pretty-show)
+ ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+ ("ghc-safe" ,ghc-safe)
+ ("ghc-shakespeare" ,ghc-shakespeare)
+ ("ghc-split" ,ghc-split)
+ ("ghc-tabular" ,ghc-tabular)
+ ("ghc-tasty" ,ghc-tasty)
+ ("ghc-temporary" ,ghc-temporary)
+ ("ghc-timeit" ,ghc-timeit)
+ ("ghc-unordered-containers"
+ ,ghc-unordered-containers)
+ ("ghc-utf8-string" ,ghc-utf8-string)
+ ("ghc-utility-ht" ,ghc-utility-ht)
+ ("ghc-wizards" ,ghc-wizards)))
+ (home-page "https://hledger.org")
+ (synopsis
+ "Command-line interface for the hledger accounting system")
+ (description "The command-line interface for the hledger accounting
+system. Its basic function is to read a plain text file describing financial
+transactions and produce useful reports.
+
+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: @url{https://hledger.org}")
+ (license license:gpl3)))
+
(define-public homebank
(package
(name "homebank")
--
2.28.0
C
C
Carlo Holl wrote on 23 Oct 2020 19:05
[PATCH 16/16] Add attribution.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201023170544.9860-16-carloholl@gmail.com
---
gnu/packages/finance.scm | 1 +
gnu/packages/haskell-xyz.scm | 1 +
2 files changed, 2 insertions(+)

Toggle diff (26 lines)
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 15a86b8688..fe033e9494 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -20,6 +20,7 @@
;;; Copyright © 2020 Tom Zander <tomz@freedommail.ch>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index eaba188e97..53770ec01d 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -26,6 +26,7 @@
;;; Copyright © 2020 JoJo <jo@jo.zone>
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
+;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
--
2.28.0
C
C
Christopher Baines wrote on 24 Oct 2020 23:26
Re: [bug#44174] [PATCH 00/16] Add hledger and its dependencies.
(name . Carlo Holl)(address . carloholl@gmail.com)(address . 44174@debbugs.gnu.org)
87eelnb9ik.fsf@cbaines.net
Carlo Holl <carloholl@gmail.com> writes:

Toggle quote (10 lines)
> Guix,
>
> This patch series adds hledger, a plaintext accounting
> program. hledger started as a Haskell reimplementation of Ledger
> CLI. I use hledger regularly to manage personal finances and those of
> several businesses, and would not be suprised to find other hledger
> users in the Guix community.
>
> More information is available at https://hledger.org.

Hi Carlo, thanks for the patches!

Toggle quote (5 lines)
> A couple of notes:
>
> 1. The hledger package is placed in (gnu packages finance), and
> its dependencies in (gnu packages haskell-xyz).

That sounds good :)

Toggle quote (3 lines)
> 2. The hledger package is *not* prefixed with 'ghc', but its
> dependencies are.

Also fine.

Toggle quote (6 lines)
> 3. The package ghc-doctest was bumped (minor version), affecting several dependent packages.
> I was able to build most of these affected packages (querying guix refresh --list-dependents),
> but it was taking forever so I cut that effort short. I consider this a rough heuristic to determine
> that there are no substantial changes associated with this
> version bump.

Sounds good.

Toggle quote (3 lines)
> 4. I'm not terribly familiar with the Texinfo format, so there are
> likely some rough edges there.

Looks like you've done pretty well from what I've seen :)

Toggle quote (4 lines)
> 5. I am able to build hledger and its dependencies without error, but was unsuccessful building
> on different architectures with qemu. I wasn't even able to build GHC under qemu so I didn't bother
> digging any further.

No problem, if it builds on x86_64-linux, that's good enough at least
initially.

Toggle quote (4 lines)
> This is my first contribution to Guix, and I'm also not a Haskell
> expert, so expect some headaches. I am happy to attend to any issues
> as best I am able.

Great, I'll make some more comments on the individual patches, a few
general comments though:

- The commits should include changelog entries. For new packages, these
are pretty easy to write, it's just:

* gnu/packages/FILE.scm (PACKAGE): New variable.

- The indentation looks off in places, there's some stuff here about
indentation [1]. What editor are you using?



Let me know if you have any questions, and it would be great if you
could send an updated set of patches.

Thanks,

Chris
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl+UnBNfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9Xf5qRAApDLDtQVMWE74SkkADi+k4cxNI6kwCMbr
crCGCs74Aw28u1z+f4aFtt8Sxv71FjIH4cauigAc7zDoxGMWYj0iCAfskb+FCU/f
C+c2DwLpK+tk7g3O4EysQ0UjAIoACnLYemfN0An/djEBY/cFs6agRLlkuDtptJaq
X/uSf+tDtwaRZZC2U6cJ01WzPOdzjvpc8DJgiV5f5I/QbYeVitNb3H2oHRZmYEno
wa65uajmwo8y3Y2mIIar3PAZu8Ygrs0k95xNkuxaD9KDNbC/3T8tfjwOMS2w19qz
Oy43fI9GcaXQIW22zRuQLRwn5+oUHLeanCPL4JWHEsOoDVClWsZjixkrmpAq/rXt
ZdW8Q60sxmTYE9IH5HDAi3A1r/WI9vr8wmMT6xAp1Vg3/WW0a5pOb93GWCv/ZSIw
Fwb/4COyFXDhkUV1kqgjlUpxZy1KV9kuRpuTqETX0jYPG7G2bGAmv3jQm3C6C+O1
4/PuKbga9SzQBCbmjyuAjhbVwvVMHvK3QB0G8zkyX2U5uS5385c+33/HcblrTbYt
rKvOwd1vBLu6hzh82/TAxoZ90rcDn5dUFnUPLCELZTKpW9TaPIEujyvv4esE5uIL
UPqQubbNrdF7d42laU3CuvPQgw1GVYb9c4C+JMST4rcBuNwJr7poirnCl4gkH8iv
S9OT6oHGKPY=
=3wWf
-----END PGP SIGNATURE-----

C
C
Christopher Baines wrote on 24 Oct 2020 23:27
Re: [bug#44174] [PATCH 02/16] gnu: Add ghc-csv.
(name . Carlo Holl)(address . carloholl@gmail.com)(address . 44174@debbugs.gnu.org)
87blgrb9gu.fsf@cbaines.net
Carlo Holl <carloholl@gmail.com> writes:

Toggle quote (32 lines)
> ---
> gnu/packages/haskell-xyz.scm | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
> index ccbe026142..952e24cd55 100644
> --- a/gnu/packages/haskell-xyz.scm
> +++ b/gnu/packages/haskell-xyz.scm
> @@ -2665,6 +2665,32 @@ pure @code{Either} value. This means that you need not remember which specific
> function performs the conversion you desire.")
> (license license:bsd-3)))
>
> +(define-public ghc-csv
> + (package
> + (name "ghc-csv")
> + (version "0.1.2")
> + (source
> + (origin
> + (method url-fetch)
> + (uri (string-append
> + "https://hackage.haskell.org/package/csv/csv-"
> + version
> + ".tar.gz"))
> + (sha256
> + (base32
> + "00767ai09wm7f0yzmpqck3cpgxncpr9djnmmz5l17ajz69139x4c"))))
> + (build-system haskell-build-system)
> + (home-page
> + "http://hackage.haskell.org/package/csv")
> + (synopsis "CSV loader and dumper")
> + (description "CSV loader and dumper

This above bit of the description repeats the synopsis, so it should be
removed.

Toggle quote (9 lines)
> +This library parses and dumps documents that are formatted according
> +to RFC 4180, @cite{The common Format and MIME Type for Comma-Separated
> +Values (CSV) Files}. This format is used, among many other things,
> +as a lingua franca for spreadsheets, and for certain web services.")
> + (license license:expat)))
> +
> (define-public ghc-data-accessor
> (package
> (name "ghc-data-accessor")
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl+UnFFfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9Xd6xw/8ChiEsABJmanO2alcFpOG/dw+LimJVR8o
DprQ4ClzMwq977oPJLEvVuZFgGRONjUocpQ+vs5lwYi88d+RDP0BSRUJPUE0mPqa
J4sUYJaooy5fkANRbD6rumUONJ1SgJClQ7VKh1m//kv2RvEw731Po1HsdkJw6a+3
nvRtCi7pMzggN0G/ugwxBbjaO8ufHhn1YQcpu3VIEpRFX11cuJBbr5rYZn+Dsq+l
YSPWQa+WPMJ/eJ49kXxxAERymBuMn9JK+/LuM/P8LY9M6q5tT0kZHFOz9YX+TOmv
7eWPfF++uKL4TLSJRbJOqf1w8PzkQN21asu+qArMUQaP7cBPKrafXugwFNn4Lv3D
DOtWnFqRycWGvq7iu4N5MJWrZWHYPLCSveUJpiwi/hsc2omAFYvQ3bnXdPpc7MqD
p9UqzCuw8XErOR84oyo3rQ0RAGZ5w+23OnjNMaW1Bpf4vRAsDdEmEovQ8MFSintC
uhnBbeg6kRtRkTMyt7f/1MAOcsWs/DTtAYWls3e3OIlt4Ru/+Q++8eYpj3hQUIgw
DUy2Rjq6l6RbDzPo/GWFJT7JtdOGTIUcu03uD0qPgQZeMtiRHZ0PaNp40YWv40GJ
11ciLsnaYn8QurfgLN9OSaSPpaxA5HUYFrHzITAqZruQ02s6p1qQu3VczJsMI0mr
HMXtGc9BbY0=
=Wm4d
-----END PGP SIGNATURE-----

C
C
Christopher Baines wrote on 24 Oct 2020 23:29
Re: [bug#44174] [PATCH 04/16] gnu: Upgrade ghc-doctest.
(name . Carlo Holl)(address . carloholl@gmail.com)(address . 44174@debbugs.gnu.org)
878sbvb9dz.fsf@cbaines.net
Carlo Holl <carloholl@gmail.com> writes:

Toggle quote (5 lines)
> ---
> gnu/packages/haskell-xyz.scm | 35 ++++++++++++++++++++---------------
> 1 file changed, 20 insertions(+), 15 deletions(-)


For the commit message for this package, I'd write:

gnu: ghc-doctest: Update to 0.16.3.

* gnu/packages/haskell-xyz.scm (ghc-doctest): Update to 0.16.3.
[inputs,native-inputs]: Replace with what is generated by guix import.


Toggle quote (46 lines)
> diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
> index 803ee995c0..ad9c49ddeb 100644
> --- a/gnu/packages/haskell-xyz.scm
> +++ b/gnu/packages/haskell-xyz.scm
> @@ -3416,7 +3416,7 @@ Writer monad), where list append quickly becomes too expensive.")
> (define-public ghc-doctest
> (package
> (name "ghc-doctest")
> - (version "0.16.2")
> + (version "0.16.3")
> (source
> (origin
> (method url-fetch)
> @@ -3426,26 +3426,31 @@ Writer monad), where list append quickly becomes too expensive.")
> ".tar.gz"))
> (sha256
> (base32
> - "0lk4cjfzi5bx2snfzw1zi06li0gvgz3ckfh2kwa98l7nxfdl39ag"))))
> + "1y1l7aa80qkib1z8lsizgg7fpfdmdwhxvi5m255a42jdkjgn5sfg"))))
> (build-system haskell-build-system)
> (arguments `(#:tests? #f)) ; FIXME: missing test framework
> (inputs
> - `(("ghc-syb" ,ghc-syb)
> - ("ghc-paths" ,ghc-paths)
> - ("ghc-base-compat" ,ghc-base-compat)
> - ("ghc-code-page" ,ghc-code-page)
> - ("ghc-hunit" ,ghc-hunit)
> - ("ghc-hspec" ,ghc-hspec)
> - ("ghc-quickcheck" ,ghc-quickcheck)
> - ("ghc-stringbuilder" ,ghc-stringbuilder)
> - ("ghc-silently" ,ghc-silently)
> - ("ghc-setenv" ,ghc-setenv)))
> + `(("ghc-base-compat" ,ghc-base-compat)
> + ("ghc-code-page" ,ghc-code-page)
> + ("ghc-paths" ,ghc-paths)
> + ("ghc-syb" ,ghc-syb)))
> + (native-inputs
> + `(("ghc-hunit" ,ghc-hunit)
> + ("ghc-quickcheck" ,ghc-quickcheck)
> + ("ghc-hspec" ,ghc-hspec)
> + ("ghc-hspec-core" ,ghc-hspec-core)
> + ("ghc-mockery" ,ghc-mockery)
> + ("ghc-setenv" ,ghc-setenv)
> + ("ghc-silently" ,ghc-silently)
> + ("ghc-stringbuilder" ,ghc-stringbuilder)))

Here you can see the slightly off indentation, the previous level of
indentation is what I'd use.

Toggle quote (13 lines)
> (home-page
> "https://github.com/sol/doctest#readme")
> (synopsis "Test interactive Haskell examples")
> - (description "The doctest program checks examples in source code comments.
> -It is modeled after doctest for Python, see
> -@uref{https://docs.python.org/library/doctest.html, the Doctest website}.")
> + (description
> + "The doctest program checks examples in source code comments. It is modeled
> +after doctest for Python (@url{http://docs.python.org/library/doctest.html}).
> +
> +Documentation is at @url{https://github.com/sol/doctest#readme}.")
> (license license:expat)))

I'd keep the previous description, as I think it's better.
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl+UnLhfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9XcseQ//Tcl533Ea/vuXxHVIOlSBhOMAQ2+A266U
Ool0Uj9LpPvhjLVqvr0Klqnf2/RonwxGySHVbvr43e/EKkHikuWd2J5rrbQMpvgY
yNoknIqRZDFVwQtS3zaPfFDLY/CYeJb1xTVdwsd6XYe6x/sUM+p9Eook5GTe9YEt
4Tcg+PMHZZYJdM/Uqb28S8gL0hkFMa9N1doIoSK9ZgjDL1mp0zMDrEE3p9rwHJI2
7EOJD9ChDe61YN9sfWSvsrL9e4T9AV1drAvUa4UY6K2FfVnrUBipckpJIsEaCena
Y8ZCW6Sm30Qgp3TPYmLc6ksfqA/LUsdKF4l+FNjTmXs9xSnHJZY/SmU1zjykJGNa
gpVzCix5SpQ2yzunJm45GODjAh9xlDvq3aZhUnlEauUbCXUlQEL47EiiyD/Z1RAT
9m6N9j/IPmkqeB+du7ZrSDSBNE7BZxqVF1kpq9x8XLp/xmz7zKe/0fC94Ixn2ls1
hthXATpMKk1oBYVjemqrgLesgr7tYn+3XUCBy3NqtNcb3zfKeYLL+10R0o9mpKFK
hLe/Wl74mBR3WmHcNYiqGwUznqlOjulDCqJCzxtpVEOWWKqdAXfvZT32mCNzdKjE
JXeiuLcRI/8aziWdrU4X9iO+I+4IshNU5ID7FJfXi3iv5zwWUJY6tZ39w1aO2mHx
JaezaB8JRjo=
=UlDf
-----END PGP SIGNATURE-----

C
C
Christopher Baines wrote on 24 Oct 2020 23:30
Re: [bug#44174] [PATCH 05/16] gnu: Add ghc-hspec-megaparsec.
(name . Carlo Holl)(address . carloholl@gmail.com)(address . 44174@debbugs.gnu.org)
875z6zb9cl.fsf@cbaines.net
Carlo Holl <carloholl@gmail.com> writes:

Toggle quote (39 lines)
> ---
> gnu/packages/haskell-xyz.scm | 28 ++++++++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
> diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
> index ad9c49ddeb..84f28ee5a5 100644
> --- a/gnu/packages/haskell-xyz.scm
> +++ b/gnu/packages/haskell-xyz.scm
> @@ -5934,6 +5934,34 @@ are described in a file named @code{package.yaml}. Both @code{cabal2nix} and
> @code{package.yaml}.")
> (license license:expat)))
>
> +(define-public ghc-hspec-megaparsec
> + (package
> + (name "ghc-hspec-megaparsec")
> + (version "2.0.1")
> + (source
> + (origin
> + (method url-fetch)
> + (uri (string-append
> + "https://hackage.haskell.org/package/hspec-megaparsec/hspec-megaparsec-"
> + version
> + ".tar.gz"))
> + (sha256
> + (base32
> + "0w8nn2rh01lkiwsiyqh3gviklhfmy0245rakj94dmliyljw8skfg"))))
> + (build-system haskell-build-system)
> + (inputs
> + `(("ghc-hspec-expectations"
> + ,ghc-hspec-expectations)
> + ("ghc-megaparsec" ,ghc-megaparsec)))
> + (native-inputs `(("ghc-hspec" ,ghc-hspec)))
> + (home-page
> + "https://github.com/mrkkrp/hspec-megaparsec")
> + (synopsis
> + "Utility functions for testing Megaparsec parsers with Hspec")
> + (description
> + "Utility functions for testing Megaparsec parsers with Hspec.")

Would you be able to come up with a more descriptive description? Or at
least one that doesn't repeat the synopsis in the same words. I
recognise that this is what was probably generated by the importer.
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl+UnOpfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9XdSzRAAsexXKEg7Cv10q2Tv/6TnBrzxIhSQkLyZ
Me197Q8qCJAIH9kURtWCSEfQ1NMArnDS+5bNOWALQlasFooEfq/ozrrY4THX5kSZ
2EbeppZVH1KYHSRxx4ExbThFxQNtX4dkVmlS/NAYPKVn1+F+xkJIQ8g0XeWclleQ
gxfnxq/u7lHGj1RF/ONaE2NImOqx7Xfqn6KLVVXNcmIKWxC3tFZgMIhjnlZA6aS0
0Y+K3baTbohMfhtywYn3zYehe3ScxJOCjEg9AZco9QrIxm65jXF5wZxxZ7zTHn2N
1UOxoi1biG+L2MBEVBggUA6yRZxTswuMmUE+/qAmWvjbFClFIxTR/uMvQYAUlQmJ
XZoVFxtgMPwIDlSKm7JhQpM8KVu+3HPd5copk27uC+G7agxZejMJRD0tg6wW0AdL
NYkiYo5/Q8QdCScY8PuBpZHYVE4ov7W4zMfu2RJ+0u3VlYniGqhZWCqra//5wujg
uHwddtflFMsKfc2UvRGW96wkzbwtmlwSqZi/0N+rTEgk3/V7SiYI6iikSVCTQFsK
fBn5ml07jJeDcXEg2dc4qlI8rX5+49JdvXbNnDp/0RctQBhR4BrJRWVzm70MTMTF
SfAgzDpG9H9JG0OK8CagvZD8oaa7+LS/fqoTE7xzp/DKfMLlvLjMDkMQZqtHHmGm
zXgy8gTNY68=
=xvbQ
-----END PGP SIGNATURE-----

C
C
Christopher Baines wrote on 24 Oct 2020 23:38
Re: [bug#44174] [PATCH 09/16] gnu: Add ghc-tabular.
(name . Carlo Holl)(address . carloholl@gmail.com)(address . 44174@debbugs.gnu.org)
873623b8zc.fsf@cbaines.net
Carlo Holl <carloholl@gmail.com> writes:

Toggle quote (30 lines)
> ---
> gnu/packages/haskell-xyz.scm | 40 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 40 insertions(+)
>
> diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
> index c4a8d4c208..0cce72e9f5 100644
> --- a/gnu/packages/haskell-xyz.scm
> +++ b/gnu/packages/haskell-xyz.scm
> @@ -12813,6 +12813,46 @@ Unlike the filepath package, this package does not simply reuse String,
> increasing type safety.")
> (license license:expat)))
>
> +(define-public ghc-tabular
> + (package
> + (name "ghc-tabular")
> + (version "0.2.2.8")
> + (source
> + (origin
> + (method url-fetch)
> + (uri (string-append
> + "https://hackage.haskell.org/package/tabular/tabular-"
> + version
> + ".tar.gz"))
> + (sha256
> + (base32
> + "0z936gh8n8i8qdkagyxwd9gqq13skd5fv013vdvwsibrxkm0czfb"))))
> + (build-system haskell-build-system)
> + (inputs
> + `(("ghc-csv" ,ghc-csv) ("ghc-html" ,ghc-html)))

I'd put each input on it's own line.

Toggle quote (24 lines)
> + (synopsis
> + "Two-dimensional data tables with rendering functions")
> + (description "Tabular provides a Haskell representation of
> +two-dimensional data tables, the kind that you might find in a
> +spreadsheet or or a research report. It also comes with some
> +default rendering functions for turning those tables into ASCII
> +art, simple text with an arbitrary delimiter, CSV, HTML or LaTeX.
> +
> +Below is an example of the kind of output this library produces.
> +The tabular package can group rows and columns, each group having
> +one of three separators (no line, single line, double line) between
> +its members.
> +
> + || memtest 1 | memtest 2 || time test | time test 2
> +====++===========+===========++=============+============
> +A 1 || hog | terrible || slow | slower
> +A 2 || pig | not bad || fast | slowest
> +----++-----------+-----------++-------------+------------
> +B 1 || good | awful || intolerable | bearable
> +B 2 || better | no chance || crawling | amazing
> +B 3 || meh | well... || worst ever | ok")
> + (license license:bsd-3)))

I'm not sure if this is semantically the best option, but if you put
@verbatim before this table, and @end verbatim after it, it should
display correctly in ./pre-inst-env guix show ghc-tabular at least.
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl+UnsdfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9Xdhrg/+MA+D0KO69aZRCYTY/GcnDmaavyLoCIIY
9MBjUt8udvdcuouaCVfscql0kwxiLnQY9DaXN9cwyEbD380HCrm9KM6OuRc45n9X
V2uYOzIEmofL+J8XYxcgqhdBHHrCctKhPkUb71V1x3nNYuXecBmIqLs7t9tc0nOl
7AgYmymDrbwhU1wgXLAx0K9eiaae+rAzfbVKl0kIThwVv1+WHa8IHPLCRg5aXOP1
6S6kJsMsa7WHEw9mplN6f7Cz0cbNkvfBbBZ1hDFxcnb1Tj/Poql4V0ou9VWTB7lE
Qv6DehKSHW7T+j5Y+iUFW33j1Pj5QVbEQ3hqsGlz+12eTCJ34T6refBCAp7wbK80
J37fb/Jnh7eWgJsoAzQHwWVYAreC6Ez2j/x6/jItY4C34xpNh05vneET3M1L7A74
inzFsNvt98+fqYyW/FfKtTrB5dKBIgba+bmFhtwN7K6BTwK+oJBNhxV/YaliSOZP
MP5w9A+qjpqkemBSA7OOKdu0R0ydw9jcIsiEqKnIK22ap9C7VnTN4Yi7/hTJh8Zm
zDZTIg47zVvkMD35eQFwf7ACSDLfowvA72ARzbG5Xs8bCxfDcHIkgMMWqY3UJyRV
ULB/0+R0OpfnYP8CDiT65MeSXKoXBx6YMG8OSf3ikEyWYkGUujZ4LuN/cIVORkyF
07DcJe2k88I=
=lROI
-----END PGP SIGNATURE-----

C
C
Christopher Baines wrote on 24 Oct 2020 23:39
Re: [bug#44174] [PATCH 13/16] gnu: Add ghc-cassava-megaparsec.
(name . Carlo Holl)(address . carloholl@gmail.com)(address . 44174@debbugs.gnu.org)
87zh4b9ud6.fsf@cbaines.net
Carlo Holl <carloholl@gmail.com> writes:

Toggle quote (44 lines)
> ---
> gnu/packages/haskell-xyz.scm | 33 +++++++++++++++++++++++++++++++++
> 1 file changed, 33 insertions(+)
>
> diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
> index 8060c2f034..46ed95d607 100644
> --- a/gnu/packages/haskell-xyz.scm
> +++ b/gnu/packages/haskell-xyz.scm
> @@ -1640,6 +1640,39 @@ hackage.haskell.org/package/cassava-0.5.2.0/#readme, README} for more usage
> examples.")
> (license license:bsd-3)))
>
> +(define-public ghc-cassava-megaparsec
> + (package
> + (name "ghc-cassava-megaparsec")
> + (version "2.0.2")
> + (source
> + (origin
> + (method url-fetch)
> + (uri (string-append
> + "https://hackage.haskell.org/package/cassava-megaparsec/"
> + "cassava-megaparsec-"
> + version
> + ".tar.gz"))
> + (sha256
> + (base32
> + "03x1462agrfdagklp8c89b8p4z2hd8nbf6d3895sz770zjkawda7"))))
> + (build-system haskell-build-system)
> + (inputs
> + `(("ghc-cassava" ,ghc-cassava)
> + ("ghc-megaparsec" ,ghc-megaparsec)
> + ("ghc-unordered-containers"
> + ,ghc-unordered-containers)
> + ("ghc-vector" ,ghc-vector)))
> + (native-inputs
> + `(("ghc-hspec" ,ghc-hspec)
> + ("ghc-hspec-megaparsec" ,ghc-hspec-megaparsec)))
> + (home-page
> + "https://github.com/stackbuilders/cassava-megaparsec")
> + (synopsis
> + "Megaparsec parser of CSV files that plays nicely with Cassava")
> + (description
> + "Megaparsec parser of CSV files that plays nicely with Cassava.")

Similarly to the previous package, it would be good to write something
here for the description that doesn't repeat the synopsis.
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl+UnwVfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9XciJBAAm1GgbHCaGNUPHDDL97o8JjfxKCN7Ci5y
G7MtUVopgaEZv8eAPWHvsDX4YJ0+GtDhTowondutfrI4ds9bTnKLj2tXSyf3txwG
JokVxtCmbTySp/F33z4ma6WNWhvzKXUSJ4OGOpxc8U/bboqDjlNIiDit/7VuU2Kr
43RB+NGUNYc20e+ZH5wu8lAvTT2j2M7OnLkF4OLNmG2C+QwQqIvimIJxDjitSEsU
yi059mF7o0/x1hnPlcGO6ujwEnlsKg5xcE6aIBve42faqoBXNUaAYai4rf9OAX28
98zlwmFkvNcn+OxppzSnSjntlyJXJaZ5sPm8yr08wpGgk0EWUY/RwE7qJnGSgK2S
frxLN9+rZlrbuq9pJn4Wrbgyz6frYAORdgDL4i6mGSRNW3bMwamtO9oTytEnXxVe
FmVMllk8aDGoYXuOBh9HdJQMQong2Z+H1GhsQyXaWxxUxHDfUpSfQJ1IwK1ZvDaB
WXu+bIrlbI+qbP6DnHgokdkq8DC5qtPABesYjiTIIcVEfj4o9JIgm8tEfC9JyW9X
fwPt610XTZuoCeLujC/Ra+UjhsbEIxK6TIkfsYZvV0JCLoCEUDOfoqk1QR9u4gpC
CrDSycCriQVKt2Aq0J+FdNYJ2ARNgArYnkWQI2MhNrfjHmhVR5+ACicg/XGFktXp
rzJeLc3MKK0=
=46zb
-----END PGP SIGNATURE-----

C
C
Christopher Baines wrote on 24 Oct 2020 23:40
Re: [bug#44174] [PATCH 16/16] Add attribution.
(name . Carlo Holl)(address . carloholl@gmail.com)(address . 44174@debbugs.gnu.org)
87wnzf9uap.fsf@cbaines.net
Carlo Holl <carloholl@gmail.com> writes:

Toggle quote (30 lines)
> ---
> gnu/packages/finance.scm | 1 +
> gnu/packages/haskell-xyz.scm | 1 +
> 2 files changed, 2 insertions(+)
>
> diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
> index 15a86b8688..fe033e9494 100644
> --- a/gnu/packages/finance.scm
> +++ b/gnu/packages/finance.scm
> @@ -20,6 +20,7 @@
> ;;; Copyright © 2020 Tom Zander <tomz@freedommail.ch>
> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
> ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
> +;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
> index eaba188e97..53770ec01d 100644
> --- a/gnu/packages/haskell-xyz.scm
> +++ b/gnu/packages/haskell-xyz.scm
> @@ -26,6 +26,7 @@
> ;;; Copyright © 2020 JoJo <jo@jo.zone>
> ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
> ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
> +;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;

While most changes are good for their own commits, I'd just make these
changes in the first commits that touch each of these files.
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl+Un15fFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9XfXtg/9HsAFuoZkgJ2+xV6STPVbVBA80ddApEA+
czw8NSgd6ybyu0uUBrzx4j4KwnY4L+aEvEYmSrGH74h/i7ek2joj3NyWdxE4ZWlU
wkpFUnUXMTEzQnc0afHBZdpZeUeZktZYbYEK8Zz4/mTPcBLs1XJWZBl2cf1Wa/1U
XhVA4FRHT0euHx9/E2Ri/KSw8iPas/zM92LyHtRMO/k6L45L6AzBLOu+Iuqoowvy
FJNtNgdA++/vnRPA0JrmyrtsQTxP8S9KjjFL31CvPdtfGARF72MX2ESgJ1jjrD/U
qyOOv1VEk7hScn2BlcfzW8mPI9kBd8I2bPj3hyCPinDMyvqxYMh7l+D0kqpDhrbM
2rMzmDA8AlZMO/ht23HZRvHsF4XCD4dwyGh2PDMxpR0D7+rf5u2SJv4qoys6DUh9
024yTd+MSBMVJgKXhGfGV1qz7RsyUlalpwI2ard94NoF2L52+ohLOM2/+WZ70kG1
UNT1mqg8iZ3AnV9HT3TixK6d2kP03Ienvrvw2YRqfYFepQmqqtSgl8OVTRdJqtxe
3e+Ynpk7Ty5mIqHDhDsePzF6us4nIaWZiLRl2R4Lz4k6898crzlltVB/mT395fad
14/DAiDvbsK4hFvH9cwQgjkZGiddoXPZ6KCPwh4CAJJrh/LVHxK1UjkKztFsB1kL
TY6rM4AWpak=
=XCFr
-----END PGP SIGNATURE-----

C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 00/15] Add hledger and its dependencies.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-1-carloholl@gmail.com
This patch series adds hledger, a plaintext accounting program.

Changes since v1 (based on feedback from Christopher Baines):
- Fixed incorrect indentation.
- Added changelog entries to each commit message.
- Improved descriptions for some of the packages.
- Moved attribution to first commits to touch any given file.

Notes:

Christopher suggested I wrap an ascii table with @verbatim as part of the description for the ghc-tabular package so that it displays correctly, but I couldn't get 'guix show' to work with @verbatim, failing with <<Throw to key `parser-error' with args `(#<input: string 7fdb95dad700> "EOF while reading a token " "reading verbatim")'.>>. I used @example instead, which works under 'guix show', but I'm not sure what the implications are for other output formats.

Carlo Holl (15):
gnu: Add ghc-control-monad-free.
gnu: Add ghc-csv.
gnu: Add ghc-decimal.
gnu: ghc-doctest: Update to 0.16.3.
gnu: Add ghc-hspec-megaparsec.
gnu: Add ghc-lucid.
gnu: Add ghc-only.
gnu: Add ghc-text-short.
gnu: Add ghc-tabular.
gnu: Add ghc-uglymemo.
gnu: Add ghc-wizards.
gnu: Add ghc-cassava.
gnu: Add ghc-cassava-megaparsec.
gnu: Add ghc-hledger-lib.
gnu: Add hledger.

gnu/packages/finance.scm | 63 ++++
gnu/packages/haskell-xyz.scm | 557 ++++++++++++++++++++++++++++++++++-
2 files changed, 608 insertions(+), 12 deletions(-)

--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:11
Re: [bug#44174] [PATCH 00/16] Add hledger and its dependencies.
(name . Christopher Baines)(address . mail@cbaines.net)(address . 44174@debbugs.gnu.org)
20201101021125.vfvyzwwy4skmx26t@cehdev
On 24.10.2020 22:26, Christopher Baines wrote:
Toggle quote (72 lines)
>
>Carlo Holl <carloholl@gmail.com> writes:
>
>> Guix,
>>
>> This patch series adds hledger, a plaintext accounting
>> program. hledger started as a Haskell reimplementation of Ledger
>> CLI. I use hledger regularly to manage personal finances and those of
>> several businesses, and would not be suprised to find other hledger
>> users in the Guix community.
>>
>> More information is available at https://hledger.org.
>
>Hi Carlo, thanks for the patches!
>
>> A couple of notes:
>>
>> 1. The hledger package is placed in (gnu packages finance), and
>> its dependencies in (gnu packages haskell-xyz).
>
>That sounds good :)
>
>> 2. The hledger package is *not* prefixed with 'ghc', but its
>> dependencies are.
>
>Also fine.
>
>> 3. The package ghc-doctest was bumped (minor version), affecting several dependent packages.
>> I was able to build most of these affected packages (querying guix refresh --list-dependents),
>> but it was taking forever so I cut that effort short. I consider this a rough heuristic to determine
>> that there are no substantial changes associated with this
>> version bump.
>
>Sounds good.
>
>> 4. I'm not terribly familiar with the Texinfo format, so there are
>> likely some rough edges there.
>
>Looks like you've done pretty well from what I've seen :)
>
>> 5. I am able to build hledger and its dependencies without error, but was unsuccessful building
>> on different architectures with qemu. I wasn't even able to build GHC under qemu so I didn't bother
>> digging any further.
>
>No problem, if it builds on x86_64-linux, that's good enough at least
>initially.
>
>> This is my first contribution to Guix, and I'm also not a Haskell
>> expert, so expect some headaches. I am happy to attend to any issues
>> as best I am able.
>
>Great, I'll make some more comments on the individual patches, a few
>general comments though:
>
> - The commits should include changelog entries. For new packages, these
> are pretty easy to write, it's just:
>
>* gnu/packages/FILE.scm (PACKAGE): New variable.
>
> - The indentation looks off in places, there's some stuff here about
> indentation [1]. What editor are you using?
>
>1: https://guix.gnu.org/manual/en/html_node/Formatting-Code.html
>
>
>Let me know if you have any questions, and it would be great if you
>could send an updated set of patches.
>
>Thanks,
>
>Chris

Chris,

Apologies for the late reply, I was away last week. Thank you for the feedback. I've send a new patch series that I think addresses all the issues you raised.

Best,

--
Carlo Holl
carloholl@gmail.com
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 01/15] gnu: Add ghc-control-monad-free.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-2-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-control-monad-free): New variable.
---
gnu/packages/haskell-xyz.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (51 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 5b9da15630..762435fa6b 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -26,6 +26,7 @@
;;; Copyright © 2020 JoJo <jo@jo.zone>
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
+;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -2608,6 +2609,36 @@ a vocabulary for working with them.")
@code{ghc-contravariant} package.")
(license license:expat)))
+(define-public ghc-control-monad-free
+ (package
+ (name "ghc-control-monad-free")
+ (version "0.6.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/control-monad-free/control-monad-free-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1habgf7byffqf1rqjkzpihvdhclaafgqsqpfpwp3fgpj5ayk1j33"))))
+ (build-system haskell-build-system)
+ (home-page "https://github.com/pepeiborra/control-monad-free")
+ (synopsis "Free monads and monad transformers")
+ (description "This package provides datatypes to construct Free monads,
+Free monad transformers, and useful instances. In addition it provides the
+constructs to avoid quadratic complexity of left associative bind, as explained in:
+
+@itemize @bullet
+@item
+Janis Voigtlander, @cite{Asymptotic Improvement of Computations over
+Free Monads, MPC'08}
+@end itemize
+
+")
+ (license license:public-domain)))
+
(define-public ghc-convertible
(package
(name "ghc-convertible")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 02/15] gnu: Add ghc-csv.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-3-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-csv): New variable.
---
gnu/packages/haskell-xyz.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 762435fa6b..46019d74c2 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -2665,6 +2665,30 @@ pure @code{Either} value. This means that you need not remember which specific
function performs the conversion you desire.")
(license license:bsd-3)))
+(define-public ghc-csv
+ (package
+ (name "ghc-csv")
+ (version "0.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/csv/csv-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "00767ai09wm7f0yzmpqck3cpgxncpr9djnmmz5l17ajz69139x4c"))))
+ (build-system haskell-build-system)
+ (home-page "http://hackage.haskell.org/package/csv")
+ (synopsis "CSV loader and dumper")
+ (description "This library parses and dumps documents that are
+formatted according to RFC 4180, @cite{The common Format and MIME Type
+for Comma-Separated Values (CSV) Files}. This format is used, among
+many other things, as a lingua franca for spreadsheets, and for
+certain web services.")
+ (license license:expat)))
+
(define-public ghc-data-accessor
(package
(name "ghc-data-accessor")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 03/15] gnu: Add ghc-decimal.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-4-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-decimal): New variable.
---
gnu/packages/haskell-xyz.scm | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)

Toggle diff (42 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 46019d74c2..6eea034931 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -2987,6 +2987,35 @@ to add D-Bus support to Haskell applications, without the awkward
interfaces common to foreign bindings.")
(license license:asl2.0)))
+(define-public ghc-decimal
+ (package
+ (name "ghc-decimal")
+ (version "0.5.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/Decimal/Decimal-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0k7kh05mr2f54w1lpgq1nln0h8k6s6h99dyp5jzsb9cfbb3aap2p"))))
+ (build-system haskell-build-system)
+ (native-inputs
+ `(("ghc-hunit" ,ghc-hunit)
+ ("ghc-quickcheck" ,ghc-quickcheck)
+ ("ghc-test-framework" ,ghc-test-framework)
+ ("ghc-test-framework-quickcheck2"
+ ,ghc-test-framework-quickcheck2)
+ ("ghc-test-framework-hunit"
+ ,ghc-test-framework-hunit)))
+ (home-page "https://github.com/PaulJohnson/Haskell-Decimal")
+ (synopsis "Decimal numbers with variable precision")
+ (description "A decimal number has an integer mantissa and a negative exponent.
+The exponent can be interpreted as the number of decimal places in the value.")
+ (license license:bsd-3)))
+
(define-public ghc-deepseq-generics
(package
(name "ghc-deepseq-generics")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 04/15] gnu: ghc-doctest: Update to 0.16.3.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-5-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-doctest): Update to 0.16.3.
[inputs,native-inputs]: Replace with what is generated by guix import.
---
gnu/packages/haskell-xyz.scm | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)

Toggle diff (51 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 6eea034931..1e995c90b4 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -3412,7 +3412,7 @@ Writer monad), where list append quickly becomes too expensive.")
(define-public ghc-doctest
(package
(name "ghc-doctest")
- (version "0.16.2")
+ (version "0.16.3")
(source
(origin
(method url-fetch)
@@ -3422,22 +3422,24 @@ Writer monad), where list append quickly becomes too expensive.")
".tar.gz"))
(sha256
(base32
- "0lk4cjfzi5bx2snfzw1zi06li0gvgz3ckfh2kwa98l7nxfdl39ag"))))
+ "1y1l7aa80qkib1z8lsizgg7fpfdmdwhxvi5m255a42jdkjgn5sfg"))))
(build-system haskell-build-system)
- (arguments `(#:tests? #f)) ; FIXME: missing test framework
+ (arguments `(#:tests? #f)) ; FIXME: missing test framework
(inputs
- `(("ghc-syb" ,ghc-syb)
- ("ghc-paths" ,ghc-paths)
- ("ghc-base-compat" ,ghc-base-compat)
+ `(("ghc-base-compat" ,ghc-base-compat)
("ghc-code-page" ,ghc-code-page)
- ("ghc-hunit" ,ghc-hunit)
- ("ghc-hspec" ,ghc-hspec)
+ ("ghc-paths" ,ghc-paths)
+ ("ghc-syb" ,ghc-syb)))
+ (native-inputs
+ `(("ghc-hunit" ,ghc-hunit)
("ghc-quickcheck" ,ghc-quickcheck)
- ("ghc-stringbuilder" ,ghc-stringbuilder)
+ ("ghc-hspec" ,ghc-hspec)
+ ("ghc-hspec-core" ,ghc-hspec-core)
+ ("ghc-mockery" ,ghc-mockery)
+ ("ghc-setenv" ,ghc-setenv)
("ghc-silently" ,ghc-silently)
- ("ghc-setenv" ,ghc-setenv)))
- (home-page
- "https://github.com/sol/doctest#readme")
+ ("ghc-stringbuilder" ,ghc-stringbuilder)))
+ (home-page "https://github.com/sol/doctest#readme")
(synopsis "Test interactive Haskell examples")
(description "The doctest program checks examples in source code comments.
It is modeled after doctest for Python, see
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 05/15] gnu: Add ghc-hspec-megaparsec.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-6-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-hspec-megaparsec): New variable.
---
gnu/packages/haskell-xyz.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 1e995c90b4..4eb4d52c05 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -5927,6 +5927,32 @@ are described in a file named @code{package.yaml}. Both @code{cabal2nix} and
@code{package.yaml}.")
(license license:expat)))
+(define-public ghc-hspec-megaparsec
+ (package
+ (name "ghc-hspec-megaparsec")
+ (version "2.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/hspec-megaparsec/hspec-megaparsec-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0w8nn2rh01lkiwsiyqh3gviklhfmy0245rakj94dmliyljw8skfg"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-hspec-expectations"
+ ,ghc-hspec-expectations)
+ ("ghc-megaparsec" ,ghc-megaparsec)))
+ (native-inputs `(("ghc-hspec" ,ghc-hspec)))
+ (home-page "https://github.com/mrkkrp/hspec-megaparsec")
+ (synopsis "Utility functions for testing Megaparsec parsers with Hspec")
+ (description "Provides a small set of helper functions for testing
+Megaparsec parsers with Hspec.")
+ (license license:bsd-3)))
+
(define-public ghc-hs-bibutils
(package
(name "ghc-hs-bibutils")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 06/15] gnu: Add ghc-lucid.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-7-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-lucid): New variable.
---
gnu/packages/haskell-xyz.scm | 46 ++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)

Toggle diff (59 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 4eb4d52c05..93ae4b79b9 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -7281,6 +7281,52 @@ Transformers\" available @uref{http://okmij.org/ftp/papers/LogicT.pdf,
online}.")
(license license:bsd-3)))
+(define-public ghc-lucid
+ (package
+ (name "ghc-lucid")
+ (version "2.9.12")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/lucid/lucid-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "156wniydd1hlb7rygbm95zln8ky8lai8rn2apkkv0rax9cdw6jrh"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-blaze-builder" ,ghc-blaze-builder)
+ ("ghc-hashable" ,ghc-hashable)
+ ("ghc-mmorph" ,ghc-mmorph)
+ ("ghc-unordered-containers" ,ghc-unordered-containers)))
+ (native-inputs
+ `(("ghc-hunit" ,ghc-hunit)
+ ("ghc-hspec" ,ghc-hspec)
+ ("ghc-bifunctors" ,ghc-bifunctors)))
+ (arguments
+ `(#:cabal-revision
+ ("1"
+ "1f0whk5ncanxfjjanrf6rqyncig2xgc5mh2j0sqy3nrlyjr9aqq9")))
+ (home-page "https://github.com/chrisdone/lucid")
+ (synopsis "DSL for rendering HTML")
+ (description "Clear to write, read and edit DSL for HTML
+
+@itemize @bullet
+@item
+Names are consistent, and do not conflict with base or are keywords
+(all have suffix @code{-}).
+@item
+Same combinator can be used for attributes and elements
+(e.g. @code{style_}).
+@item
+For more, read <https://chrisdone.com/posts/lucid the blog post>.
+@end itemize
+
+See the \"Lucid\" module for more documentation.")
+ (license license:bsd-3)))
+
(define-public ghc-lzma
(package
(name "ghc-lzma")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 07/15] gnu: Add ghc-only.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-8-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-only): New variable.
---
gnu/packages/haskell-xyz.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 93ae4b79b9..85ed28625a 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8599,6 +8599,37 @@ old @code{time} library. For new projects, the newer
@uref{https://hackage.haskell.org/package/time, time library} is recommended.")
(license license:bsd-3)))
+(define-public ghc-only
+ (package
+ (name "ghc-only")
+ (version "0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/Only/Only-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0rdj3a629fk2vp121jq8mf2smkblrz5w3cxhlsyx6my2x29s2ymb"))))
+ (build-system haskell-build-system)
+ (arguments
+ `(#:cabal-revision
+ ("1"
+ "1ahk7p34kmh041mz7lyc10nhcxgv2i4z8nvzxvqm2x34gslmsbzr")))
+ (home-page "https://hackage.haskell.org/package/Only")
+ (synopsis "The 1-tuple type or single-value \"collection\"")
+ (description "This package provides a canonical anonymous 1-tuple
+type missing from Haskell for attaching typeclass instances.
+
+NOTE: There is also the @url{https://hackage.haskell.org/package/OneTuple,
+OneTuple package} which by using a boxed @code{data}-type provides a 1-tuple
+type which has laziness properties which are more faithful to the ones of
+Haskell's native tuples; whereas the primary purpose of @code{Only} is to provide
+the traditionally so named type-wrapper for attaching typeclass instances.")
+ (license license:bsd-3)))
+
(define-public ghc-opengl
(package
(name "ghc-opengl")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 08/15] gnu: Add ghc-text-short.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-9-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-text-short): New variable.
---
gnu/packages/haskell-xyz.scm | 39 ++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)

Toggle diff (52 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 85ed28625a..7b49cac093 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8911,6 +8911,45 @@ require aeson
(description "Safe conversions between textual types")
(license license:isc)))
+(define-public ghc-text-short
+ (package
+ (name "ghc-text-short")
+ (version "0.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/text-short/text-short-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0xyrxlb602z8bc9sr2y1fag0x56a20yj5qrkvy7iwc6hnznrynxz"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-hashable" ,ghc-hashable)))
+ (native-inputs
+ `(("ghc-tasty" ,ghc-tasty)
+ ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
+ ("ghc-tasty-hunit" ,ghc-tasty-hunit)
+ ("ghc-quickcheck-instances"
+ ,ghc-quickcheck-instances)))
+ (arguments
+ `(#:cabal-revision
+ ("2"
+ "17cb7p0qywf2dsrq3g8qb3ssknd9wl5k0nc2pxz9gc3l8rxpkw51")))
+ (home-page "https://hackage.haskell.org/package/text-short")
+ (synopsis "Memory-efficient representation of Unicode text strings")
+ (description "This package provides the @code{ShortText} type which
+is suitable for keeping many short strings in memory. This is similiar
+to how @code{ShortByteString} relates to @code{ByteString}.
+
+The main difference between @code{Text} and @code{ShortText} is that
+@code{ShortText} uses UTF-8 instead of UTF-16 internally and also doesn't
+support zero-copy slicing (thereby saving 2 words). Consequently, the memory
+footprint of a (boxed) @{ShortText} value is 4 words (2 words when unboxed)
+plus the length of the UTF-8 encoded payload.")
+ (license license:bsd-3)))
+
(define-public ghc-doclayout
(package
(name "ghc-doclayout")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 09/15] gnu: Add ghc-tabular.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-10-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-tabular): New variable.
---
gnu/packages/haskell-xyz.scm | 44 ++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)

Toggle diff (57 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 7b49cac093..97d83ad886 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12798,6 +12798,50 @@ Unlike the filepath package, this package does not simply reuse String,
increasing type safety.")
(license license:expat)))
+(define-public ghc-tabular
+ (package
+ (name "ghc-tabular")
+ (version "0.2.2.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/tabular/tabular-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0z936gh8n8i8qdkagyxwd9gqq13skd5fv013vdvwsibrxkm0czfb"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-csv" ,ghc-csv)
+ ("ghc-html" ,ghc-html)))
+ (home-page "https://github.com/bgamari/tabular")
+ (synopsis "Two-dimensional data tables with rendering functions")
+ (description "Tabular provides a Haskell representation of
+two-dimensional data tables, the kind that you might find in a
+spreadsheet or or a research report. It also comes with some
+default rendering functions for turning those tables into ASCII
+art, simple text with an arbitrary delimiter, CSV, HTML or LaTeX.
+
+Below is an example of the kind of output this library produces.
+The tabular package can group rows and columns, each group having
+one of three separators (no line, single line, double line) between
+its members.
+
+@example
+
+ || memtest 1 | memtest 2 || time test | time test 2
+====++===========+===========++=============+============
+A 1 || hog | terrible || slow | slower
+A 2 || pig | not bad || fast | slowest
+----++-----------+-----------++-------------+------------
+B 1 || good | awful || intolerable | bearable
+B 2 || better | no chance || crawling | amazing
+B 3 || meh | well... || worst ever | ok
+
+@end example")
+ (license license:bsd-3)))
(define-public ghc-tagged
(package
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 10/15] gnu: Add ghc-uglymemo.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-11-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-uglymemo): New variable.
---
gnu/packages/haskell-xyz.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 97d83ad886..19657fa88f 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -13864,6 +13864,33 @@ processes. It wraps around the @code{process} library, and intends to improve
upon it.")
(license license:expat)))
+(define-public ghc-uglymemo
+ (package
+ (name "ghc-uglymemo")
+ (version "0.1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/uglymemo/uglymemo-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0ixqg5d0ly1r18jbgaa89i6kjzgi6c5hanw1b1y8c5fbq14yz2gy"))))
+ (build-system haskell-build-system)
+ (home-page "https://hackage.haskell.org/package/uglymemo")
+ (synopsis "Simple (but internally ugly) memoization function")
+ (description "Simple (but internally ugly) memoization function.
+
+@itemize @bullet
+@item
+New in 0.1.0.1: Make it exception safe.
+@end itemize
+
+")
+ (license license:public-domain)))
+
(define-public ghc-unagi-chan
(package
(name "ghc-unagi-chan")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 11/15] gnu: Add ghc-wizards.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-12-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-wizards): New variable.
---
gnu/packages/haskell-xyz.scm | 48 ++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)

Toggle diff (61 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 19657fa88f..210df9775c 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -14767,6 +14767,54 @@ widths to the Char type.")
Haskell value or function.")
(license license:bsd-3)))
+(define-public ghc-wizards
+ (package
+ (name "ghc-wizards")
+ (version "1.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/wizards/wizards-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1clvbd1ckhvy29qrbmpkn7bya7300fq6znnps23nn3nxyrxhsr85"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-control-monad-free"
+ ,ghc-control-monad-free)))
+ (arguments
+ `(#:cabal-revision
+ ("1"
+ "095qd17zrdhqmcvmslbyzfa5sh9glvvsnsvnlz31gzsmi8nnsgim")))
+ (home-page "http://hackage.haskell.org/package/wizards")
+ (synopsis "High level, generic library for interrogative user interfaces")
+ (description "@code{wizards} is a package designed for the quick
+and painless development of @emph{interrogative} programs, which revolve around
+a \"dialogue\" with the user, who is asked a series of questions in a
+sequence much like an installation wizard.
+
+Everything from interactive system scripts, to installation wizards, to full-blown
+shells can be implemented with the support of @code{wizards}.
+
+It is developed transparently on top of a free monad, which separates out the
+semantics of the program from any particular interface. A variety of backends
+exist, including console-based @code{System.Console.Wizard.Haskeline} and
+@code{System.Console.Wizard.BasicIO}, and the pure @code{System.Console.Wizard.Pure}.
+It is also possible to write your own backends, or extend existing back-ends with
+new features. While both built-in IO backends operate on a console, there is no
+reason why @code{wizards} cannot also be used for making GUI wizard interfaces.
+
+See the github page for examples on usage:
+
+@url{http://www.github.com/liamoc/wizards}
+
+For creating backends, the module @code{System.Console.Wizard.Internal} has a brief
+tutorial.")
+ (license license:bsd-3)))
+
(define-public ghc-wl-pprint
(package
(name "ghc-wl-pprint")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 12/15] gnu: Add ghc-cassava.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-13-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-cassava): New variable.
---
gnu/packages/haskell-xyz.scm | 89 ++++++++++++++++++++++++++++++++++++
1 file changed, 89 insertions(+)

Toggle diff (102 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 210df9775c..6f5b6c3253 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -1552,6 +1552,95 @@ constructor which can be parameterised by a string-like type like:
the resulting type will be insensitive to cases.")
(license license:bsd-3)))
+(define-public ghc-cassava
+ (package
+ (name "ghc-cassava")
+ (version "0.5.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/cassava/cassava-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "01h1zrdqb313cjd4rqm1107azzx4czqi018c2djf66a5i7ajl3dk"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-attoparsec" ,ghc-attoparsec)
+ ("ghc-hashable" ,ghc-hashable)
+ ("ghc-scientific" ,ghc-scientific)
+ ("ghc-unordered-containers"
+ ,ghc-unordered-containers)
+ ("ghc-vector" ,ghc-vector)
+ ("ghc-only" ,ghc-only)
+ ("ghc-text-short" ,ghc-text-short)
+ ("ghc-bytestring-builder"
+ ,ghc-bytestring-builder)))
+ (native-inputs
+ `(("ghc-hunit" ,ghc-hunit)
+ ("ghc-quickcheck" ,ghc-quickcheck)
+ ("ghc-quickcheck-instances"
+ ,ghc-quickcheck-instances)
+ ("ghc-test-framework" ,ghc-test-framework)
+ ("ghc-test-framework-hunit"
+ ,ghc-test-framework-hunit)
+ ("ghc-test-framework-quickcheck2"
+ ,ghc-test-framework-quickcheck2)))
+ (arguments
+ `(#:cabal-revision
+ ("1"
+ "1ph8rf91z4nf1ryrh9s4gd1kq98jlgk2manwddkpch8k0n9xvfk4")
+ #:configure-flags '("--flags=-bytestring--lt-0_10_4")))
+ (home-page "https://github.com/haskell-hvr/cassava")
+ (synopsis "CSV parsing and encoding library")
+ (description "@code{cassava} is a library for parsing and encoding
+@url{https://tools.ietf.org/html/rfc4180, RFC 4180} compliant @url{https://
+en.wikipedia.org/wiki/Comma-separated_values, comma-separated values (CSV)}
+data, which is a textual line-oriented format commonly used for exchanging
+tabular data.
+
+@code{cassava}'s API includes support for
+
+@itemize @bullet
+
+@item
+Index-based record-conversion
+@item
+Name-based record-conversion
+@item
+Typeclass directed conversion of fields and records
+@item
+Built-in field-conversion instances for standard types
+@item
+Customizable record-conversion instance derivation via GHC generics
+@item
+Low-level @url{https://hackage.haskell.org/package/bytestring), bytestring}
+builders (see @url{https://hackage.haskell.org/package/cassava-0.5.2.0/docs/
+Data-Csv-Builder.html, Data.Csv.Builder})
+@item
+Incremental decoding and encoding API (see @url{https://hackage.haskell.org/
+package/cassava-0.5.2.0/docs/Data-Csv-Incremental.html, Data.Csv.Incremental})
+@item
+Streaming API for constant-space decoding (see @url{https://hackage.haskell.org/
+package/cassava-0.5.2.0/docs/Data-Csv-Streaming.html, Data.Csv.Streaming})
+@end itemize
+
+Moreover, this library is designed to be easy to use; for instance, here's a
+very simple example of encoding CSV data:
+
+@verbatim
+>>> Data.Csv.encode [(\"John\",27),(\"Jane\",28)]
+\"John,27\r\nJane,28\r\n\"
+@end verbatim
+
+Please refer to the documentation in @url{https://hackage.haskell.org/package/
+cassava-0.5.2.0/docs/Data-Csv.html, Data.Csv} and the included @url{https://
+hackage.haskell.org/package/cassava-0.5.2.0/#readme, README} for more usage
+examples.")
+ (license license:bsd-3)))
+
(define-public ghc-cborg
(package
(name "ghc-cborg")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 13/15] gnu: Add ghc-cassava-megaparsec.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-14-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-cassava-megaparsec): New variable.
---
gnu/packages/haskell-xyz.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (46 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 6f5b6c3253..a195503a40 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -1641,6 +1641,39 @@ hackage.haskell.org/package/cassava-0.5.2.0/#readme, README} for more usage
examples.")
(license license:bsd-3)))
+(define-public ghc-cassava-megaparsec
+ (package
+ (name "ghc-cassava-megaparsec")
+ (version "2.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/cassava-megaparsec/"
+ "cassava-megaparsec-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "03x1462agrfdagklp8c89b8p4z2hd8nbf6d3895sz770zjkawda7"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-cassava" ,ghc-cassava)
+ ("ghc-megaparsec" ,ghc-megaparsec)
+ ("ghc-unordered-containers"
+ ,ghc-unordered-containers)
+ ("ghc-vector" ,ghc-vector)))
+ (native-inputs
+ `(("ghc-hspec" ,ghc-hspec)
+ ("ghc-hspec-megaparsec" ,ghc-hspec-megaparsec)))
+ (home-page "https://github.com/stackbuilders/cassava-megaparsec")
+ (synopsis
+ "Megaparsec parser of CSV files that plays nicely with Cassava")
+ (description "Alternative parser for the Cassava package written
+with Megaparsec that provides for better error messages at the expense
+of some speed.")
+ (license license:expat)))
+
(define-public ghc-cborg
(package
(name "ghc-cborg")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 14/15] gnu: Add ghc-hledger-lib.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-15-carloholl@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-hledger-lib): New variable.
---
gnu/packages/haskell-xyz.scm | 64 ++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)

Toggle diff (77 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index a195503a40..7c0941960f 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -5846,6 +5846,70 @@ feature, allowing applications to subscribe to notifications when a file is
accessed or modified.")
(license license:bsd-3)))
+(define-public ghc-hledger-lib
+ (package
+ (name "ghc-hledger-lib")
+ (version "1.19.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/hledger-lib/hledger-lib-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0py11011r358nmnvwwkc8mlx6mpy36jm8sqlr4i8ihx3x0zjdgya"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-decimal" ,ghc-decimal)
+ ("ghc-glob" ,ghc-glob)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-aeson-pretty" ,ghc-aeson-pretty)
+ ("ghc-ansi-terminal" ,ghc-ansi-terminal)
+ ("ghc-base-compat-batteries"
+ ,ghc-base-compat-batteries)
+ ("ghc-blaze-markup" ,ghc-blaze-markup)
+ ("ghc-call-stack" ,ghc-call-stack)
+ ("ghc-cassava" ,ghc-cassava)
+ ("ghc-cassava-megaparsec"
+ ,ghc-cassava-megaparsec)
+ ("ghc-cmdargs" ,ghc-cmdargs)
+ ("ghc-data-default" ,ghc-data-default)
+ ("ghc-extra" ,ghc-extra)
+ ("ghc-fgl" ,ghc-fgl)
+ ("ghc-file-embed" ,ghc-file-embed)
+ ("ghc-hashtables" ,ghc-hashtables)
+ ("ghc-megaparsec" ,ghc-megaparsec)
+ ("ghc-old-time" ,ghc-old-time)
+ ("ghc-parser-combinators"
+ ,ghc-parser-combinators)
+ ("ghc-pretty-show" ,ghc-pretty-show)
+ ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+ ("ghc-safe" ,ghc-safe)
+ ("ghc-split" ,ghc-split)
+ ("ghc-tabular" ,ghc-tabular)
+ ("ghc-tasty" ,ghc-tasty)
+ ("ghc-tasty-hunit" ,ghc-tasty-hunit)
+ ("ghc-timeit" ,ghc-timeit)
+ ("ghc-uglymemo" ,ghc-uglymemo)
+ ("ghc-unordered-containers"
+ ,ghc-unordered-containers)
+ ("ghc-utf8-string" ,ghc-utf8-string)))
+ (native-inputs `(("ghc-doctest" ,ghc-doctest)))
+ (home-page "https://hledger.org")
+ (synopsis "Reusable library providing the core functionality of hledger")
+ (description "A reusable library containing hledger's core functionality.
+This is used by most hledger* packages so that they support the same common
+file formats, command line options, reports etc.
+
+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: @url{https://hledger.org}")
+ (license license:gpl3)))
+
(define-public ghc-hmatrix
(package
(name "ghc-hmatrix")
--
2.28.0
C
C
Carlo Holl wrote on 1 Nov 2020 03:02
[PATCH v2 15/15] gnu: Add hledger.
(address . 44174@debbugs.gnu.org)(name . Carlo Holl)(address . carloholl@gmail.com)
20201101020236.1108-16-carloholl@gmail.com
* gnu/packages/finance.scm (hledger): New variable.
---
gnu/packages/finance.scm | 63 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 63 insertions(+)

Toggle diff (97 lines)
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 4397cf8ba8..ade4fc56fb 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -20,6 +20,7 @@
;;; Copyright © 2020 Tom Zander <tomz@freedommail.ch>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -45,6 +46,7 @@
#:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system emacs)
+ #:use-module (guix build-system haskell)
#:use-module (guix build-system python)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system go)
@@ -72,6 +74,9 @@
#:use-module (gnu packages graphviz)
#:use-module (gnu packages groff)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages haskell-check)
+ #:use-module (gnu packages haskell-web)
+ #:use-module (gnu packages haskell-xyz)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages libedit)
#:use-module (gnu packages libevent)
@@ -170,6 +175,64 @@ of the bitcoin protocol. This package provides the Bitcoin Core command
line client and a client based on Qt.")
(license license:expat)))
+(define-public hledger
+ (package
+ (name "hledger")
+ (version "1.19.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/hledger/hledger-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0wfsyf2q1kf90mj3lxs0m5ghj153axmpkc8xfy12vkz5imnyphfm"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-decimal" ,ghc-decimal)
+ ("ghc-diff" ,ghc-diff)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-ansi-terminal" ,ghc-ansi-terminal)
+ ("ghc-base-compat-batteries"
+ ,ghc-base-compat-batteries)
+ ("ghc-cmdargs" ,ghc-cmdargs)
+ ("ghc-data-default" ,ghc-data-default)
+ ("ghc-extra" ,ghc-extra)
+ ("ghc-hashable" ,ghc-hashable)
+ ("ghc-hledger-lib" ,ghc-hledger-lib)
+ ("ghc-lucid" ,ghc-lucid)
+ ("ghc-math-functions" ,ghc-math-functions)
+ ("ghc-megaparsec" ,ghc-megaparsec)
+ ("ghc-old-time" ,ghc-old-time)
+ ("ghc-pretty-show" ,ghc-pretty-show)
+ ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+ ("ghc-safe" ,ghc-safe)
+ ("ghc-shakespeare" ,ghc-shakespeare)
+ ("ghc-split" ,ghc-split)
+ ("ghc-tabular" ,ghc-tabular)
+ ("ghc-tasty" ,ghc-tasty)
+ ("ghc-temporary" ,ghc-temporary)
+ ("ghc-timeit" ,ghc-timeit)
+ ("ghc-unordered-containers"
+ ,ghc-unordered-containers)
+ ("ghc-utf8-string" ,ghc-utf8-string)
+ ("ghc-utility-ht" ,ghc-utility-ht)
+ ("ghc-wizards" ,ghc-wizards)))
+ (home-page "https://hledger.org")
+ (synopsis "Command-line interface for the hledger accounting system")
+ (description "The command-line interface for the hledger accounting
+system. Its basic function is to read a plain text file describing financial
+transactions and produce useful reports.
+
+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: @url{https://hledger.org}")
+ (license license:gpl3)))
+
(define-public homebank
(package
(name "homebank")
--
2.28.0
C
C
Christopher Baines wrote on 1 Nov 2020 14:38
Re: [bug#44174] [PATCH v2 00/15] Add hledger and its dependencies.
(name . Carlo Holl)(address . carloholl@gmail.com)(address . 44174-done@debbugs.gnu.org)
87a6w1xkmi.fsf@cbaines.net
Carlo Holl <carloholl@gmail.com> writes:

Toggle quote (33 lines)
> This patch series adds hledger, a plaintext accounting program.
>
> Changes since v1 (based on feedback from Christopher Baines):
> - Fixed incorrect indentation.
> - Added changelog entries to each commit message.
> - Improved descriptions for some of the packages.
> - Moved attribution to first commits to touch any given file.
>
> Notes:
>
> Christopher suggested I wrap an ascii table with @verbatim as part of the description for the ghc-tabular package so that it displays correctly, but I couldn't get 'guix show' to work with @verbatim, failing with <<Throw to key `parser-error' with args `(#<input: string 7fdb95dad700> "EOF while reading a token " "reading verbatim")'.>>. I used @example instead, which works under 'guix show', but I'm not sure what the implications are for other output formats.
>
> Carlo Holl (15):
> gnu: Add ghc-control-monad-free.
> gnu: Add ghc-csv.
> gnu: Add ghc-decimal.
> gnu: ghc-doctest: Update to 0.16.3.
> gnu: Add ghc-hspec-megaparsec.
> gnu: Add ghc-lucid.
> gnu: Add ghc-only.
> gnu: Add ghc-text-short.
> gnu: Add ghc-tabular.
> gnu: Add ghc-uglymemo.
> gnu: Add ghc-wizards.
> gnu: Add ghc-cassava.
> gnu: Add ghc-cassava-megaparsec.
> gnu: Add ghc-hledger-lib.
> gnu: Add hledger.
>
> gnu/packages/finance.scm | 63 ++++
> gnu/packages/haskell-xyz.scm | 557 ++++++++++++++++++++++++++++++++++-
> 2 files changed, 608 insertions(+), 12 deletions(-)

Awesome! I went through and tweaked some descriptions and wrapping and
pushed to master as e6bfb02eb79777b760031384d4a3c14239f7fb55.

Thanks again,

Chris
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl+eulVfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9Xf5jw/+KfdWQEfEnLGxDGEdFah4gsDyA8EtyEva
pg2IC3/tXuHtC5KEW+pXVIuAh9na4PMqTG3CohLW3LTgiQoCrS/fAL30OWmVXpWK
jBRRu5YImjxxJ618Cz18ft6cuWDwzezMWvqIOP3kM3IJgmJVZNEErkFCk70CXWF6
V9iATZYgBAnPmvimGiLcW0V2UhxDoGmtpIxXIUoP30y5pK0tqOKU0dH+WV0gVs0i
vx8kbgDlVRX6DapHrX8DUIVleHZbTXPtyMIrEuDztsuBf7HQy/KGlZKo0BL4dH/K
Vf4G7tNaz3W6izmxDfnwmkd0xm9fSgYm1V6C4usgF0mZtO9M+bRxoBsA7N21G+bc
88hKC9ktfgF0qgSNUrGs3SbwfXiUH+l/fNjLhUWe0p/lMqjiZ5kOPTOSe4G7lExi
V5X3Dkde3m7koSN0hANtE9/ZfgqMROrWZxJ7A8jT63pZvSMpTF27W+wmACa45UJ6
Nrqvu7Bi90eeOKNYOKVfNWVHjeMWpkxXqhrg1Tmot1avsY+39oEkmU3/PzfHD4dk
K97uNrxFwIgas82WRMNavqc+eH61aj14kGtdbXMa4GUaEG2HG8U3tbFCXXNaWHnV
ot0OMhoXPejqeiFsEmQAmhEco463VjchB1a2oV8IfIdy4Ouj8VV2+O2ysk+QihP8
7jXahEVRR8k=
=3tsy
-----END PGP SIGNATURE-----

Closed
R
R
Ricardo Wurmus wrote on 1 Nov 2020 19:22
Re: bug#44174: [PATCH v2 00/15] Add hledger and its dependencies.
(name . Christopher Baines)(address . mail@cbaines.net)
87eeldym1l.fsf@elephly.net
Christopher Baines <mail@cbaines.net> writes:

Toggle quote (24 lines)
>> Carlo Holl (15):
>> gnu: Add ghc-control-monad-free.
>> gnu: Add ghc-csv.
>> gnu: Add ghc-decimal.
>> gnu: ghc-doctest: Update to 0.16.3.
>> gnu: Add ghc-hspec-megaparsec.
>> gnu: Add ghc-lucid.
>> gnu: Add ghc-only.
>> gnu: Add ghc-text-short.
>> gnu: Add ghc-tabular.
>> gnu: Add ghc-uglymemo.
>> gnu: Add ghc-wizards.
>> gnu: Add ghc-cassava.
>> gnu: Add ghc-cassava-megaparsec.
>> gnu: Add ghc-hledger-lib.
>> gnu: Add hledger.
>>
>> gnu/packages/finance.scm | 63 ++++
>> gnu/packages/haskell-xyz.scm | 557 ++++++++++++++++++++++++++++++++++-
>> 2 files changed, 608 insertions(+), 12 deletions(-)
>
> Awesome! I went through and tweaked some descriptions and wrapping and
> pushed to master as e6bfb02eb79777b760031384d4a3c14239f7fb55.

Unfortunately, some of these packages are the latest versions on
Hackage, but we need to ensure that all Haskell packages are picked at
versions corresponding to the currently supported version of LTSHaskell
in Guix. We are behind the current LTSHaskell with our packages, so now
we have the situation where we have packages that are *newer* than the
latest LTSHaskell release and packages that are *older* than what the
latest LTSHaskell release prescribes.

We should fix this soon, because mixing Haskell packages from different
LTS releases (or even ignoring the LTS releases in favour of the latest
versions on Hackage) results in dependency hell for those users who want
to use Guix for Haskell development.

--
Ricardo
Closed
C
C
Carlo Holl wrote on 1 Nov 2020 22:09
(name . Ricardo Wurmus)(address . rekado@elephly.net)
20201101210943.7f5cw56fafykgjmk@cehdev
On 01.11.2020 19:22, Ricardo Wurmus wrote:
Toggle quote (43 lines)
>
>Christopher Baines <mail@cbaines.net> writes:
>
>>> Carlo Holl (15):
>>> gnu: Add ghc-control-monad-free.
>>> gnu: Add ghc-csv.
>>> gnu: Add ghc-decimal.
>>> gnu: ghc-doctest: Update to 0.16.3.
>>> gnu: Add ghc-hspec-megaparsec.
>>> gnu: Add ghc-lucid.
>>> gnu: Add ghc-only.
>>> gnu: Add ghc-text-short.
>>> gnu: Add ghc-tabular.
>>> gnu: Add ghc-uglymemo.
>>> gnu: Add ghc-wizards.
>>> gnu: Add ghc-cassava.
>>> gnu: Add ghc-cassava-megaparsec.
>>> gnu: Add ghc-hledger-lib.
>>> gnu: Add hledger.
>>>
>>> gnu/packages/finance.scm | 63 ++++
>>> gnu/packages/haskell-xyz.scm | 557 ++++++++++++++++++++++++++++++++++-
>>> 2 files changed, 608 insertions(+), 12 deletions(-)
>>
>> Awesome! I went through and tweaked some descriptions and wrapping and
>> pushed to master as e6bfb02eb79777b760031384d4a3c14239f7fb55.
>
>Unfortunately, some of these packages are the latest versions on
>Hackage, but we need to ensure that all Haskell packages are picked at
>versions corresponding to the currently supported version of LTSHaskell
>in Guix. We are behind the current LTSHaskell with our packages, so now
>we have the situation where we have packages that are *newer* than the
>latest LTSHaskell release and packages that are *older* than what the
>latest LTSHaskell release prescribes.
>
>We should fix this soon, because mixing Haskell packages from different
>LTS releases (or even ignoring the LTS releases in favour of the latest
>versions on Hackage) results in dependency hell for those users who want
>to use Guix for Haskell development.
>
>--
>Ricardo

Ricardo,

Thanks for the heads-up. I can have a go at submitting a patch series to deal with this if you like. Since this would involve a downgrade, is there anything I need to watch out for?

--
Carlo Holl
carloholl@gmail.com
Closed
?