evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / aa / aaaaxy / package.nix
blob67f8ef1a71de575248f13e122d9046eb0fe98f58
1 { lib
2 , fetchFromGitHub
3 , buildGoModule
4 , alsa-lib
5 , libGL
6 , libX11
7 , libXcursor
8 , libXext
9 , libXi
10 , libXinerama
11 , libXrandr
12 , libXxf86vm
13 , go-licenses
14 , pkg-config
15 , zip
16 , advancecomp
17 , makeWrapper
18 , nixosTests
21 buildGoModule rec {
22   pname = "aaaaxy";
23   version = "1.5.208";
25   src = fetchFromGitHub {
26     owner = "divVerent";
27     repo = pname;
28     rev = "v${version}";
29     hash = "sha256-VfF8bQP7pFaTezOJpda4N9KbCHr5ST/wCvdNRiojio0=";
30     fetchSubmodules = true;
31   };
33   vendorHash = "sha256-PBwI3S8ZvmVD57/ICALe+HvgtbPQpJKNPfkWo+uUeSo=";
35   buildInputs = [
36     alsa-lib
37     libGL
38     libX11 libXcursor libXext libXi libXinerama libXrandr
39     libXxf86vm
40   ];
42   nativeBuildInputs = [
43     go-licenses
44     pkg-config
45     zip
46     advancecomp
47     makeWrapper
48   ];
50   outputs = [ "out" "testing_infra" ];
52   postPatch = ''
53     # Without patching, "go run" fails with the error message:
54     # package github.com/google/go-licenses: no Go files in /build/source/vendor/github.com/google/go-licenses
55     substituteInPlace scripts/build-licenses.sh --replace-fail \
56       '$GO run ''${GO_FLAGS} github.com/google/go-licenses' 'go-licenses'
58     patchShebangs scripts/
59     substituteInPlace scripts/regression-test-demo.sh \
60       --replace-fail 'sh scripts/run-timedemo.sh' "$testing_infra/scripts/run-timedemo.sh"
62     substituteInPlace Makefile --replace-fail \
63       'CPPFLAGS ?= -DNDEBUG' \
64       'CPPFLAGS ?= -DNDEBUG -D_GLFW_GLX_LIBRARY=\"${lib.getLib libGL}/lib/libGL.so\" -D_GLFW_EGL_LIBRARY=\"${lib.getLib libGL}/lib/libEGL.so\"'
65   '';
67   overrideModAttrs = (_: {
68     # We can't patch in the path to libGL directly because
69     # this is a fixed output derivation and when the path to libGL
70     # changes, the hash would change.
71     # To work around this, use environment variables.
72     postBuild = ''
73       substituteInPlace 'vendor/github.com/hajimehoshi/ebiten/v2/internal/graphicsdriver/opengl/gl/procaddr_linbsd.go' \
74         --replace-fail \
75         'import (' \
76         'import ("os"' \
77         --replace-fail \
78         '{"libGL.so", "libGL.so.2", "libGL.so.1", "libGL.so.0"}' \
79         '{os.Getenv("EBITENGINE_LIBGL")}' \
80         --replace-fail \
81         '{"libGLESv2.so", "libGLESv2.so.2", "libGLESv2.so.1", "libGLESv2.so.0"}' \
82         '{os.Getenv("EBITENGINE_LIBGLESv2")}'
83     '';
84   });
86   makeFlags = [
87     "BUILDTYPE=release"
88   ];
90   buildPhase = ''
91     runHook preBuild
92     AAAAXY_BUILD_USE_VERSION_FILE=true make $makeFlags
93     runHook postBuild
94   '';
96   postInstall = ''
97     install -Dm755 'aaaaxy' -t "$out/bin/"
98     install -Dm444 'aaaaxy.svg' -t "$out/share/icons/hicolor/scalable/apps/"
99     install -Dm644 'aaaaxy.png' -t "$out/share/icons/hicolor/128x128/apps/"
100     install -Dm644 'aaaaxy.desktop' -t "$out/share/applications/"
101     install -Dm644 'io.github.divverent.aaaaxy.metainfo.xml' -t "$out/share/metainfo/"
103     wrapProgram $out/bin/aaaaxy \
104       --set EBITENGINE_LIBGL     '${lib.getLib libGL}/lib/libGL.so' \
105       --set EBITENGINE_LIBGLESv2 '${lib.getLib libGL}/lib/libGLESv2.so'
107     install -Dm755 'scripts/run-timedemo.sh' -t "$testing_infra/scripts/"
108     install -Dm755 'scripts/regression-test-demo.sh' -t "$testing_infra/scripts/"
109     install -Dm644 'assets/demos/benchmark.dem' -t "$testing_infra/assets/demos/"
110   '';
112   passthru.tests = {
113     aaaaxy = nixosTests.aaaaxy;
114   };
116   strictDeps = true;
118   meta = with lib; {
119     description = "Nonlinear 2D puzzle platformer taking place in impossible spaces";
120     mainProgram = "aaaaxy";
121     homepage = "https://divverent.github.io/aaaaxy/";
122     license = licenses.asl20;
123     maintainers = with maintainers; [ Luflosi ];
124     platforms = platforms.linux;
125   };