@@ -1,20 +1,30 @@
1−{ self
2−, cacheVersion
3−, drv ? null }:
1+{ nixpkgs ? import <nixpkgs> {}
2+, stackage-nightly ? null
3+, stackage-lts
4+, all-cabal-hashes
5+, hackage-db
6+}:
47
58let
6− inherit (self) callPackage makeWrapper stdenv nix nix-prefetch-scripts;
9+ inherit (nixpkgs) pkgs stdenv makeWrapper runCommand;
710
8− stackage2nix = if drv == null
9− then
10− self.haskell.lib.disableSharedExecutables
11− (import ./stackage-packages.nix { nixpkgs = self; }).stackage2nix
12− else
13− drv;
11+ stackagePackages = import ./stackage-packages.nix { inherit nixpkgs; };
12+ stackage2nix = pkgs.haskell.lib.disableSharedExecutables stackagePackages.stackage2nix;
1413
15− lib = callPackage ./lib.nix { inherit cacheVersion; };
16−
17−in stdenv.mkDerivation rec {
14+ stackageAll = runCommand "stackage-all" { }
15+ ''
16+ mkdir $out
17+ for file in ${stackage-lts}/*.yaml
18+ do
19+ ln -s $file $out
20+ done
21+ '' + stdenv.lib.optionalString (stackage-nightly != null) ''
22+ for file in ${stackage-nightly}/*.yaml
23+ do
24+ ln -s $file $out
25+ done
26+ '';
27+in pkgs.stdenv.mkDerivation rec {
1828 name = "stackage2nix-${version}";
1929 version = stackage2nix.version;
2030 phases = [ "installPhase" "fixupPhase" ];
@@ -23,10 +33,10 @@ in stdenv.mkDerivation rec {
2333 installPhase = ''
2434 mkdir -p $out/bin
2535 makeWrapper ${stackage2nix}/bin/stackage2nix $out/bin/stackage2nix \
26− --add-flags "--all-cabal-hashes ${lib.all-cabal-hashes}" \
27− --add-flags "--lts-haskell ${lib.stackage-lts}" \
28− --add-flags "--hackage-db ${lib.hackage-db}/01-index.tar" \
29− --prefix PATH ":" "${nix}/bin" \
30− --prefix PATH ":" "${nix-prefetch-scripts}/bin"
36+ --add-flags "--all-cabal-hashes ${all-cabal-hashes}" \
37+ --add-flags "--lts-haskell ${stackageAll}" \
38+ --add-flags "--hackage-db ${hackage-db}" \
39+ --prefix PATH ":" "${pkgs.nix}/bin" \
40+ --prefix PATH ":" "${pkgs.nix-prefetch-scripts}/bin"
3141 '';
3242}