Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / games / principia / default.nix
blob3cf98dada02759738e488499fbf296bda80ff3d6
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , autoreconfHook
5 , pkg-config
7 , curl
8 , freetype
9 , glew
10 , gtk2
11 , libGL
12 , libjpeg
13 , libpng
14 , SDL2
15 , SDL2_gfx
16 , SDL2_image
17 , SDL2_mixer
18 , SDL2_ttf
21 stdenv.mkDerivation {
22   pname = "principia";
23   version = "unstable-2023-03-21";
25   src = fetchFromGitHub {
26     owner = "Bithack";
27     repo = "principia";
28     rev = "af2cfda21b6ce4c0725700e2a01b0597a97dbeff";
29     hash = "sha256-jBWdXzbPpk23elHcs5sWkxXfkekj+aa24VvEHzid8KE=";
30   };
32   nativeBuildInputs = [
33     autoreconfHook
34     pkg-config
35   ];
37   buildInputs = [
38     curl
39     freetype
40     glew
41     gtk2
42     libGL
43     libjpeg
44     libpng
45     SDL2
46     SDL2_gfx
47     SDL2_image
48     SDL2_mixer
49     SDL2_ttf
50   ];
52   preAutoreconf = ''
53     cd build-linux
54   '';
56   # Since we bypass the "build-linux/go" wrapper script so we can use nixpkgs'
57   # autotools/make integration, set the release flags manually.
58   # https://github.com/Bithack/principia/issues/98
59   preBuild = ''
60     RELEASE_SHARED="-ffast-math -DNDEBUG=1 -s -fomit-frame-pointer -fvisibility=hidden -fdata-sections -ffunction-sections"
61     makeFlagsArray+=(
62       CFLAGS="$RELEASE_SHARED -O1"
63       CXXFLAGS="$RELEASE_SHARED -O2 -fvisibility-inlines-hidden -fno-rtti"
64       LDFLAGS="-Wl,-O,-s,--gc-sections"
65     )
66   '';
68   # `make install` only installs the binary, and the binary looks for data
69   # files in its same directory, so we override installPhase, install the
70   # binary in $out/share, and link to it from $out/bin
71   installPhase = ''
72     runHook preInstall
74     mkdir -p $out/bin
75     mkdir -p $out/share/principia
76     install -Dm755 principia $out/share/principia/principia
77     ln -s $out/share/principia/principia $out/bin/principia
79     cp -r --dereference data-pc data-shared $out/share/principia/
80     install -Dm644 principia.desktop $out/share/applications/principia.desktop
81     install -Dm644 principia-url-handler.desktop $out/share/applications/principia-url-handler.desktop
82     install -Dm644 principia.png $out/share/pixmaps/principia.png
84     runHook postInstall
85   '';
87   # The actual binary is here, see comment above installPhase
88   stripDebugList = [ "share/principia" ];
90   meta = with lib; {
91     description = "Physics-based sandbox game";
92     homepage = "https://principia-web.se/";
93     downloadPage = "https://principia-web.se/download";
94     license = licenses.bsd3;
95     maintainers = [ maintainers.fgaz ];
96     platforms = platforms.linux;
97   };