@@ -224,15 +224,16 @@ self: super: {
224224 # stack-to-nix or plan-to-nix to prevent them
225225 # from needing network access.
226226 mkCacheFile = repos: let
227− fetchRepo = repo: (self.buildPackages.pkgs.fetchgit {
228− url = repo.url;
229− rev = repo.rev;
230− sha256 = repo.sha256;
231− }) + (if repo.subdir or "." == "." then "" else "/" + repo.subdir);
232−
233− f = { name, url, rev, subdir ? ".", sha256, cabal-file ? "${name}.cabal" }@repo:
234− let nix-expr = self.buildPackages.haskell-nix.callCabalToNix { src = (fetchRepo repo); inherit name cabal-file; };
235− in "${url} ${rev} ${subdir} ${sha256} ${name} ${nix-expr}";
227+ fetchRepo = repo: (self.buildPackages.pkgs.fetchgit { inherit (repo) url sha256 rev; }) + (if repo.subdir or "." == "." then "" else "/" + repo.subdir);
228+
229+ f = { name, url, rev, subdir ? ".", sha256, cabal-file ? "${name}.cabal", type ? "cabal" }@repo:
230+ let nix-expr =
231+ if type == "cabal"
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";
236+ in "${url} ${rev} ${subdir} ${sha256} ${name} ${nix-expr}";
236237 in
237238 self.buildPackages.pkgs.writeTextFile {
238239 name = "cache-file";