From 1a160f714516ae4d6d8af92380b0713fdd2eadf6 Mon Sep 17 00:00:00 2001 From: Justin Bedo Date: Tue, 14 May 2019 14:19:18 +1000 Subject: strip: remove store paths from outputs to minimise closures --- default.nix | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'default.nix') diff --git a/default.nix b/default.nix index 25834a9..03869bc 100644 --- a/default.nix +++ b/default.nix @@ -75,7 +75,28 @@ let # Export nixpkgs and standard library lib pkgs = nixpkgs; lib = nixpkgs.lib // { types = types; shard = callBionix ./lib/shard.nix {};}; - stage = x@{ name, ... }: { multicore = false; } // nixpkgs.stdenvNoCC.mkDerivation (x // {name = "bionix-" + name;}); + stage = x@{ name, stripStorePaths ? true, ... }: + (if stripStorePaths then strip else x: x) ({ multicore = false; } // nixpkgs.stdenvNoCC.mkDerivation (x // {name = "bionix-" + name; })); + strip = drv: drv.overrideAttrs (attrs: { + buildCommand = attrs.buildCommand + '' + + function rewrite { + sed -i 's|/nix/store/[^-]*|/nix/store/00000000000000000000000000000000|g' $1 + } + function rewriteOutput { + if [ -f ''${!1} ] ; then + rewrite ''${!1} + else + for f in $(find ''${!1} -type f) ; do + rewrite $f + done + fi + } + for o in $outputs ; do + rewriteOutput $o + done + ''; + }); # splitting/joining splitFile = file: drv: stage { -- cgit v1.2.3