@@ -1,14 +1,63 @@
1self: super:
1self: super:
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);
4 haskell = super.haskell // {
13 haskell = super.haskell // {
5 packages = super.haskell.packages // {
14 packages = super.haskell.packages // {
6 stackage = super.callPackage ./stackage {};
15 stackage = super.callPackage ./stackage {};
10− stackage2nix = import ./stackage2nix {
19+ stackage2nix = super.callPackage ./stackage2nix {
11− nixpkgs = self;
20+ stackage2nix = super.haskell.lib.disableSharedExecutables
21+ (self.haskell.packages.stackage.lts-100.callPackage ./stackage2nix/stackage2nix.nix{});
22+ cacheVersion = builtins.readFile ./cache-version.txt;
25+ stackage2nix-static = super.callPackage ./stackage2nix {
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"
37+ buildStaticExecutable = drv:
38+ super.haskell.lib.appendConfigureFlag (super.haskell.lib.disableSharedExecutables drv) staticConfigureFlags;
40+ buildStaticExecutable
41+ (self.haskell.packages.stackage.lts-100.callPackage ./stackage2nix/stackage2nix.nix{});
12 cacheVersion = builtins.readFile ./cache-version.txt;
42 cacheVersion = builtins.readFile ./cache-version.txt;
45+ icu-static = super.icu.overrideAttrs (attrs: {
46+ dontDisableStatic = true;
47+ configureFlags = normalizedConfigureFlags attrs.configureFlags ++ [ "--enable-static" ];
48+ outputs = attrs.outputs ++ [ "static" ];
50+ moveToOutput "lib/*.a" "$static"
51+ '' + attrs.postInstall;
54+ openssl-static = super.openssl.overrideAttrs (attrs: {
55+ dontDisableStatic = true;
56+ outputs = attrs.outputs ++ [ "static" ];
58+ mkdir -p $static/lib;
59+ moveToOutput "*.a" "$static/lib";
60+ '' + attrs.postInstall;