mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-10-21 11:43:11 -04:00
c5435f8253
Hydra uses rosetta2 for compilation which doesn't support AVX2. Default source for x86 darwin to non AVX2 support. Users can override source if they really want AVX2.
102 lines
3.5 KiB
Nix
102 lines
3.5 KiB
Nix
{ lib
|
||
, stdenvNoCC
|
||
, fetchurl
|
||
, autoPatchelfHook
|
||
, unzip
|
||
, installShellFiles
|
||
, openssl
|
||
, writeShellScript
|
||
, curl
|
||
, jq
|
||
, common-updater-scripts
|
||
}:
|
||
|
||
stdenvNoCC.mkDerivation rec {
|
||
version = "1.1.17";
|
||
pname = "bun";
|
||
|
||
src = passthru.sources.${stdenvNoCC.hostPlatform.system} or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}");
|
||
|
||
strictDeps = true;
|
||
nativeBuildInputs = [ unzip installShellFiles ] ++ lib.optionals stdenvNoCC.isLinux [ autoPatchelfHook ];
|
||
buildInputs = [ openssl ];
|
||
|
||
dontConfigure = true;
|
||
dontBuild = true;
|
||
|
||
installPhase = ''
|
||
runHook preInstall
|
||
|
||
install -Dm 755 ./bun $out/bin/bun
|
||
ln -s $out/bin/bun $out/bin/bunx
|
||
|
||
runHook postInstall
|
||
'';
|
||
|
||
postPhases = [ "postPatchelf" ];
|
||
postPatchelf = lib.optionalString (stdenvNoCC.buildPlatform.canExecute stdenvNoCC.hostPlatform) ''
|
||
completions_dir=$(mktemp -d)
|
||
|
||
SHELL="bash" $out/bin/bun completions $completions_dir
|
||
SHELL="zsh" $out/bin/bun completions $completions_dir
|
||
SHELL="fish" $out/bin/bun completions $completions_dir
|
||
|
||
installShellCompletion --name bun \
|
||
--bash $completions_dir/bun.completion.bash \
|
||
--zsh $completions_dir/_bun \
|
||
--fish $completions_dir/bun.fish
|
||
'';
|
||
|
||
passthru = {
|
||
sources = {
|
||
"aarch64-darwin" = fetchurl {
|
||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-aarch64.zip";
|
||
hash = "sha256-aULgRZ9evcGUhKJ6slLJOg3IEzUeNfIkJF8RDP3YUlo=";
|
||
};
|
||
"aarch64-linux" = fetchurl {
|
||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-aarch64.zip";
|
||
hash = "sha256-eytY45LcgeI9m9amHd8hfE7Lz7ET7p19h37Bi4yUHBM=";
|
||
};
|
||
"x86_64-darwin" = fetchurl {
|
||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-x64-baseline.zip";
|
||
hash = "sha256-SKD/nJSDCPEQPekbkHkEew0mw2E55/L2hPjlz3fu3J8=";
|
||
};
|
||
"x86_64-linux" = fetchurl {
|
||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-x64.zip";
|
||
hash = "sha256-pRggu/l0HgCk73kX7W43qKFVE13/7pP4P9bTiqyK2Yk=";
|
||
};
|
||
};
|
||
updateScript = writeShellScript "update-bun" ''
|
||
set -o errexit
|
||
export PATH="${lib.makeBinPath [ curl jq common-updater-scripts ]}"
|
||
NEW_VERSION=$(curl --silent https://api.github.com/repos/oven-sh/bun/releases/latest | jq '.tag_name | ltrimstr("bun-v")' --raw-output)
|
||
if [[ "${version}" = "$NEW_VERSION" ]]; then
|
||
echo "The new version same as the old version."
|
||
exit 0
|
||
fi
|
||
for platform in ${lib.escapeShellArgs meta.platforms}; do
|
||
update-source-version "bun" "$NEW_VERSION" --ignore-same-version --source-key="sources.$platform"
|
||
done
|
||
'';
|
||
};
|
||
meta = with lib; {
|
||
homepage = "https://bun.sh";
|
||
changelog = "https://bun.sh/blog/bun-v${version}";
|
||
description = "Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one";
|
||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||
longDescription = ''
|
||
All in one fast & easy-to-use tool. Instead of 1,000 node_modules for development, you only need bun.
|
||
'';
|
||
license = with licenses; [
|
||
mit # bun core
|
||
lgpl21Only # javascriptcore and webkit
|
||
];
|
||
mainProgram = "bun";
|
||
maintainers = with maintainers; [ DAlperin jk thilobillerbeck cdmistman coffeeispower diogomdp ];
|
||
platforms = builtins.attrNames passthru.sources;
|
||
# Broken for Musl at 2024-01-13, tracking issue:
|
||
# https://github.com/NixOS/nixpkgs/issues/280716
|
||
broken = stdenvNoCC.hostPlatform.isMusl;
|
||
};
|
||
}
|