guix/corepkgs/nar.nix

50 lines
1.1 KiB
Nix
Raw Normal View History

with import <nix/config.nix>;
let
builder = builtins.toFile "nar.sh"
''
export PATH=${nixBinDir}:${coreutils}
if [ $compressionType = xz ]; then
ext=.xz
2013-09-02 11:32:51 +00:00
compressor="| ${xz} -7"
elif [ $compressionType = bzip2 ]; then
ext=.bz2
compressor="| ${bzip2}"
2012-07-01 22:46:38 +00:00
else
ext=
compressor=
2012-07-01 22:46:38 +00:00
fi
echo "packing $storePath..."
mkdir $out
dst=$out/tmp.nar$ext
set -o pipefail
eval "nix-store --dump \"$storePath\" $compressor > $dst"
hash=$(nix-hash --flat --type $hashAlgo --base32 $dst)
echo -n $hash > $out/nar-compressed-hash
mv $dst $out/$hash.nar$ext
'';
in
2012-07-01 22:46:38 +00:00
{ storePath, hashAlgo, compressionType }:
derivation {
name = "nar";
2012-04-14 16:48:11 +00:00
system = builtins.currentSystem;
builder = shell;
args = [ "-e" builder ];
2012-07-01 22:46:38 +00:00
inherit storePath hashAlgo compressionType;
# Don't build in a chroot because Nix's dependencies may not be there.
__noChroot = true;
# Remote machines may not have ${nixBinDir} or ${coreutils} in the same prefixes
preferLocalBuild = true;
}