summary refs log tree commit diff
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2021-07-03 17:22:09 +0200
committerTobias Geerinckx-Rice <me@tobias.gr>2021-07-04 16:29:14 +0200
commitefbe2667561ffa9829359457709300850692d5d2 (patch)
treed87b45a42aef366e2bfac312f764d05f6bdd6d0b
parentd9c400905682e74d1ce61c50a5bae7268df01a7f (diff)
downloadguix-efbe2667561ffa9829359457709300850692d5d2.tar.gz
gnu: Add ghc-config-ini.
* gnu/packages/haskell-xyz.scm (ghc-config-ini): New public variable.
-rw-r--r--gnu/packages/haskell-xyz.scm38
1 files changed, 38 insertions, 0 deletions
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 898cd9b78a..f1d2b3b94d 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -2592,6 +2592,44 @@ a very thin wrapper around the
 interface}.")
     (license license:expat)))
 
+(define-public ghc-config-ini
+  (package
+    (name "ghc-config-ini")
+    (version "0.2.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "config-ini/config-ini-" version ".tar.gz"))
+       (sha256
+        (base32 "0dfm4xb1sd713rcqzplzdgw68fyhj24i6lj8j3q8kldpmkl98lbf"))))
+    (build-system haskell-build-system)
+    (arguments
+     ;; XXX The tests fail to compile: “The constructor ‘I1.Ini’ should have 2
+     ;; arguments, but has been given 1”.
+     `(#:tests? #f
+       #:cabal-revision
+       ("2" "0iwraaa0y1b3xdsg760j1wpylkqshky0k2djcg0k4s97lrwqpbcz")))
+    (native-inputs
+     `(("ghc-doctest" ,ghc-doctest)
+       ("ghc-hedgehog" ,ghc-hedgehog)
+       ("ghc-ini" ,ghc-ini)
+       ("ghc-microlens" ,ghc-microlens)))
+    (inputs
+     `(("ghc-megaparsec" ,ghc-megaparsec)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)))
+    (home-page "https://github.com/aisamanra/config-ini")
+    (synopsis "Monadic Haskell DSL for parsing simple INI configuration files")
+    (description
+     "The @code{config-ini} Haskell library exports some simple monadic
+functions to ease the parsing of @file{.ini}-style configuration files, and
+to write and update them in an efficient @i{diff-minimal} way.  This means that
+if you parse a file, update a single field, and reserialize, that file should
+differ only in the field we changed and @emph{that's it}: field order, comments,
+and incidental whitespace will remain unchanged.  The library aims to produce
+human-readable error messages when things go wrong.")
+    (license license:bsd-3)))
+
 (define-public ghc-configurator
   (package
     (name "ghc-configurator")