X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNixies.git;a=blobdiff_plain;f=stdenv_prefix%2Fexample.nix;h=be66db7de2215db3d5ba6a8d359128297540d552;hp=0d4aa65c73f8db7f316276fc2a2d2118ddbf8e79;hb=HEAD;hpb=b4e94e5ffeb834f96c5f3338c36b22fc13bd0cee 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 @@ -{ storepath_length ? 30, storepath_chunks ? 4, pkgs ? import { +{ storepath_length ? 42, storepath_chunks ? 6, pkgs ? import { + overlays = [ + (self: super: { + zstd = super.zstd.overrideAttrs (old: { + postPatch = old.postPatch + '' + sed -i 149d build/cmake/lib/CMakeLists.txt + ''; + }); + glibcLocales = super.glibcLocales.overrideAttrs (old: let + libc = self.buildPackages.stdenv.cc.libc; + in { + buildPhase = '' + mkdir -vp "$TMPDIR/${libc.new-out}/lib/locale" + '' + old.buildPhase; + installPhase = '' + rmdir $TMPDIR/"${libc.out}/lib/locale" + ln -s "$TMPDIR/${libc.new-out}/lib/locale" $TMPDIR/"${libc.out}/lib/locale" + '' + old.installPhase; + }); + }) + ]; stdenvStages = { config, overlays, localSystem, ... }@args: (import args) ++ [ (previousStage: { inherit config overlays; stdenv = let + toNewOut = drv: builtins.readFile (pkgs.runCommand "new-out" {} "echo -n $(cat ${drv}/nix-support/new-out) > $out"); toPreHook = withAppendOut: '' storepath_length=${toString storepath_length} storepath_chunks=${toString storepath_chunks} @@ -24,6 +45,7 @@ newlibc = (previousStage."${localSystem.libc}".override { callPackage = overridenCallPackage; }).overrideAttrs(old: { preHook = old.preHook or "" + (toPreHook true); + passthru = { new-out = toNewOut newlibc; }; }); newbintools = (previousStage.binutils.override { libc = newlibc; }).overrideAttrs(old: { postFixup = old.postFixup + '' @@ -36,6 +58,7 @@ extraAttrs.bintools = newbintools; cc = previousStage.gcc.override({ bintools = newbintools; libc = newlibc; }); overrides = self: super: rewriteMap (previousStage.stdenv.overrides self super) // { + bash = super.bash.overrideAttrs (old: { passthru = old.passthru // { new-out = toNewOut super.bash; }; }); ${localSystem.libc} = newlibc; }; preHook = previousStage.stdenv.preHook + '' @@ -46,6 +69,13 @@ in newStdenv; }) + (previousStage: { + inherit config overlays; + stdenv = previousStage.stdenv.override { + shell = previousStage.bash + "/bin/bash"; + initialPath = ((import ) {pkgs = previousStage;}); + }; + }) ]; } }: - pkgs.xar + pkgs