@@ -224,15 +224,16 @@ self: super: {
224 # stack-to-nix or plan-to-nix to prevent them
224 # stack-to-nix or plan-to-nix to prevent them
225 # from needing network access.
225 # from needing network access.
226 mkCacheFile = repos: let
226 mkCacheFile = repos: let
227− fetchRepo = repo: (self.buildPackages.pkgs.fetchgit {
227+ fetchRepo = repo: (self.buildPackages.pkgs.fetchgit { inherit (repo) url sha256 rev; }) + (if repo.subdir or "." == "." then "" else "/" + repo.subdir);
230− sha256 = repo.sha256;
231− }) + (if repo.subdir or "." == "." then "" else "/" + repo.subdir);
233− f = { name, url, rev, subdir ? ".", sha256, cabal-file ? "${name}.cabal" }@repo:
229+ f = { name, url, rev, subdir ? ".", sha256, cabal-file ? "${name}.cabal", type ? "cabal" }@repo:
234− let nix-expr = self.buildPackages.haskell-nix.callCabalToNix { src = (fetchRepo repo); inherit name cabal-file; };
232+ then self.buildPackages.haskell-nix.callCabalToNix { src = (fetchRepo repo); inherit name cabal-file; }
233+ else if type == "stack"
234+ then (self.buildPackages.haskell-nix.callStackToNix { src = (fetchRepo repo); inherit name subdir; }).projectNix
235+ else throw "Unknown type '${type}` for a cache entry";
235− in "${url} ${rev} ${subdir} ${sha256} ${name} ${nix-expr}";
236+ in "${url} ${rev} ${subdir} ${sha256} ${name} ${nix-expr}";
237 self.buildPackages.pkgs.writeTextFile {
238 self.buildPackages.pkgs.writeTextFile {
238 name = "cache-file";
239 name = "cache-file";