{ nixpkgs ? , config ? {} }: with (import nixpkgs config); let mkDerivation = { srcs ? ./elm-srcs.nix , src , name , srcdir ? "./src" , targets ? [] , registryDat ? ./registry.dat , outputJavaScript ? true }: stdenv.mkDerivation { inherit name src; buildInputs = [ elmPackages.elm ]; buildPhase = pkgs.elmPackages.fetchElmDeps { elmPackages = import srcs; elmVersion = "0.19.1"; inherit registryDat; }; installPhase = let elmfile = module: "${srcdir}/${builtins.replaceStrings ["."] ["/"] module}.elm"; extension = if outputJavaScript then "js" else "html"; in '' mkdir -p $out/share/doc ${lib.concatStrings (map (module: '' echo "compiling ${elmfile module}" elm make ${elmfile module} --output $out/${module}.${extension} '') targets)} cp *.html $out cp *.css $out cp -r example $out/ ''; }; in mkDerivation { name = "picarones"; srcs = ./elm-srcs.nix; src = ./.; targets = ["Main"]; srcdir = "./src"; outputJavaScript = true; }