summaryrefslogtreecommitdiff
path: root/stdenv_prefix/example.nix
diff options
context:
space:
mode:
Diffstat (limited to 'stdenv_prefix/example.nix')
-rw-r--r--stdenv_prefix/example.nix34
1 files changed, 32 insertions, 2 deletions
diff --git a/stdenv_prefix/example.nix b/stdenv_prefix/example.nix
index 0d4aa65..be66db7 100644
--- a/stdenv_prefix/example.nix
+++ b/stdenv_prefix/example.nix
@@ -1,8 +1,29 @@
1{ storepath_length ? 30, storepath_chunks ? 4, pkgs ? import <nixpkgs> { 1{ storepath_length ? 42, storepath_chunks ? 6, pkgs ? import <nixpkgs> {
2 overlays = [
3 (self: super: {
4 zstd = super.zstd.overrideAttrs (old: {
5 postPatch = old.postPatch + ''
6 sed -i 149d build/cmake/lib/CMakeLists.txt
7 '';
8 });
9 glibcLocales = super.glibcLocales.overrideAttrs (old: let
10 libc = self.buildPackages.stdenv.cc.libc;
11 in {
12 buildPhase = ''
13 mkdir -vp "$TMPDIR/${libc.new-out}/lib/locale"
14 '' + old.buildPhase;
15 installPhase = ''
16 rmdir $TMPDIR/"${libc.out}/lib/locale"
17 ln -s "$TMPDIR/${libc.new-out}/lib/locale" $TMPDIR/"${libc.out}/lib/locale"
18 '' + old.installPhase;
19 });
20 })
21 ];
2 stdenvStages = { config, overlays, localSystem, ... }@args: (import <nixpkgs/pkgs/stdenv> args) ++ [ 22 stdenvStages = { config, overlays, localSystem, ... }@args: (import <nixpkgs/pkgs/stdenv> args) ++ [
3 (previousStage: { 23 (previousStage: {
4 inherit config overlays; 24 inherit config overlays;
5 stdenv = let 25 stdenv = let
26 toNewOut = drv: builtins.readFile (pkgs.runCommand "new-out" {} "echo -n $(cat ${drv}/nix-support/new-out) > $out");
6 toPreHook = withAppendOut: '' 27 toPreHook = withAppendOut: ''
7 storepath_length=${toString storepath_length} 28 storepath_length=${toString storepath_length}
8 storepath_chunks=${toString storepath_chunks} 29 storepath_chunks=${toString storepath_chunks}
@@ -24,6 +45,7 @@
24 45
25 newlibc = (previousStage."${localSystem.libc}".override { callPackage = overridenCallPackage; }).overrideAttrs(old: { 46 newlibc = (previousStage."${localSystem.libc}".override { callPackage = overridenCallPackage; }).overrideAttrs(old: {
26 preHook = old.preHook or "" + (toPreHook true); 47 preHook = old.preHook or "" + (toPreHook true);
48 passthru = { new-out = toNewOut newlibc; };
27 }); 49 });
28 newbintools = (previousStage.binutils.override { libc = newlibc; }).overrideAttrs(old: { 50 newbintools = (previousStage.binutils.override { libc = newlibc; }).overrideAttrs(old: {
29 postFixup = old.postFixup + '' 51 postFixup = old.postFixup + ''
@@ -36,6 +58,7 @@
36 extraAttrs.bintools = newbintools; 58 extraAttrs.bintools = newbintools;
37 cc = previousStage.gcc.override({ bintools = newbintools; libc = newlibc; }); 59 cc = previousStage.gcc.override({ bintools = newbintools; libc = newlibc; });
38 overrides = self: super: rewriteMap (previousStage.stdenv.overrides self super) // { 60 overrides = self: super: rewriteMap (previousStage.stdenv.overrides self super) // {
61 bash = super.bash.overrideAttrs (old: { passthru = old.passthru // { new-out = toNewOut super.bash; }; });
39 ${localSystem.libc} = newlibc; 62 ${localSystem.libc} = newlibc;
40 }; 63 };
41 preHook = previousStage.stdenv.preHook + '' 64 preHook = previousStage.stdenv.preHook + ''
@@ -46,6 +69,13 @@
46 in 69 in
47 newStdenv; 70 newStdenv;
48 }) 71 })
72 (previousStage: {
73 inherit config overlays;
74 stdenv = previousStage.stdenv.override {
75 shell = previousStage.bash + "/bin/bash";
76 initialPath = ((import <nixpkgs/pkgs/stdenv/common-path.nix>) {pkgs = previousStage;});
77 };
78 })
49 ]; 79 ];
50} }: 80} }:
51 pkgs.xar 81 pkgs