git.iko.soy/nixpkgs-stackage
on master help sign in
Add pure stackage2nix wrapper
commitb6ab45ea5a0ef64be9a9591eebebc214c8b877c2 authorDmitry Bushev <bushevdv@gmail.com> dateSun 17 Jun 2018, 20:10 (8 years ago) parentcc747c6
3 files changed+62−20
default.nix+2−2 stackage2nix/default.nix+28−18 stackage2nix/impure.nix+32
default.nix+2−2
@@ -18,12 +18,12 @@ in {
1818 };
1919 };
2020
21− stackage2nix = import ./stackage2nix {
21+ stackage2nix = import ./stackage2nix/impure.nix {
2222 cacheVersion = builtins.readFile ./cache-version.txt;
2323 inherit self;
2424 };
2525
26− stackage2nix-static = import ./stackage2nix {
26+ stackage2nix-static = import ./stackage2nix/impure.nix {
2727 drv =
2828 let
2929 stackagePackages = import ./stackage2nix/stackage-packages.nix { nixpkgs = self; };
stackage2nix/default.nix+28−18
@@ -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}
stackage2nix/impure.nixnew file+32
@@ -0,0 +1,32 @@
1+{ self
2+, cacheVersion
3+, drv ? null }:
4+
5+let
6+ inherit (self) callPackage makeWrapper stdenv nix nix-prefetch-scripts;
7+
8+ stackage2nix = if drv == null
9+ then
10+ self.haskell.lib.disableSharedExecutables
11+ (import ./stackage-packages.nix { nixpkgs = self; }).stackage2nix
12+ else
13+ drv;
14+
15+ lib = callPackage ./lib.nix { inherit cacheVersion; };
16+
17+in stdenv.mkDerivation rec {
18+ name = "stackage2nix-${version}";
19+ version = stackage2nix.version;
20+ phases = [ "installPhase" "fixupPhase" ];
21+ buildInputs = [ makeWrapper ];
22+
23+ installPhase = ''
24+ mkdir -p $out/bin
25+ 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"
31+ '';
32+}