mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-22 14:06:16 +02:00
5116214343
Issue NixOS/hydra#102.
46 lines
987 B
Nix
46 lines
987 B
Nix
with import <nix/config.nix>;
|
||
|
||
let
|
||
|
||
builder = builtins.toFile "nar.sh"
|
||
''
|
||
export PATH=${nixBinDir}:${coreutils}
|
||
|
||
if [ $compressionType = xz ]; then
|
||
ext=.xz
|
||
compressor="| ${xz} -9"
|
||
elif [ $compressionType = bzip2 ]; then
|
||
ext=.bz2
|
||
compressor="| ${bzip2}"
|
||
else
|
||
ext=
|
||
compressor=
|
||
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
|
||
|
||
{ storePath, hashAlgo, compressionType }:
|
||
|
||
derivation {
|
||
name = "nar";
|
||
system = builtins.currentSystem;
|
||
builder = shell;
|
||
args = [ "-e" builder ];
|
||
inherit storePath hashAlgo compressionType;
|
||
|
||
# Don't build in a chroot because Nix's dependencies may not be there.
|
||
__noChroot = true;
|
||
}
|