elm: extract makeDotElm and fetchElmDeps

This commit is contained in:
Matt McHenry 2018-11-18 15:07:31 -05:00 committed by Domen Kožar
parent ae69f79ddb
commit 206a1c00ba
3 changed files with 47 additions and 34 deletions

@ -51,46 +51,17 @@
# that the default of ~/.elm isn't used.
let
makeDotElm = ver: deps:
let versionsDat = ./versions.dat;
cmds = lib.mapAttrsToList (name: info: let
pkg = stdenv.mkDerivation {
name = lib.replaceChars ["/"] ["-"] name + "-${info.version}";
src = fetchurl {
url = "https://github.com/${name}/archive/${info.version}.tar.gz";
meta.homepage = "https://github.com/${name}/";
inherit (info) sha256;
};
phases = [ "unpackPhase" "installPhase" ];
installPhase = ''
mkdir -p $out
cp -r * $out
'';
};
in ''
mkdir -p .elm/${ver}/package/${name}
cp -R ${pkg} .elm/${ver}/package/${name}/${info.version}
'') deps;
in (lib.concatStrings cmds) + ''
mkdir -p .elm/${ver}/package;
cp ${versionsDat} .elm/${ver}/package/versions.dat;
chmod -R +w .elm
'';
fetchElmDeps = import ./fetchElmDeps.nix { inherit stdenv lib fetchurl; };
hsPkgs = haskell.packages.ghc822.override {
overrides = self: super: with haskell.lib;
let elmPkgs = {
elm = overrideCabal (self.callPackage ./packages/elm.nix { }) (drv: {
# 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));
preConfigure = fetchElmDeps {
elmPackages = (import ./packages/elm-elm.nix);
versionsDat = ./versions.dat;
};
buildTools = drv.buildTools or [] ++ [ makeWrapper ];
patches = [
(fetchpatch {
@ -111,6 +82,7 @@ let
`pacakge/nix/build.sh`
*/
elm-format = self.callPackage ./packages/elm-format.nix {};
inherit fetchElmDeps;
};
in elmPkgs // {
inherit elmPkgs;

@ -0,0 +1,11 @@
{stdenv, lib, fetchurl}:
{elmPackages, versionsDat}:
let
makeDotElm = import ./makeDotElm.nix {inherit stdenv lib fetchurl versionsDat;};
in
''
export ELM_HOME=`pwd`/.elm
'' + (makeDotElm "0.19.0" elmPackages)

@ -0,0 +1,30 @@
{stdenv, lib, fetchurl, versionsDat}:
ver: deps:
let cmds = lib.mapAttrsToList (name: info: let
pkg = stdenv.mkDerivation {
name = lib.replaceChars ["/"] ["-"] name + "-${info.version}";
src = fetchurl {
url = "https://github.com/${name}/archive/${info.version}.tar.gz";
meta.homepage = "https://github.com/${name}/";
inherit (info) sha256;
};
phases = [ "unpackPhase" "installPhase" ];
installPhase = ''
mkdir -p $out
cp -r * $out
'';
};
in ''
mkdir -p .elm/${ver}/package/${name}
cp -R ${pkg} .elm/${ver}/package/${name}/${info.version}
'') deps;
in (lib.concatStrings cmds) + ''
mkdir -p .elm/${ver}/package;
cp ${versionsDat} .elm/${ver}/package/versions.dat;
chmod -R +w .elm
''