Elm: 0.19 builds with elm-format

This commit is contained in:
Domen Kožar
2018-08-26 23:20:41 +01:00
committed by Domen Kožar
parent 9f9e9d6433
commit 7c542d0c86
8 changed files with 56 additions and 117 deletions
+36 -17
View File
@@ -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