bottom: add gpu recognition, new apple sdk, refactor (#360568)
[NixPkgs.git] / pkgs / by-name / bo / bombsquad / package.nix
blob054f1b11d4917720b528d47b8abad64bfca27870
2   lib,
3   stdenv,
4   fetchurl,
5   python312,
6   SDL2,
7   libvorbis,
8   openal,
9   curl,
10   gnugrep,
11   libgcc,
12   makeBinaryWrapper,
13   makeDesktopItem,
14   autoPatchelfHook,
15   copyDesktopItems,
16   writeShellApplication,
17   commandLineArgs ? "",
18   genericUpdater,
20 let
21   archive =
22     {
23       x86_64-linux = {
24         name = "BombSquad_Linux_x86_64";
25         hash = "sha256-ICjaNZSCUbslB5pELbI4e+1zXWrZzkCkv69jLRx4dr0=";
26       };
27       aarch-64-linux = {
28         name = "BombSquad_Linux_Arm64";
29         hash = "sha256-/m0SOQbHssk0CqZJPRLK9YKphup3dtMqkbWGzqcF0+g=";
30       };
31     }
32     .${stdenv.targetPlatform.system} or (throw "${stdenv.targetPlatform.system} is unsupported.");
34   bombsquadIcon = fetchurl {
35     url = "https://files.ballistica.net/bombsquad/promo/BombSquadIcon.png";
36     hash = "sha256-MfOvjVmjhLejrJmdLo/goAM9DTGubnYGhlN6uF2GugA=";
37   };
40 stdenv.mkDerivation (finalAttrs: {
41   pname = "bombsquad";
42   version = "1.7.37";
44   src = fetchurl {
45     url = "https://web.archive.org/web/20240825230506if_/https://files.ballistica.net/bombsquad/builds/${archive.name}_${finalAttrs.version}.tar.gz";
46     inherit (archive) hash;
47   };
49   sourceRoot = "${archive.name}_${finalAttrs.version}";
51   buildInputs = [
52     SDL2
53     libgcc
54     libvorbis
55     openal
56     python312
57   ];
59   nativeBuildInputs = [
60     autoPatchelfHook
61     copyDesktopItems
62     makeBinaryWrapper
63   ];
65   desktopItems = [
66     (makeDesktopItem {
67       name = "bombsquad";
68       genericName = "bombsquad";
69       desktopName = "BombSquad";
71       icon = "bombsquad";
72       exec = "bombsquad";
73       comment = "An explosive arcade-style party game.";
74       categories = [ "Game" ];
75     })
76   ];
78   installPhase = ''
79     runHook preInstall
81     mkdir -p $out/bin $out/libexec $out/share/bombsquad/ba_data
83     install -Dm555 -t $out/libexec ${finalAttrs.meta.mainProgram}
84     cp -r ba_data $out/share/bombsquad
86     makeWrapper "$out/libexec/${finalAttrs.meta.mainProgram}" "$out/bin/${finalAttrs.meta.mainProgram}" \
87       --add-flags ${lib.escapeShellArg commandLineArgs} \
88       --add-flags "-d $out/share/bombsquad"
90     install -Dm755 ${bombsquadIcon} $out/share/icons/hicolor/1024x1024/apps/bombsquad.png
92     runHook postInstall
93   '';
95   passthru.updateScript = genericUpdater {
96     versionLister = lib.getExe (writeShellApplication {
97       name = "bombsquad-versionLister";
98       runtimeInputs = [
99         curl
100         gnugrep
101       ];
102       text = ''
103         curl -sL "https://files.ballistica.net/bombsquad/builds/CHANGELOG.md" \
104             | grep -oP '^### \K\d+\.\d+\.\d+' \
105             | head -n 1
106       '';
107     });
108   };
110   meta = {
111     description = "Free, multiplayer, arcade-style game for up to eight players that combines elements of fighting games and first-person shooters (FPS)";
112     homepage = "https://ballistica.net";
113     changelog = "https://ballistica.net/downloads?display=changelog";
114     license = with lib.licenses; [
115       mit
116       unfree
117     ];
118     maintainers = with lib.maintainers; [
119       syedahkam
120       coffeeispower
121     ];
122     mainProgram = "bombsquad";
123     platforms = lib.platforms.linux;
124   };