Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / games / srb2 / default.nix
blobfdb374a917511ef0b787815ccb623ca59b524a08
1 { lib
2 , stdenv
3 , fetchurl
4 , fetchFromGitHub
5 , cmake
6 , curl
7 , nasm
8 , libopenmpt
9 , p7zip
10 , game-music-emu
11 , libpng
12 , SDL2
13 , SDL2_mixer
14 , zlib
15 , unzip
16 , makeWrapper
17 , makeDesktopItem
18 , copyDesktopItems
21 stdenv.mkDerivation (finalAttrs: {
22   pname = "srb2";
23   version = "2.2.13";
25   src = fetchFromGitHub {
26     owner = "STJr";
27     repo = "SRB2";
28     rev = "SRB2_release_${finalAttrs.version}";
29     hash = "sha256-OSkkjCz7ZW5+0vh6l7+TpnHLzXmd/5QvTidRQSHJYX8=";
30   };
32   nativeBuildInputs = [
33     cmake
34     nasm
35     p7zip
36     makeWrapper
37     copyDesktopItems
38   ];
40   buildInputs = [
41     curl
42     game-music-emu
43     libpng
44     libopenmpt
45     SDL2
46     SDL2_mixer
47     zlib
48   ];
50   assets = stdenv.mkDerivation {
51     pname = "srb2-data";
52     version = finalAttrs.version;
54     nativeBuildInputs = [
55       unzip
56     ];
58     src = fetchurl {
59       url = "https://github.com/STJr/SRB2/releases/download/SRB2_release_${finalAttrs.version}/SRB2-v${lib.replaceStrings ["."] [""] finalAttrs.version}-Full.zip";
60       hash = "sha256-g7kaNRE1tjcF5J2v+kTnrDzz4zs5f1b/NH67ce2ifUo=";
61     };
63     sourceRoot = ".";
65     installPhase = ''
66       mkdir -p $out/share/srb2
67       cp -r *pk3 *dta *dat models/ $out/share/srb2/
68     '';
69   };
71   cmakeFlags = [
72     "-DSRB2_ASSET_DIRECTORY=${finalAttrs.assets}/share/srb2"
73     "-DGME_INCLUDE_DIR=${game-music-emu}/include"
74     "-DOPENMPT_INCLUDE_DIR=${libopenmpt.dev}/include"
75     "-DSDL2_MIXER_INCLUDE_DIR=${lib.getDev SDL2_mixer}/include/SDL2"
76     "-DSDL2_INCLUDE_DIR=${lib.getDev SDL2.dev}/include/SDL2"
77   ];
79   patches = [
80     # Make the build work without internet connectivity
81     # See: https://build.opensuse.org/request/show/1109889
82     ./cmake.patch
83     ./thirdparty.patch
84   ];
86   desktopItems = [
87     (makeDesktopItem rec {
88       name = "Sonic Robo Blast 2";
89       exec = finalAttrs.pname;
90       icon = finalAttrs.pname;
91       comment = finalAttrs.meta.description;
92       desktopName = name;
93       genericName = name;
94       categories = [ "Game" ];
95     })
96   ];
98   installPhase = ''
99     mkdir -p $out/bin $out/share/applications $out/share/pixmaps $out/share/icons
101     copyDesktopItems
103     cp ../srb2.png $out/share/pixmaps/.
104     cp ../srb2.png $out/share/icons/.
106     cp bin/lsdlsrb2 $out/bin/srb2
107     wrapProgram $out/bin/srb2 --set SRB2WADDIR "${finalAttrs.assets}/share/srb2"
108   '';
110   meta = with lib; {
111     description = "Sonic Robo Blast 2 is a 3D Sonic the Hedgehog fangame based on a modified version of Doom Legacy";
112     homepage = "https://www.srb2.org/";
113     platforms = platforms.linux;
114     license = licenses.gpl2Plus;
115     maintainers = with maintainers; [ zeratax donovanglover ];
116     mainProgram = "srb2";
117   };