summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2019-07-04T14·55+0100
committerVincent Ambo <tazjin@google.com>2019-07-04T14·55+0100
commit6fbdf41b0584d46d626fd5d76852d821bcdc2764 (patch)
treea5b7b165de0ed5bef4191dc38d9f25776247440e
parentca549e4edc55aabdd2ca38193f3049424f56ee02 (diff)
feat(build): Introduce pre-packaged GHC with dependencies via Nix r/21
This uses the Nix infrastructure's Haskell setup to create a GHC
derivation that comes with all required Haskell packages, fetched &
built via Nix.

Downstream packages that want to make use of Haskell dependencies need
them to be added to this list.
-rw-r--r--WORKSPACE9
-rw-r--r--default.nix20
2 files changed, 27 insertions, 2 deletions
diff --git a/WORKSPACE b/WORKSPACE
index c06fcc2ed3c4..54bd542f3b8d 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -41,7 +41,12 @@ load(
     "haskell_register_ghc_nixpkgs",
 )
 
+# Register a Haskell toolchain with all required external
+# dependencies.
+#
+# All dependencies need to be set up in thirdParty.ghc in default.nix
 haskell_register_ghc_nixpkgs(
-    version = "8.6.4",
-    repositories = { "nixpkgs": "default.nix" }
+    version = "8.6.5",
+    repositories = { "nixpkgs": "default.nix" },
+    attribute_path = "thirdParty.ghc",
 )
diff --git a/default.nix b/default.nix
index 771128a8a9f2..7c264653d71b 100644
--- a/default.nix
+++ b/default.nix
@@ -3,10 +3,30 @@
 
 let
   localPkgs = super: pkgs: {
+    # Local projects should be added here:
     tazjin.tazblog = import ./services/tazblog { inherit pkgs; };
     tazjin.gemma = import ./services/gemma { inherit pkgs; };
 
+    # Third-party projects (either vendored or modified from nixpkgs)
+    # should be added here:
     thirdParty.gitAppraise = pkgs.callPackage ./third_party/go/git-appraise/git-appraise {};
+    thirdParty.ghc = pkgs.haskell.packages.ghc865.ghcWithPackages(p: with p; [
+      acid-state
+      base64-bytestring
+      blaze-html
+      containers
+      cryptohash
+      hamlet
+      happstack-server
+      ixset
+      markdown
+      mtl
+      network
+      network-uri
+      options
+      rss
+      safecopy
+    ]);
   };
 
   # TODO(tazjin): It might be preferable to pin a specific commit of