diff options
author | Matt McHenry <github@matt.mchenryfamily.org> | 2018-11-18 15:07:31 -0500 |
---|---|---|
committer | Domen Kožar <domen@enlambda.com> | 2018-11-21 10:57:11 +0000 |
commit | 206a1c00baea8678dcce8c75dcc3df48ba59539b (patch) | |
tree | edfa6b9f78ba70eb54ef4404b4eef031ef243169 /pkgs/development/compilers/elm | |
parent | ae69f79ddbb6ddc6a7ba8830af2aeec1427dc321 (diff) | |
download | nixpkgs-206a1c00baea8678dcce8c75dcc3df48ba59539b.tar nixpkgs-206a1c00baea8678dcce8c75dcc3df48ba59539b.tar.gz nixpkgs-206a1c00baea8678dcce8c75dcc3df48ba59539b.tar.bz2 nixpkgs-206a1c00baea8678dcce8c75dcc3df48ba59539b.tar.lz nixpkgs-206a1c00baea8678dcce8c75dcc3df48ba59539b.tar.xz nixpkgs-206a1c00baea8678dcce8c75dcc3df48ba59539b.tar.zst nixpkgs-206a1c00baea8678dcce8c75dcc3df48ba59539b.zip |
elm: extract makeDotElm and fetchElmDeps
Diffstat (limited to 'pkgs/development/compilers/elm')
-rw-r--r-- | pkgs/development/compilers/elm/default.nix | 40 | ||||
-rw-r--r-- | pkgs/development/compilers/elm/fetchElmDeps.nix | 11 | ||||
-rw-r--r-- | pkgs/development/compilers/elm/makeDotElm.nix | 30 |
3 files changed, 47 insertions, 34 deletions
diff --git a/pkgs/development/compilers/elm/default.nix b/pkgs/development/compilers/elm/default.nix index e9678ddc4ca..47a0d459a93 100644 --- a/pkgs/development/compilers/elm/default.nix +++ b/pkgs/development/compilers/elm/default.nix @@ -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; diff --git a/pkgs/development/compilers/elm/fetchElmDeps.nix b/pkgs/development/compilers/elm/fetchElmDeps.nix new file mode 100644 index 00000000000..3da2445e0c5 --- /dev/null +++ b/pkgs/development/compilers/elm/fetchElmDeps.nix @@ -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) diff --git a/pkgs/development/compilers/elm/makeDotElm.nix b/pkgs/development/compilers/elm/makeDotElm.nix new file mode 100644 index 00000000000..1bc8e61d27c --- /dev/null +++ b/pkgs/development/compilers/elm/makeDotElm.nix @@ -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 + '' |