71 lines
1.8 KiB
Nix
71 lines
1.8 KiB
Nix
|
|
# Baseline variant of Bun for x86_64-linux CPUs without AVX2 support.
|
||
|
|
# The regular `bun` from nixpkgs requires AVX2 and crashes with SIGILL on older hardware.
|
||
|
|
#
|
||
|
|
# Version is typically kept in sync with nixpkgs's `bun` (passed via `callPackage`).
|
||
|
|
{
|
||
|
|
lib,
|
||
|
|
stdenvNoCC,
|
||
|
|
fetchurl,
|
||
|
|
autoPatchelfHook,
|
||
|
|
unzip,
|
||
|
|
makeBinaryWrapper,
|
||
|
|
glibc,
|
||
|
|
stdenv,
|
||
|
|
version ? "1.3.13",
|
||
|
|
}: let
|
||
|
|
# When updating `version`, compute the new hash with:
|
||
|
|
# nix store prefetch-file "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-x64-baseline.zip"
|
||
|
|
hash = {
|
||
|
|
"1.3.13" = "sha256-nYokKSpwaAkCBdqsCloiP19pc29Sh+N7+I07QDHtx1A=";
|
||
|
|
};
|
||
|
|
in
|
||
|
|
stdenvNoCC.mkDerivation {
|
||
|
|
pname = "bun-baseline";
|
||
|
|
inherit version;
|
||
|
|
|
||
|
|
src = fetchurl {
|
||
|
|
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-x64-baseline.zip";
|
||
|
|
hash = hash.${version};
|
||
|
|
};
|
||
|
|
|
||
|
|
nativeBuildInputs =
|
||
|
|
[unzip]
|
||
|
|
++ lib.optionals stdenvNoCC.hostPlatform.isLinux [
|
||
|
|
autoPatchelfHook
|
||
|
|
makeBinaryWrapper
|
||
|
|
];
|
||
|
|
|
||
|
|
buildInputs = lib.optionals stdenvNoCC.hostPlatform.isLinux [
|
||
|
|
glibc
|
||
|
|
(lib.getLib stdenv.cc.cc)
|
||
|
|
];
|
||
|
|
|
||
|
|
dontConfigure = true;
|
||
|
|
dontBuild = true;
|
||
|
|
|
||
|
|
unpackPhase = ''
|
||
|
|
runHook preUnpack
|
||
|
|
mkdir -p source
|
||
|
|
cd source
|
||
|
|
${lib.getExe unzip} -q $src
|
||
|
|
runHook postUnpack
|
||
|
|
'';
|
||
|
|
|
||
|
|
installPhase = ''
|
||
|
|
runHook preInstall
|
||
|
|
mkdir -p $out/bin
|
||
|
|
find . -type f -name "bun" -not -path "./__MACOSX/*" -exec cp {} $out/bin/bun \;
|
||
|
|
chmod +x $out/bin/bun
|
||
|
|
ln -s $out/bin/bun $out/bin/bunx
|
||
|
|
runHook postInstall
|
||
|
|
'';
|
||
|
|
|
||
|
|
meta = {
|
||
|
|
description = "Bun JavaScript runtime (baseline variant, works without AVX2)";
|
||
|
|
homepage = "https://bun.sh";
|
||
|
|
license = lib.licenses.mit;
|
||
|
|
platforms = ["x86_64-linux"];
|
||
|
|
mainProgram = "bun";
|
||
|
|
};
|
||
|
|
}
|