Skip to content

Instantly share code, notes, and snippets.

@manveru
Created May 31, 2018 08:34
Show Gist options
  • Save manveru/def9455fe5e6518b071a39cc7f0d87b8 to your computer and use it in GitHub Desktop.
Save manveru/def9455fe5e6518b071a39cc7f0d87b8 to your computer and use it in GitHub Desktop.
exact-dependencies = import ../elm-stuff/exact-dependencies.nix;
elmStuffPackages = lib.mapAttrs (name: info:
{
drv = stdenv.mkDerivation {
name = lib.replaceChars ["/"] ["-"] name + "-${info.version}";
src = fetchurl {
inherit (info) sha256 url;
};
phases = [ "unpackPhase" "installPhase" ];
installPhase = ''
mkdir -p $out
cp -r * $out
'';
meta.homepage = "https://github.com/${name}/";
};
inherit name;
version = info.version;
}
) exact-dependencies;
elmPackagesTreeMaker = lib.concatStrings (builtins.map (package: ''
mkdir -p ${package.name}
ln -s ${package.drv} ${package.name}/${package.version}
'') ( lib.attrValues elmStuffPackages ) );
elm-stuff-packages = stdenv.mkDerivation {
name = "elm-stuff-packages";
phases = ["installPhase"];
installPhase = ''
mkdir -p $out
cd $out
${elmPackagesTreeMaker}
'';
};
main-js = stdenv.mkDerivation {
name = "main-js";
buildInputs = [elmPackages.elm];
phases = ["buildPhase"];
buildPhase = ''
mkdir -p $out/{tmp,elm-stuff}
cd $out
ln -s ${elm-stuff-packages} elm-stuff/packages
ln -s ${../elm-stuff/exact-dependencies.json} elm-stuff/exact-dependencies.json
ln -s ${../elm-package.json} elm-package.json
ln -s ${../Main.elm} Main.elm
HOME=$out/tmp elm make --output main.js Main.elm
rm -rf tmp elm-stuff
'';
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment