Subject: Re: [PATCH WIP] gnu: add stack.

From: John Soo <[email-masked]>
Date: Thu, 13 Feb 2020 17:36:56 +0000

I tried using this patch and it still fails. Could I be missing something?
From 200b3387c5466bc2cd96772400f5244fe9b78907 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Sun, 26 Jan 2020 11:19:47 -0800
Subject: [PATCH] gnu: Add stack.

* gnu/packages/haskell-xyz.scm (stack): New variable.
---
 gnu/packages/haskell-apps.scm | 129 ++++++++++++++++++++++++++++++++++
 1 file changed, 129 insertions(+)

diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 0a4a4f62cd..cbe7de3b0f 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -35,6 +35,7 @@
   #:use-module (guix packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system haskell)
+  #:use-module (guix utils)
   #:use-module (gnu packages base)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages gl)
@@ -691,6 +692,134 @@ advanced user's otherwise working script to fail under future circumstances.
 @end enumerate")
     (license license:gpl3+)))
 
+(define-public stack
+  (package
+    (name "stack")
+    (version "2.1.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/stack/stack-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1q2nagnc24fvyj3hwnpgyp3rqhxswhscyw4pw2dazqx34ad3d0zr"))))
+    (build-system haskell-build-system)
+    (arguments
+     ;; Substitute ghc's bundled version of hsc2hs to a version that uses
+     ;; response files.
+     ;; See https://github.com/haskell/hsc2hs/issues/22
+     `(#:haskell
+       ,(package
+          (inherit ghc-8.6)
+          (native-inputs
+           (cons `("ghc-hsc2hs" ,(package-source ghc-hsc2hs))
+                 (package-native-inputs ghc-8.6)))
+           (arguments
+            (substitute-keyword-arguments (package-arguments ghc-8.6)
+              ((#:phases ghc-8.6-phases)
+               `(modify-phases ,ghc-8.6-phases
+                  (add-after 'unpack 'de-vendor-hsc2hs
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (invoke
+                       "tar" "-xvf" (assoc-ref inputs "ghc-hsc2hs")
+                       "-C" "utils/hsc2hs" "--overwrite"))))))))))
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-annotated-wl-pprint" ,ghc-annotated-wl-pprint)
+       ("ghc-ansi-terminal" ,ghc-ansi-terminal)
+       ("ghc-async" ,ghc-async)
+       ("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+       ("ghc-colour" ,ghc-colour)
+       ("ghc-conduit" ,ghc-conduit)
+       ("ghc-conduit-extra" ,ghc-conduit-extra)
+       ("ghc-cryptonite" ,ghc-cryptonite)
+       ("ghc-cryptonite-conduit" ,ghc-cryptonite-conduit)
+       ("ghc-echo" ,ghc-echo)
+       ("ghc-exceptions" ,ghc-exceptions)
+       ("ghc-extra" ,ghc-extra)
+       ("ghc-file-embed" ,ghc-file-embed)
+       ("ghc-filelock" ,ghc-filelock)
+       ("ghc-fsnotify" ,ghc-fsnotify)
+       ("ghc-generic-deriving" ,ghc-generic-deriving)
+       ("ghc-hackage-security" ,ghc-hackage-security)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-hi-file-parser" ,ghc-hi-file-parser)
+       ("ghc-hpack" ,ghc-hpack)
+       ("ghc-http-client" ,ghc-http-client)
+       ("ghc-http-client-tls" ,ghc-http-client-tls)
+       ("ghc-http-conduit" ,ghc-http-conduit)
+       ("ghc-http-download" ,ghc-http-download)
+       ("ghc-http-types" ,ghc-http-types)
+       ("ghc-memory" ,ghc-memory)
+       ("ghc-microlens" ,ghc-microlens)
+       ("ghc-mintty" ,ghc-mintty)
+       ("ghc-mono-traversable" ,ghc-mono-traversable)
+       ("ghc-mustache" ,ghc-mustache)
+       ("ghc-neat-interpolation" ,ghc-neat-interpolation)
+       ("ghc-network-uri" ,ghc-network-uri)
+       ("ghc-open-browser" ,ghc-open-browser)
+       ("ghc-optparse-applicative" ,ghc-optparse-applicative)
+       ("ghc-pantry" ,ghc-pantry)
+       ("ghc-path" ,ghc-path)
+       ("ghc-path-io" ,ghc-path-io)
+       ("ghc-persistent" ,ghc-persistent)
+       ("ghc-persistent-sqlite" ,ghc-persistent-sqlite)
+       ("ghc-persistent-template" ,ghc-persistent-template)
+       ("ghc-primitive" ,ghc-primitive)
+       ("ghc-project-template" ,ghc-project-template)
+       ("ghc-regex-applicative-text" ,ghc-regex-applicative-text)
+       ("ghc-resource-pool" ,ghc-resource-pool)
+       ("ghc-resourcet" ,ghc-resourcet)
+       ("ghc-retry" ,ghc-retry)
+       ("ghc-rio" ,ghc-rio)
+       ("ghc-rio-prettyprint" ,ghc-rio-prettyprint)
+       ("ghc-semigroups" ,ghc-semigroups)
+       ("ghc-split" ,ghc-split)
+       ("ghc-streaming-commons" ,ghc-streaming-commons)
+       ("ghc-tar" ,ghc-tar)
+       ("ghc-temporary" ,ghc-temporary)
+       ("ghc-terminal-size" ,ghc-terminal-size)
+       ("ghc-text-metrics" ,ghc-text-metrics)
+       ("ghc-th-reify-many" ,ghc-th-reify-many)
+       ("ghc-tls" ,ghc-tls)
+       ("ghc-typed-process" ,ghc-typed-process)
+       ("ghc-unicode-transforms" ,ghc-unicode-transforms)
+       ("ghc-unix-compat" ,ghc-unix-compat)
+       ("ghc-unliftio" ,ghc-unliftio)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-yaml" ,ghc-yaml)
+       ("ghc-zip-archive" ,ghc-zip-archive)
+       ("ghc-zlib" ,ghc-zlib)
+       ("ghc-githash" ,ghc-githash)
+       ("ghc-optparse-simple" ,ghc-optparse-simple)
+       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-optparse-generic" ,ghc-optparse-generic)))
+    (native-inputs
+     `(("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-raw-strings-qq" ,ghc-raw-strings-qq)
+       ("ghc-smallcheck" ,ghc-smallcheck)))
+    (home-page "http://haskellstack.org")
+    (synopsis "Haskell Tool Stack")
+    (description
+     "Stack is a cross-platform program for developing Haskell projects.  It
+is aimed at Haskellers both new and experienced.
+
+It features:
+
+@itemize
+@item Installing GHC automatically, in an isolated location.
+@item Installing packages needed for your project.
+@item Building your project.
+@item Testing your project.
+@item Benchmarking your project.
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public stylish-haskell
   (package
     (name "stylish-haskell")
-- 
2.25.0