Elm: 0.19 builds with elm-format
This commit is contained in:
parent
9f9e9d6433
commit
7c542d0c86
|
@ -1,10 +1,12 @@
|
||||||
{ lib, stdenv, buildEnv, haskell, nodejs, fetchurl, makeWrapper }:
|
{ lib, stdenv, buildEnv, haskell, nodejs, fetchurl, makeWrapper, git }:
|
||||||
|
|
||||||
# To update:
|
# To update:
|
||||||
# 1) Update versions in ./update-elm.rb and run it.
|
|
||||||
# 2) Checkout elm-reactor and run `elm-package install -y` inside.
|
# 1) Modify ./update.sh and run it
|
||||||
# 3) Run ./elm2nix.rb in elm-reactor's directory.
|
# 2) XXX: generate packages/elm-elm.nix
|
||||||
# 4) Move the resulting 'package.nix' to 'packages/elm-reactor-elm.nix'.
|
# 3) XXX: versions.dat
|
||||||
|
|
||||||
|
# Notes:
|
||||||
|
|
||||||
# the elm binary embeds a piece of pre-compiled elm code, used by 'elm
|
# the elm binary embeds a piece of pre-compiled elm code, used by 'elm
|
||||||
# reactor'. this means that the build process for 'elm' effectively
|
# reactor'. this means that the build process for 'elm' effectively
|
||||||
|
@ -48,22 +50,25 @@ let
|
||||||
in ''
|
in ''
|
||||||
mkdir -p .elm/${ver}/package/${name}
|
mkdir -p .elm/${ver}/package/${name}
|
||||||
cp -R ${pkg} .elm/${ver}/package/${name}/${info.version}
|
cp -R ${pkg} .elm/${ver}/package/${name}/${info.version}
|
||||||
chmod -R +w .elm/${ver}/package/${name}/${info.version}
|
|
||||||
'') deps;
|
'') deps;
|
||||||
in ''
|
in (lib.concatStrings cmds) + ''
|
||||||
mkdir -p .elm/${ver}/package;
|
mkdir -p .elm/${ver}/package;
|
||||||
ln -s ${versionsDat} .elm/${ver}/package/versions.dat;
|
cp ${versionsDat} .elm/${ver}/package/versions.dat;
|
||||||
'' + lib.concatStrings cmds;
|
chmod -R +w .elm
|
||||||
|
'';
|
||||||
|
|
||||||
hsPkgs = haskell.packages.ghc822.override {
|
hsPkgs = haskell.packages.ghc822.override {
|
||||||
overrides = self: super:
|
overrides = self: super: with haskell.lib;
|
||||||
let hlib = haskell.lib;
|
let elmPkgs = {
|
||||||
elmPkgs = {
|
elm = overrideCabal (self.callPackage ./packages/elm.nix { }) (attrs: {
|
||||||
elm = hlib.overrideCabal (self.callPackage ./packages/elm.nix { }) {
|
# sadly with parallelism most of the time breaks compilation
|
||||||
|
enableParallelBuilding = false;
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
export ELM_HOME=`pwd`/.elm
|
export ELM_HOME=`pwd`/.elm
|
||||||
'' + (makeDotElm "0.19.0" (import ./packages/elm-elm.nix));
|
'' + (makeDotElm "0.19.0" (import ./packages/elm-elm.nix));
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This is not a core Elm package, and it's hosted on GitHub.
|
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
|
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-format = overrideCabal (self.callPackage ./packages/elm-format.nix { }) (drv: {
|
||||||
elm-interface-to-json = self.callPackage ./packages/elm-interface-to-json.nix {};
|
# 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 // {
|
in elmPkgs // {
|
||||||
inherit elmPkgs;
|
inherit elmPkgs;
|
||||||
elmVersion = elmPkgs.elm.version;
|
elmVersion = elmPkgs.elm.version;
|
||||||
|
|
||||||
|
# Needed for elm-format
|
||||||
|
indents = self.callPackage ./packages/indents.nix {};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in hsPkgs.elmPkgs
|
in hsPkgs.elmPkgs
|
||||||
|
|
|
@ -6,14 +6,12 @@
|
||||||
}:
|
}:
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
pname = "elm-format";
|
pname = "elm-format";
|
||||||
version = "0.7.0";
|
version = "0.8.0";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "http://github.com/avh4/elm-format";
|
url = "http://github.com/avh4/elm-format";
|
||||||
sha256 = "1snl2lrrzdwgzi68agi3sdw84aslj04pzzxpm1mam9ic6dzhn3jf";
|
sha256 = "1w79xvsyq98vfz3jb4sv8433vdh6pcg8s7yh54lcxzr1p08yhsb6";
|
||||||
rev = "da4b415c6a2b7e77b7d9f00beca3e45230e603fb";
|
rev = "f19ac28046d7e83ff95f845849c033cc616f1bd6";
|
||||||
};
|
};
|
||||||
|
|
||||||
doHaddock = false;
|
|
||||||
isLibrary = true;
|
isLibrary = true;
|
||||||
isExecutable = true;
|
isExecutable = true;
|
||||||
setupHaskellDepends = [ base Cabal directory filepath process ];
|
setupHaskellDepends = [ base Cabal directory filepath process ];
|
||||||
|
@ -27,15 +25,10 @@ mkDerivation {
|
||||||
base cmark containers HUnit mtl parsec QuickCheck quickcheck-io
|
base cmark containers HUnit mtl parsec QuickCheck quickcheck-io
|
||||||
split tasty tasty-golden tasty-hunit tasty-quickcheck text
|
split tasty tasty-golden tasty-hunit tasty-quickcheck text
|
||||||
];
|
];
|
||||||
|
doHaddock = false;
|
||||||
jailbreak = true;
|
jailbreak = true;
|
||||||
postInstall = ''
|
doCheck = false;
|
||||||
ln -s $out/bin/elm-format-0.18 $out/bin/elm-format
|
homepage = "http://elm-lang.org";
|
||||||
'';
|
|
||||||
postPatch = ''
|
|
||||||
sed -i "s|desc <-.*||" ./Setup.hs
|
|
||||||
sed -i "s|gitDescribe = .*|gitDescribe = \\\\\"da4b415c\\\\\"\"|" ./Setup.hs
|
|
||||||
'';
|
|
||||||
homepage = http://elm-lang.org;
|
|
||||||
description = "A source code formatter for Elm";
|
description = "A source code formatter for Elm";
|
||||||
license = stdenv.lib.licenses.bsd3;
|
license = stdenv.lib.licenses.bsd3;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
{ mkDerivation, aeson, aeson-pretty, base, binary, bytestring
|
|
||||||
, concatenative, containers, directory, either, elm-compiler
|
|
||||||
, filemanip, filepath, indents, optparse-applicative, parsec
|
|
||||||
, stdenv, text, transformers, fetchgit
|
|
||||||
}:
|
|
||||||
mkDerivation {
|
|
||||||
pname = "elm-interface-to-json";
|
|
||||||
version = "0.1.0.0";
|
|
||||||
src = fetchgit {
|
|
||||||
url = "https://github.com/stoeffel/elm-interface-to-json";
|
|
||||||
sha256 = "1izc78w91m7nrc9i2b3lgy3kyjsy4d5mkkblx96ws0bp3dpm5f9k";
|
|
||||||
rev = "9884c1c997a55f11cf7c3d99a8afa72cf2e97323";
|
|
||||||
};
|
|
||||||
isLibrary = false;
|
|
||||||
isExecutable = true;
|
|
||||||
jailbreak = true;
|
|
||||||
executableHaskellDepends = [
|
|
||||||
aeson aeson-pretty base binary bytestring concatenative containers
|
|
||||||
directory either elm-compiler filemanip filepath indents
|
|
||||||
optparse-applicative parsec text transformers
|
|
||||||
];
|
|
||||||
homepage = "https://github.com/githubuser/elm-interface-to-json#readme";
|
|
||||||
license = stdenv.lib.licenses.bsd3;
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
"elm-lang/virtual-dom" = {
|
|
||||||
version = "2.0.1";
|
|
||||||
sha256 = "19nfjx072m7a7bx8flc50vbmiww172jmscyq9x91cr2kby5hvbw3";
|
|
||||||
};
|
|
||||||
"evancz/elm-markdown" = {
|
|
||||||
version = "3.0.1";
|
|
||||||
sha256 = "144lzpcapf2mhqiz90mkllmm4skrcs0iha1daps42qn3xps7hvmj";
|
|
||||||
};
|
|
||||||
"elm-lang/html" = {
|
|
||||||
version = "2.0.0";
|
|
||||||
sha256 = "05sqjd5n8jnq4lv5v0ipcg98b8im1isnnl4wns1zzn4w5nbrjjzi";
|
|
||||||
};
|
|
||||||
"elm-lang/svg" = {
|
|
||||||
version = "2.0.0";
|
|
||||||
sha256 = "1c7p967n1yhynravqwgh80vprwz7r2r1n0x3icn5wzk9iaqs069l";
|
|
||||||
};
|
|
||||||
"elm-lang/core" = {
|
|
||||||
version = "5.0.0";
|
|
||||||
sha256 = "0gqyc09bh43pi7r2cizyjm5y0zpgarv3is17dl325qvxb9s1y2gn";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
{ mkDerivation, aeson, base, blaze-html, blaze-markup, bytestring
|
|
||||||
, cmdargs, containers, directory, elm-compiler, elm-package
|
|
||||||
, fetchgit, file-embed, filepath, fsnotify, mtl, process, snap-core
|
|
||||||
, snap-server, stdenv, template-haskell, text, time, transformers
|
|
||||||
, unordered-containers, utf8-string, websockets, websockets-snap
|
|
||||||
}:
|
|
||||||
mkDerivation {
|
|
||||||
pname = "elm-reactor";
|
|
||||||
version = "0.18";
|
|
||||||
src = fetchgit {
|
|
||||||
url = "https://github.com/elm-lang/elm-reactor";
|
|
||||||
sha256 = "0lpidsckyfcr8d6bln735d98dx7ga7j1vyssw0qsv8ijj18gxx65";
|
|
||||||
rev = "c519d4ec0aaf2f043a416fe858346b0181eca516";
|
|
||||||
};
|
|
||||||
isLibrary = false;
|
|
||||||
isExecutable = true;
|
|
||||||
executableHaskellDepends = [
|
|
||||||
aeson base blaze-html blaze-markup bytestring cmdargs containers
|
|
||||||
directory elm-compiler elm-package file-embed filepath fsnotify mtl
|
|
||||||
process snap-core snap-server template-haskell text time
|
|
||||||
transformers unordered-containers utf8-string websockets
|
|
||||||
websockets-snap
|
|
||||||
];
|
|
||||||
jailbreak = true;
|
|
||||||
homepage = http://elm-lang.org;
|
|
||||||
description = "Interactive development tool for Elm programs";
|
|
||||||
license = stdenv.lib.licenses.bsd3;
|
|
||||||
}
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
{ mkDerivation, base, concatenative, mtl, parsec, stdenv }:
|
||||||
|
mkDerivation {
|
||||||
|
pname = "indents";
|
||||||
|
version = "0.3.3";
|
||||||
|
sha256 = "b61f51ac894609cb5571cc3ded12db5de97185a8de236c69ec24c87457109f9a";
|
||||||
|
libraryHaskellDepends = [ base concatenative mtl parsec ];
|
||||||
|
doCheck = false;
|
||||||
|
homepage = "http://patch-tag.com/r/salazar/indents";
|
||||||
|
description = "indentation sensitive parser-combinators for parsec";
|
||||||
|
license = stdenv.lib.licenses.bsd3;
|
||||||
|
}
|
|
@ -1,13 +0,0 @@
|
||||||
# This file is auto-generated by ./update-elm.rb.
|
|
||||||
# Please, do not modify it by hand!
|
|
||||||
{ callPackage }:
|
|
||||||
{
|
|
||||||
version = "0.18.0";
|
|
||||||
packages = {
|
|
||||||
elm-compiler = callPackage ./elm-compiler.nix { };
|
|
||||||
elm-package = callPackage ./elm-package.nix { };
|
|
||||||
elm-make = callPackage ./elm-make.nix { };
|
|
||||||
elm-reactor = callPackage ./elm-reactor.nix { };
|
|
||||||
elm-repl = callPackage ./elm-repl.nix { };
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
cabal2nix https://github.com/elm/compiler --revision 32059a289d27e303fa1665e9ada0a52eb688f302 > 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
|
Loading…
Reference in New Issue