git.iko.soy/nixpkgs-stackage
on master help sign in
Add stackage2nix-static
2b0b244Dmitry Bushev
haskell-overlay.nix+52−3
@@ -1,14 +1,63 @@
1self: super:
1self: super:
2
2
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+
3−{
12+in {
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 {};
7 };
16 };
8 };
17 };
9
18
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;
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{});
12 cacheVersion = builtins.readFile ./cache-version.txt;
42 cacheVersion = builtins.readFile ./cache-version.txt;
13 };
43 };
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+
14}
63}
stackage2nix/README.mddeleted−16
@@ -1,16 +0,0 @@
1−# stackage2nix
2−
3−Directory contains ready-to-use `stackage2nix` wrapper with
4−`--all-cabal-hashes` and `--lts-haskell` flags set up. It also has all
5−required executables on `PATH`.
6−
7−## haskell-packages-private
8−
9−Directory contains Stackage LTS packages needed to build `stackage2nix` wrapper.
10−
11−TODO: should be replaced with LTS packages from this repo.
12−
13−## lib.nix
14−
15−Provides Nix expressions for `hackage-db`, `all-cabal-hashes` and `lts-haskell`
16−sources.
stackage2nix/default.nix+2−6
@@ -1,12 +1,8 @@
1−{ nixpkgs ? import ../default.nix {}
1+{ callPackage, makeWrapper, stdenv, nix, nix-prefetch-scripts
2−, cacheVersion }:
2+, stackage2nix, cacheVersion }:
3
3
4−with nixpkgs;
5let
4let
6 lib = callPackage ./lib.nix { inherit cacheVersion; };
5 lib = callPackage ./lib.nix { inherit cacheVersion; };
7− haskellPackages = haskell.packages.stackage.lts-100;
8− stackage2nix = haskell.lib.disableSharedExecutables
9− (haskellPackages.callPackage ./stackage2nix.nix {});
10in stdenv.mkDerivation rec {
6in stdenv.mkDerivation rec {
11 name = "stackage2nix-${version}";
7 name = "stackage2nix-${version}";
12 version = stackage2nix.version;
8 version = stackage2nix.version;