git.iko.soy/nixpkgs-stackage
on master help sign in
Update examples
81b64aaDmitry Bushev
default.nix+3−1
@@ -20,7 +20,9 @@ in {
20 };
20 };
21 };
21 };
22
22
23+ stackage2nix = self.callPackage ./stackage2nix {
23− stackage2nix = super.haskell.lib.disableSharedExecutables stackage2nixPackages.stackage2nix;
24+ drv = super.haskell.lib.disableSharedExecutables stackage2nixPackages.stackage2nix;
25+ };
24
26
25 stackage2nixWrapper = import ./stackage2nix/impure.nix {
27 stackage2nixWrapper = import ./stackage2nix/impure.nix {
26 cacheVersion = builtins.readFile ./cache-version.txt;
28 cacheVersion = builtins.readFile ./cache-version.txt;
examples/example.nix+1−3
@@ -11,8 +11,6 @@ let
11
11
12 stackage2nixSrc = pkgs.fetchFromGitHub (lib.importJSON ./stackage2nix.json);
12 stackage2nixSrc = pkgs.fetchFromGitHub (lib.importJSON ./stackage2nix.json);
13
13
14− stackage = nixpkgs.haskell.packages.stackage.lib.callStackage2nix "stackage2nix" stackage2nixSrc {
14+ stackage = nixpkgs.haskell.packages.stackage.lib.callStackage2nix "stackage2nix" stackage2nixSrc;
15− inherit nixpkgs;
16− };
17in
15in
18 stackage
16 stackage
examples/nixpkgs-pinned.nix+3−3
@@ -6,10 +6,10 @@
6
6
7let
7let
8 _pkgs = import <nixpkgs> {};
8 _pkgs = import <nixpkgs> {};
9− _pkgsPath = _pkgs.fetchFromGitHub (_pkgs.lib.importJSON ./nixpkgs.json);
9+ _pkgsPath = _pkgs.fetchFromGitHub (_pkgs.lib.importJSON ../nixpkgs.json);
10− _stackageOverlayPath = _pkgs.fetchFromGitHub (_pkgs.lib.importJSON ./nixpkgs-stackage.json);
10+ _stackageOverlayLocal = ../.;
11in
11in
12 import _pkgsPath ({
12 import _pkgsPath ({
13− overlays = [ (import _stackageOverlayPath) ] ++ overlays;
13+ overlays = [ (import _stackageOverlayLocal) ] ++ overlays;
14 config = config // { allowUnfree = true; };
14 config = config // { allowUnfree = true; };
15 } // (if system != null then { inherit system; } else { }))
15 } // (if system != null then { inherit system; } else { }))
examples/nixpkgs-stackage.jsondeleted−6
@@ -1,6 +0,0 @@
1−{
2− "owner": "4e6",
3− "repo": "nixpkgs-stackage",
4− "rev": "2a6c3ecb5f0015491e2a6626d5c89aec2d75defc",
5− "sha256": "1065v9pyi9c30qb7rq0wfpdixwn5kv0h4dziabppy406grxpmrg4"
6−}
examples/nixpkgs.jsondeleted−6
@@ -1,6 +0,0 @@
1−{
2− "owner": "NixOS",
3− "repo": "nixpkgs-channels",
4− "rev": "66b4de79e3841530e6d9c6baf98702aa1f7124e4",
5− "sha256": "1l3lwi944hnxka0nfq9a1g86xhc0b8hzqr2fm6cvds33gj26l0g4"
6−}
examples/stackage2nix.json+2−2
@@ -1,6 +1,6 @@
1{
1{
2 "owner": "typeable",
2 "owner": "typeable",
3 "repo": "stackage2nix",
3 "repo": "stackage2nix",
4− "rev": "7bd086b41252e293af1b3d8a15e6b53bc63230bf",
4+ "rev": "8d6e70044a4bafa0f8d5bdc011ac00634549a13b",
5− "sha256": "06hyma8cxncv2l6icdaf2dwh2mxjbgds6l2z2x8kp25gq2qlqx1r"
5+ "sha256": "1lcs8ii0nqlyg1lj50zjabw8z4crkk59dpfyykpxraa9whkklg4d"
6}
6}
lib.nix+20−7
@@ -5,11 +5,9 @@ rec {
5 stackage2nixGeneric = { drv, pname, installPhase, name, src }:
5 stackage2nixGeneric = { drv, pname, installPhase, name, src }:
6 stdenv.mkDerivation {
6 stdenv.mkDerivation {
7
7
8− inherit installPhase;
9−
10 name = "${pname}-${name}";
8 name = "${pname}-${name}";
11
9
12− phases = ["installPhase"];
10+ phases = [ "installPhase" ];
13 buildInputs = [ drv ];
11 buildInputs = [ drv ];
14 preferLocalBuild = true;
12 preferLocalBuild = true;
15
13
@@ -17,6 +15,7 @@ rec {
17 LANG = "en_US.UTF-8";
15 LANG = "en_US.UTF-8";
18 LOCALE_ARCHIVE = lib.optionalString stdenv.isLinux "${glibcLocales}/lib/locale/locale-archive";
16 LOCALE_ARCHIVE = lib.optionalString stdenv.isLinux "${glibcLocales}/lib/locale/locale-archive";
19
17
18+ inherit installPhase;
20 };
19 };
21
20
22 stackage2nixWrapperSrc = { name, src }: stackage2nixGeneric {
21 stackage2nixWrapperSrc = { name, src }: stackage2nixGeneric {
@@ -32,9 +31,22 @@ rec {
32 inherit name src;
31 inherit name src;
33 };
32 };
34
33
35− stackage2nixSrc = { name, src, stackage-lts, all-cabal-hashes, hackage-db }: stackage2nixGeneric {
34+ stackage2nixSrc = { name, src }: stackage2nixGeneric {
36 drv = stackage2nix;
35 drv = stackage2nix;
37 pname = "stackage2nix";
36 pname = "stackage2nix";
37+ installPhase = ''
38+ export HOME="$TMP"
39+ mkdir -p $out
40+ cd $out
41+ stackage2nix "${src}"
42+ '';
43+
44+ inherit name src;
45+ };
46+
47+ stackage2nixSrcArgs = { name, src, stackage-lts, all-cabal-hashes, hackage-db }: stackage2nixGeneric {
48+ drv = stackage2nix;
49+ pname = "stackage2nixArgs";
38 installPhase = ''
50 installPhase = ''
39 export HOME="$TMP"
51 export HOME="$TMP"
40 mkdir -p $out
52 mkdir -p $out
@@ -45,10 +57,11 @@ rec {
45 inherit name src;
57 inherit name src;
46 };
58 };
47
59
60+ callStackage2nix = name: src: import (stackage2nixSrc { inherit name src; });
61+
48 callStackage2nixWrapper = name: src: import (stackage2nixWrapperSrc { inherit name src; });
62 callStackage2nixWrapper = name: src: import (stackage2nixWrapperSrc { inherit name src; });
49
63
50− callStackage2nix = name: src: stackage-lts: all-cabal-hashes: hackage-db: import stackage2nixSrc {
64+ callStackage2nixArgs = name: src: stackage-lts: all-cabal-hashes: hackage-db:
51− inherit name src stackage-lts all-cabal-hashes hackage-db;
65+ import (stackage2nixSrcArgs { inherit name src stackage-lts all-cabal-hashes hackage-db; });
52− };
53
66
54}
67}
nixpkgs.json+2−2
@@ -1,6 +1,6 @@
1{
1{
2 "owner": "NixOS",
2 "owner": "NixOS",
3 "repo": "nixpkgs-channels",
3 "repo": "nixpkgs-channels",
4− "rev": "06c576b0525da85f2de86b3c13bb796d6a0c20f6",
4+ "rev": "f3c913d466f1994192f758002a6bbb796bda05ef",
5− "sha256": "01cra89drfjf3yhii5na0j5ivap2wcs0h8i0xcxrjs946nk4pp5j"
5+ "sha256": "0vvg523xqrcvs4myrqs91lg1v4kb5spq6vi0hfrmxf3x27yxfh9b"
6}
6}
stackage2nix/default.nix+7−32
@@ -1,42 +1,17 @@
1−{ nixpkgs ? import <nixpkgs> {}
1+{ stdenv, makeWrapper, nix, nix-prefetch-scripts
2−, stackage-nightly ? null
2+, drv
3−, stackage-lts
4−, all-cabal-hashes
5−, hackage-db
6}:
3}:
7
4
8−let
9− inherit (nixpkgs) pkgs stdenv makeWrapper runCommand;
10−
11− stackagePackages = import ./stackage-packages.nix { inherit nixpkgs; };
12− stackage2nix = pkgs.haskell.lib.disableSharedExecutables stackagePackages.stackage2nix;
13−
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 {
5+stdenv.mkDerivation rec {
28 name = "stackage2nix-${version}";
6 name = "stackage2nix-${version}";
29− version = stackage2nix.version;
7+ version = drv.version;
30 phases = [ "installPhase" "fixupPhase" ];
8 phases = [ "installPhase" "fixupPhase" ];
31 buildInputs = [ makeWrapper ];
9 buildInputs = [ makeWrapper ];
32
10
33 installPhase = ''
11 installPhase = ''
34 mkdir -p $out/bin
12 mkdir -p $out/bin
35− makeWrapper ${stackage2nix}/bin/stackage2nix $out/bin/stackage2nix \
13+ makeWrapper ${drv}/bin/stackage2nix $out/bin/stackage2nix \
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" \
14+ --prefix PATH ":" "${nix}/bin" \
40− --prefix PATH ":" "${pkgs.nix-prefetch-scripts}/bin"
15+ --prefix PATH ":" "${nix-prefetch-scripts}/bin"
41 '';
16 '';
42}
17}