| { pkgs ? import ../../../third_party/nix/default.nix { } }: with pkgs; |
| symlinkJoin { |
| name = "toolchain"; |
| paths = |
| let |
| platforms = with pkgsCross; [ |
| aarch64-multiplatform-musl |
| musl64 |
| ]; |
| in |
| map |
| (platform: ( |
| let |
| merged = buildEnv { |
| name = "toolchain-env"; |
| paths = with platform.pkgsStatic; [ |
| gnumake |
| flex |
| bison |
| lz4 |
| busybox |
| findutils |
| bc |
| util-linux-minimal # custom pkg |
| perl |
| nasm |
| acpica-tools |
| patch |
| diffutils |
| qemu-minimal # custom pkg |
| m4 |
| strace |
| ]; |
| }; |
| in |
| stdenv.mkDerivation rec { |
| name = "toolchain-bundle"; |
| buildInputs = [ gnutar zstd ]; |
| |
| phases = [ "buildPhase" "installPhase" ]; |
| buildPhase = '' |
| tar --zstd --sort=name --hard-dereference -hcf bundle.tar.zst -C ${merged} . |
| ''; |
| |
| installPhase = '' |
| mkdir $out |
| mv bundle.tar.zst $out/${name}-${platform.hostPlatform.config}-${lib.version}.tar.zst |
| ''; |
| } |
| )) |
| platforms; |
| } |