nixpkgs/pkgs/by-name/bo/bombsquad/package.nix

126 lines
3.0 KiB
Nix

{
lib,
stdenv,
fetchurl,
python312,
SDL2,
libvorbis,
openal,
curl,
gnugrep,
libgcc,
makeBinaryWrapper,
makeDesktopItem,
autoPatchelfHook,
copyDesktopItems,
writeShellApplication,
commandLineArgs ? "",
genericUpdater,
}:
let
archive =
{
x86_64-linux = {
name = "BombSquad_Linux_x86_64";
hash = "sha256-ICjaNZSCUbslB5pELbI4e+1zXWrZzkCkv69jLRx4dr0=";
};
aarch-64-linux = {
name = "BombSquad_Linux_Arm64";
hash = "sha256-/m0SOQbHssk0CqZJPRLK9YKphup3dtMqkbWGzqcF0+g=";
};
}
.${stdenv.targetPlatform.system} or (throw "${stdenv.targetPlatform.system} is unsupported.");
bombsquadIcon = fetchurl {
url = "https://files.ballistica.net/bombsquad/promo/BombSquadIcon.png";
hash = "sha256-MfOvjVmjhLejrJmdLo/goAM9DTGubnYGhlN6uF2GugA=";
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "bombsquad";
version = "1.7.37";
src = fetchurl {
url = "https://web.archive.org/web/20240825230506if_/https://files.ballistica.net/bombsquad/builds/${archive.name}_${finalAttrs.version}.tar.gz";
inherit (archive) hash;
};
sourceRoot = "${archive.name}_${finalAttrs.version}";
buildInputs = [
SDL2
libgcc
libvorbis
openal
python312
];
nativeBuildInputs = [
autoPatchelfHook
copyDesktopItems
makeBinaryWrapper
];
desktopItems = [
(makeDesktopItem {
name = "bombsquad";
genericName = "bombsquad";
desktopName = "BombSquad";
icon = "bombsquad";
exec = "bombsquad";
comment = "An explosive arcade-style party game.";
categories = [ "Game" ];
})
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/libexec $out/share/bombsquad/ba_data
install -Dm555 -t $out/libexec ${finalAttrs.meta.mainProgram}
cp -r ba_data $out/share/bombsquad
makeWrapper "$out/libexec/${finalAttrs.meta.mainProgram}" "$out/bin/${finalAttrs.meta.mainProgram}" \
--add-flags ${lib.escapeShellArg commandLineArgs} \
--add-flags "-d $out/share/bombsquad"
install -Dm755 ${bombsquadIcon} $out/share/icons/hicolor/1024x1024/apps/bombsquad.png
runHook postInstall
'';
passthru.updateScript = genericUpdater {
versionLister = lib.getExe (writeShellApplication {
name = "bombsquad-versionLister";
runtimeInputs = [
curl
gnugrep
];
text = ''
curl -sL "https://files.ballistica.net/bombsquad/builds/CHANGELOG.md" \
| grep -oP '^### \K\d+\.\d+\.\d+' \
| head -n 1
'';
});
};
meta = {
description = "Free, multiplayer, arcade-style game for up to eight players that combines elements of fighting games and first-person shooters (FPS)";
homepage = "https://ballistica.net";
changelog = "https://ballistica.net/downloads?display=changelog";
license = with lib.licenses; [
mit
unfree
];
maintainers = with lib.maintainers; [
syedahkam
coffeeispower
];
mainProgram = "bombsquad";
platforms = lib.platforms.linux;
};
})