git.iko.soy/typeable/nixpkgs-stackage
on master help sign in
Add stackage update script
commit6612d526f85bf8b920bad75141c638c051bb6f61 authorDmitry Bushev <bushevdv@gmail.com> dateTue 19 Dec 2017, 22:19 (9 years ago) parentf2c3749
5 files changed+58−28
.gitignore+1 default.nix+7 generate-stackage/default.nix−24 stackage2nix/haskell-packages-private/default.nix+8−4 update.nix+42
.gitignorenew file+1
@@ -0,0 +1 @@
1+/result*
default.nixnew file+7
@@ -0,0 +1,7 @@
1+# Nixpkgs overlay which aggregates overlays for tools and products
2+
3+{ nixpkgs ? import <nixpkgs> {}}:
4+
5+with nixpkgs.lib;
6+let haskellOverlay = import ./haskell-overlay.nix;
7+in fix (extends haskellOverlay (_: nixpkgs))
generate-stackage/default.nixdeleted−24
@@ -1,24 +0,0 @@
1−{ nixpkgs ? import <nixpkgs> {}
2−, lts ? "lts-9.0" }:
3−
4−with nixpkgs;
5−let
6− lib = callPackage ../lib.nix {};
7− stackage2nix = import ../stackage2nix { inherit nixpkgs; };
8−in stdenv.mkDerivation {
9− name = "stackage";
10− phases = [ "installPhase" ];
11− buildInputs = [ stackage2nix ];
12−
13− installPhase = ''
14− export HOME=$TMP
15− mkdir -p $out
16− pushd $out
17− stackage2nix --resolver ${lts}
18− popd
19− '';
20−
21− LANG="en_US.UTF-8";
22− SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt";
23− NIX_PATH="nixpkgs=${nixpkgs.path}";
24−}
stackage2nix/haskell-packages-private/default.nix+8−4
@@ -8,7 +8,7 @@ let
88 stackageConfig = callPackage ./configuration-packages.nix {};
99 stackPackages =
1010 { pkgs, stdenv, callPackage }:
11−
11+
1212 self: {
1313 "Cabal" = callPackage
1414 ({ mkDerivation, array, base, binary, bytestring, containers
@@ -130,7 +130,11 @@ let
130130 mkDerivation {
131131 pname = "stackage2nix";
132132 version = "0.3.0";
133− src = ../../.;
133+ src = fetchgit {
134+ url = "https://github.com/typeable/stackage2nix.git";
135+ rev = "313ed5191d3f7a53c78f8c657a5cfbb8ea0b706d";
136+ sha256 = "09205wnlkxk0abl1afrc7rlg27fvj5x0307cc9klp2nmi7v6knn3";
137+ };
134138 isLibrary = true;
135139 isExecutable = true;
136140 libraryHaskellDepends = [
@@ -151,12 +155,12 @@ let
151155 license = stdenv.lib.licenses.bsd3;
152156 }) {};
153157 };
154−
158+
155159 pkgOverrides = self: stackPackages {
156160 inherit pkgs stdenv;
157161 inherit (self) callPackage;
158162 };
159−
163+
160164in callPackage (nixpkgs.path + "/pkgs/development/haskell-modules") {
161165 ghc = pkgs.haskell.compiler.ghc802;
162166 compilerConfig = self: extends pkgOverrides (extends stackageConfig (stackagePackages self));
update.nixnew file+42
@@ -0,0 +1,42 @@
1+{ nixpkgs ? import <nixpkgs> {} }:
2+
3+let
4+ # TODO define pkgsTypeable
5+ pkgs = import ./default.nix { inherit nixpkgs; };
6+ lib = pkgs.callPackage ./stackage2nix/lib.nix {};
7+ # updateScript = pkgs.callPackage ./update-stackage/update.nix { inherit (lib) stackage-lts; };
8+in pkgs.stdenv.mkDerivation rec {
9+ name = "nixpkgs-typeable-update-script";
10+
11+ buildCommand = ''
12+ echo "Update failed"
13+ exit 1
14+ '';
15+
16+ updateScriptSh = ''
17+ pushd stackage
18+ # iterate throuch stackage-lts configs
19+ for conf in ${lib.stackage-lts}/*.yaml; do
20+ resolver=$(basename --suffix='.yaml' $conf)
21+ if [ $resolver = 'lts-9.1' ] && [ ! -d $resolver ]; then
22+ mkdir $resolver
23+ pushd $resolver
24+ (set -x; ${pkgs.stackage2nix}/bin/stackage2nix --resolver $resolver)
25+ popd
26+ fi
27+ done
28+ popd # stackage
29+ '';
30+
31+ shellHook = ''
32+ echo "Running ${name}"
33+ ${updateScriptSh}
34+ EXIT_CODE=$?
35+ if [ "$EXIT_CODE" != "0" ]; then
36+ echo 'ERROR: update-script'
37+ exit $EXIT_CODE
38+ fi
39+ echo 'OK: update-script'
40+ exit 0
41+ '';
42+}