diff options
Diffstat (limited to 'pkgs/development/compilers/elm/default.nix')
-rw-r--r-- | pkgs/development/compilers/elm/default.nix | 53 |
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 |