guix/corepkgs/nar.nix

44 lines
899 B
Nix
Raw Normal View History

with import <nix/config.nix>;
let
builder = builtins.toFile "nar.sh"
''
export PATH=${nixBinDir}:${coreutils}
2012-07-01 22:46:38 +00:00
if [ $compressionType = "xz" ]; then
ext=xz
2012-07-02 01:57:25 +00:00
compressor="${xz} -9"
2012-07-01 22:46:38 +00:00
else
ext=bz2
2012-07-02 01:57:25 +00:00
compressor="${bzip2}"
2012-07-01 22:46:38 +00:00
fi
echo "packing $storePath..."
mkdir $out
2012-07-01 22:46:38 +00:00
dst=$out/tmp.nar.$ext
set -o pipefail
2012-07-02 01:57:25 +00:00
nix-store --dump "$storePath" | $compressor > $dst
hash=$(nix-hash --flat --type $hashAlgo --base32 $dst)
echo -n $hash > $out/nar-compressed-hash
2012-07-01 22:46:38 +00:00
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;
}