@@ -1,14 +1,63 @@
11self: super:
22
3−{
3+let
4+
5+ # from pkgs/stdenv/generic/make-derivation.nix
6+ # This parameter is sometimes a string, sometimes null, and sometimes a list, yuck
7+ normalizedConfigureFlags = configureFlags: let inherit (super) lib; in
8+ (/**/ if lib.isString configureFlags then [configureFlags]
9+ else if configureFlags == null then []
10+ else configureFlags);
11+
12+in {
413 haskell = super.haskell // {
514 packages = super.haskell.packages // {
615 stackage = super.callPackage ./stackage {};
716 };
817 };
918
10− stackage2nix = import ./stackage2nix {
11− nixpkgs = self;
19+ stackage2nix = super.callPackage ./stackage2nix {
20+ stackage2nix = super.haskell.lib.disableSharedExecutables
21+ (self.haskell.packages.stackage.lts-100.callPackage ./stackage2nix/stackage2nix.nix{});
22+ cacheVersion = builtins.readFile ./cache-version.txt;
23+ };
24+
25+ stackage2nix-static = super.callPackage ./stackage2nix {
26+ stackage2nix =
27+ let
28+ staticConfigureFlags = super.lib.concatStringsSep " " [
29+ "--ghc-option=-optl=-static"
30+ "--ghc-option=-optl=-pthread"
31+ "--ghc-option=-optl=-L${super.glibc.static}/lib"
32+ "--ghc-option=-optl=-L${super.gmp5.static}/lib"
33+ "--ghc-option=-optl=-L${self.icu-static.static}/lib"
34+ "--ghc-option=-optl=-L${self.openssl-static.static}/lib"
35+ "--ghc-option=-optl=-L${super.zlib.static}/lib"
36+ ];
37+ buildStaticExecutable = drv:
38+ super.haskell.lib.appendConfigureFlag (super.haskell.lib.disableSharedExecutables drv) staticConfigureFlags;
39+ in
40+ buildStaticExecutable
41+ (self.haskell.packages.stackage.lts-100.callPackage ./stackage2nix/stackage2nix.nix{});
1242 cacheVersion = builtins.readFile ./cache-version.txt;
1343 };
44+
45+ icu-static = super.icu.overrideAttrs (attrs: {
46+ dontDisableStatic = true;
47+ configureFlags = normalizedConfigureFlags attrs.configureFlags ++ [ "--enable-static" ];
48+ outputs = attrs.outputs ++ [ "static" ];
49+ postInstall = ''
50+ moveToOutput "lib/*.a" "$static"
51+ '' + attrs.postInstall;
52+ });
53+
54+ openssl-static = super.openssl.overrideAttrs (attrs: {
55+ dontDisableStatic = true;
56+ outputs = attrs.outputs ++ [ "static" ];
57+ postInstall = ''
58+ mkdir -p $static/lib;
59+ moveToOutput "*.a" "$static/lib";
60+ '' + attrs.postInstall;
61+ });
62+
1463}