Elm: 0.19 builds with elm-format
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user