Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ stdenv
2, lib
3, fetchFromGitHub
4, scons
5, pkg-config
6, udev
7, libX11
8, libXcursor
9, libXinerama
10, libXrandr
11, libXrender
12, libpulseaudio
13, libXi
14, libXext
15, libXfixes
16, freetype
17, openssl
18, alsa-lib
19, alsa-plugins
20, makeWrapper
21, libGLU
22, zlib
23, yasm
24, withUdev ? true
25}:
26
27let
28 options = {
29 touch = libXi != null;
30 pulseaudio = false;
31 udev = withUdev;
32 };
33in
34stdenv.mkDerivation rec {
35 pname = "godot";
36 version = "3.5.2";
37
38 src = fetchFromGitHub {
39 owner = "godotengine";
40 repo = "godot";
41 rev = "${version}-stable";
42 sha256 = "sha256-C+1J5N0ETL1qKust+2xP9uB4x9NwrMqIm8aFAivVYQw=";
43 };
44
45 nativeBuildInputs = [ pkg-config makeWrapper ];
46 buildInputs = [
47 scons
48 udev
49 libX11
50 libXcursor
51 libXinerama
52 libXrandr
53 libXrender
54 libXi
55 libXext
56 libXfixes
57 freetype
58 openssl
59 alsa-lib
60 libpulseaudio
61 libGLU
62 zlib
63 yasm
64 ];
65
66 patches = [ ./pkg_config_additions.patch ./dont_clobber_environment.patch ];
67
68 enableParallelBuilding = true;
69
70 sconsFlags = [ "target=release_debug" "platform=x11" ];
71 preConfigure = ''
72 sconsFlags+=" ${
73 lib.concatStringsSep " "
74 (lib.mapAttrsToList (k: v: "${k}=${builtins.toJSON v}") options)
75 }"
76 '';
77
78 outputs = [ "out" "dev" "man" ];
79
80 installPhase = ''
81 mkdir -p "$out/bin"
82 cp bin/godot.* $out/bin/godot3
83
84 wrapProgram "$out/bin/godot3" \
85 --set ALSA_PLUGIN_DIR ${alsa-plugins}/lib/alsa-lib
86
87 mkdir "$dev"
88 cp -r modules/gdnative/include $dev
89
90 mkdir -p "$man/share/man/man6"
91 cp misc/dist/linux/godot.6 "$man/share/man/man6/"
92
93 mkdir -p "$out"/share/{applications,icons/hicolor/scalable/apps}
94 cp misc/dist/linux/org.godotengine.Godot.desktop "$out/share/applications/org.godotengine.Godot3.desktop"
95 cp icon.svg "$out/share/icons/hicolor/scalable/apps/godot.svg"
96 cp icon.png "$out/share/icons/godot.png"
97 substituteInPlace "$out/share/applications/org.godotengine.Godot3.desktop" \
98 --replace "Exec=godot" "Exec=$out/bin/godot3" \
99 --replace "Godot Engine" "Godot Engine 3"
100 '';
101
102 meta = with lib; {
103 homepage = "https://godotengine.org";
104 description = "Free and Open Source 2D and 3D game engine";
105 license = licenses.mit;
106 platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" ];
107 maintainers = with maintainers; [ twey ];
108 };
109}