diff --git a/pkgs/development/compilers/elm/default.nix b/pkgs/development/compilers/elm/default.nix index 51f76f1108a..70be5a95105 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 < packages/elm.nix +cabal2nix --no-check cabal://indents-0.3.3 > packages/indents.nix +cabal2nix --no-haddock --no-check --jailbreak --revision refs/tags/0.8.0 http://github.com/avh4/elm-format > packages/elm-format.nix