summary refs log tree commit diff
path: root/pkgs/development/compilers/elm/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers/elm/default.nix')
-rw-r--r--pkgs/development/compilers/elm/default.nix53
1 files changed, 36 insertions, 17 deletions
diff --git a/pkgs/development/compilers/elm/default.nix b/pkgs/development/compilers/elm/default.nix
index 51f76f1108af..70be5a95105f 100644
--- a/pkgs/development/compilers/elm/default.nix
+++ b/pkgs/development/compilers/elm/default.nix
@@ -1,10 +1,12 @@
-{ lib, stdenv, buildEnv, haskell, nodejs, fetchurl, makeWrapper }:
+{ lib, stdenv, buildEnv, haskell, nodejs, fetchurl, makeWrapper, git }:
 
 # To update:
-# 1) Update versions in ./update-elm.rb and run it.
-# 2) Checkout elm-reactor and run `elm-package install -y` inside.
-# 3) Run ./elm2nix.rb in elm-reactor's directory.
-# 4) Move the resulting 'package.nix' to 'packages/elm-reactor-elm.nix'.
+
+# 1) Modify ./update.sh and run it
+# 2) XXX: generate packages/elm-elm.nix
+# 3) XXX: versions.dat
+
+# Notes:
 
 # the elm binary embeds a piece of pre-compiled elm code, used by 'elm
 # reactor'. this means that the build process for 'elm' effectively
@@ -48,22 +50,25 @@ let
                in ''
                  mkdir -p .elm/${ver}/package/${name}
                  cp -R ${pkg} .elm/${ver}/package/${name}/${info.version}
-                 chmod -R +w .elm/${ver}/package/${name}/${info.version}
                '') deps;
-    in ''
+    in (lib.concatStrings cmds) + ''
       mkdir -p .elm/${ver}/package;
-      ln -s ${versionsDat} .elm/${ver}/package/versions.dat;
-    '' + lib.concatStrings cmds;
+      cp ${versionsDat} .elm/${ver}/package/versions.dat;
+      chmod -R +w .elm
+    '';
 
   hsPkgs = haskell.packages.ghc822.override {
-    overrides = self: super:
-      let hlib = haskell.lib;
-          elmPkgs = {
-            elm = hlib.overrideCabal (self.callPackage ./packages/elm.nix { }) {
+    overrides = self: super: with haskell.lib;
+      let elmPkgs = {
+            elm = overrideCabal (self.callPackage ./packages/elm.nix { }) (attrs: {
+              # sadly with parallelism most of the time breaks compilation
+              enableParallelBuilding = false;
               preConfigure = ''
                 export ELM_HOME=`pwd`/.elm
               '' + (makeDotElm "0.19.0" (import ./packages/elm-elm.nix));
-            };
+            });
+
+
 
             /*
             This is not a core Elm package, and it's hosted on GitHub.
@@ -71,14 +76,28 @@ let
 
                 cabal2nix --jailbreak --revision refs/tags/foo http://github.com/avh4/elm-format > packages/elm-format.nix
 
-            where foo is a tag for a new version, for example "0.3.1-alpha".
+            where foo is a tag for a new version, for example "0.8.0".
             */
-            elm-format = self.callPackage ./packages/elm-format.nix { };
-            elm-interface-to-json = self.callPackage ./packages/elm-interface-to-json.nix {};
+            elm-format = overrideCabal (self.callPackage ./packages/elm-format.nix {  }) (drv: {
+              # https://github.com/avh4/elm-format/issues/529
+              patchPhase = ''
+                cat >Setup.hs <<EOF
+                import Distribution.Simple
+                main = defaultMain
+                EOF
+
+                sed -i '/Build_elm_format/d' elm-format.cabal
+                sed -i 's/Build_elm_format.gitDescribe/""/' src/ElmFormat/Version.hs
+                sed -i '/Build_elm_format/d' src/ElmFormat/Version.hs
+              '';
+            });
           };
       in elmPkgs // {
         inherit elmPkgs;
         elmVersion = elmPkgs.elm.version;
+
+        # Needed for elm-format
+        indents = self.callPackage ./packages/indents.nix {};
       };
   };
 in hsPkgs.elmPkgs