urbit/nix/lib/make-release-tarball.nix
Brendan Hay ce3cbf0857
build: rework all nix expressions to support hercules-ci builds
This also removes nixcrpkgs and OSX cross compilation in favour of
compiling on the target. x86_64/musl targets are still supported
on Linux.

All sources are now managed via niv (see nix/sources.json) and Haskell
package sets are provided/organised via IOHK's haskell.nix.

Some effort has been made to expose similar top-level attributes for
development, but in some cases there have been changes. Please see
the comments in the top-level default.nix and ci.nix files for usage.
2020-10-27 13:55:49 +01:00

38 lines
854 B
Nix

{ lib, stdenvNoCC, coreutils }:
{ name, contents # { target = source, ... }
}:
let
transforms = builtins.concatStringsSep " " (lib.mapAttrsToList
(target: source: ''--transform "s,${source},${target},"'') contents);
sources = builtins.concatStringsSep " "
(lib.mapAttrsToList (_target: source: "${source}") contents);
in stdenvNoCC.mkDerivation {
name = "${name}.tar.gz";
outputs = [ "out" "hash" ];
nativeBuildInputs = [ coreutils ];
phases = [ "buildPhase" "hashPhase" ];
buildPhase = ''
tar vczf $out \
--owner=0 --group=0 --mode=u+rw,uga+r \
--absolute-names \
--hard-dereference \
${transforms} \
${sources}
'';
hashPhase = ''
mkdir $hash
md5sum $out | awk '{printf $1}' > $hash/md5
sha256sum $out | awk '{printf $1}' > $hash/sha256
'';
preferLocalBuild = true;
}