lol
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 makeDesktopItem,
6 makeWrapper,
7 cmake,
8 libjpeg,
9 zlib,
10 libpng,
11 libGL,
12 libX11,
13 SDL2,
14 unstableGitUpdater,
15}:
16
17let
18 jamp = makeDesktopItem rec {
19 name = "jamp";
20 exec = name;
21 icon = "OpenJK_Icon_128";
22 comment = "Open Source Jedi Academy game released by Raven Software";
23 desktopName = "Jedi Academy (Multi Player)";
24 genericName = "Jedi Academy";
25 categories = [ "Game" ];
26 };
27 jasp = makeDesktopItem rec {
28 name = "jasp";
29 exec = name;
30 icon = "OpenJK_Icon_128";
31 comment = "Open Source Jedi Academy game released by Raven Software";
32 desktopName = "Jedi Academy (Single Player)";
33 genericName = "Jedi Academy";
34 categories = [ "Game" ];
35 };
36 josp = makeDesktopItem rec {
37 name = "josp";
38 exec = name;
39 icon = "OpenJK_Icon_128";
40 comment = "Open Source Jedi Outcast game released by Raven Software";
41 desktopName = "Jedi Outcast (Single Player)";
42 genericName = "Jedi Outcast";
43 categories = [ "Game" ];
44 };
45in
46stdenv.mkDerivation {
47 pname = "openjk";
48 version = "0-unstable-2024-04-07";
49
50 src = fetchFromGitHub {
51 owner = "JACoders";
52 repo = "OpenJK";
53 rev = "2815211a87ccb8de1b0ee090d429a63f47e0ac7a";
54 hash = "sha256-F3JF6jFgyMinIZ7dZAJ0ugGrJFianh2b6dX5A4iEnns=";
55 };
56
57 dontAddPrefix = true;
58
59 nativeBuildInputs = [
60 makeWrapper
61 cmake
62 ];
63 buildInputs = [
64 libjpeg
65 zlib
66 libpng
67 libGL
68 libX11
69 SDL2
70 ];
71
72 outputs = [
73 "out"
74 "openjo"
75 "openja"
76 ];
77
78 # move from $out/JediAcademy to $out/opt/JediAcademy
79 preConfigure = ''
80 cmakeFlagsArray=("-DCMAKE_INSTALL_PREFIX=$out/opt")
81 '';
82 cmakeFlags = [
83 "-DBuildJK2SPEngine:BOOL=ON"
84 "-DBuildJK2SPGame:BOOL=ON"
85 "-DBuildJK2SPRdVanilla:BOOL=ON"
86 ];
87
88 postInstall = ''
89 mkdir -p $out/bin $openja/bin $openjo/bin
90 mkdir -p $openja/share/applications $openjo/share/applications
91 mkdir -p $openja/share/icons/hicolor/128x128/apps $openjo/share/icons/hicolor/128x128/apps
92 mkdir -p $openja/opt $openjo/opt
93 mv $out/opt/JediAcademy $openja/opt/
94 mv $out/opt/JediOutcast $openjo/opt/
95 jaPrefix=$openja/opt/JediAcademy
96 joPrefix=$openjo/opt/JediOutcast
97
98 makeWrapper $jaPrefix/openjk.* $openja/bin/jamp --chdir "$jaPrefix"
99 makeWrapper $jaPrefix/openjk_sp.* $openja/bin/jasp --chdir "$jaPrefix"
100 makeWrapper $jaPrefix/openjkded.* $openja/bin/openjkded --chdir "$jaPrefix"
101 makeWrapper $joPrefix/openjo_sp.* $openjo/bin/josp --chdir "$joPrefix"
102
103 cp $src/shared/icons/OpenJK_Icon_128.png $openjo/share/icons/hicolor/128x128/apps
104 cp $src/shared/icons/OpenJK_Icon_128.png $openja/share/icons/hicolor/128x128/apps
105 ln -s ${jamp}/share/applications/* $openja/share/applications
106 ln -s ${jasp}/share/applications/* $openja/share/applications
107 ln -s ${josp}/share/applications/* $openjo/share/applications
108 ln -s $openja/bin/* $out/bin
109 ln -s $openjo/bin/* $out/bin
110 rm -rf $out/opt
111 '';
112
113 passthru.updateScript = unstableGitUpdater { };
114
115 meta = with lib; {
116 description = "Open-source engine for Star Wars Jedi Academy game";
117 homepage = "https://github.com/JACoders/OpenJK";
118 license = licenses.gpl2Only;
119 platforms = platforms.linux;
120 maintainers = with maintainers; [ ];
121 };
122}