pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / games / airshipper / default.nix
blob0d55a703c0d54994ad93e5aabf2c71c8fb6c3ca7
1 { lib
2 , rustPlatform
3 , fetchFromGitLab
4 , openssl
5 , libGL
6 , vulkan-loader
7 , wayland
8 , wayland-protocols
9 , libxkbcommon
10 , libX11
11 , libXrandr
12 , libXi
13 , libXcursor
14 , udev
15 , alsa-lib
16 , stdenv
17 , libxcb
18 , bzip2
19 , cmake
20 , fontconfig
21 , freetype
22 , pkg-config
23 , makeWrapper
24 , writeShellScript
25 , patchelf
27 let
28   version = "0.14.0";
29   # Patch for airshipper to install veloren
30   patch = let
31     runtimeLibs = [
32       udev
33       alsa-lib
34       stdenv.cc.cc.lib
35       libxkbcommon
36       libxcb
37       libX11
38       libXcursor
39       libXrandr
40       libXi
41       vulkan-loader
42       libGL
43     ];
44   in
45     writeShellScript "patch" ''
46       echo "making binaries executable"
47       chmod +x {veloren-voxygen,veloren-server-cli}
48       echo "patching dynamic linkers"
49       ${patchelf}/bin/patchelf \
50         --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
51         veloren-server-cli
52       ${patchelf}/bin/patchelf \
53         --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
54         --set-rpath "${lib.makeLibraryPath runtimeLibs}" \
55         veloren-voxygen
56   '';
58 rustPlatform.buildRustPackage {
59   pname = "airshipper";
60   inherit version;
62   src = fetchFromGitLab {
63     owner = "Veloren";
64     repo = "airshipper";
65     rev = "v${version}";
66     hash = "sha256-+ZU3WAjmPDAFAevebePcIlYcgSYSJJ3LyvwbTBKGUH4=";
67   };
69   cargoHash = "sha256-mwfYCVcOH2zFr76W9ZC4t/LmEwO5P2eGYXRVkwn6Fm4=";
71   buildInputs = [
72     fontconfig
73     openssl
74     wayland
75     wayland-protocols
76     libxkbcommon
77     libX11
78     libXrandr
79     libXi
80     libXcursor
81   ];
82   nativeBuildInputs = [ cmake pkg-config makeWrapper ];
84   RUSTC_BOOTSTRAP = 1; # We need rust unstable features
86   postInstall = ''
87     install -Dm444 -t "$out/share/applications" "client/assets/net.veloren.airshipper.desktop"
88     install -Dm444    "client/assets/net.veloren.airshipper.png"  "$out/share/icons/net.veloren.airshipper.png"
89   '';
91   postFixup =
92     let
93       libPath = lib.makeLibraryPath [
94         libGL
95         vulkan-loader
96         wayland
97         wayland-protocols
98         bzip2
99         fontconfig
100         freetype
101         libxkbcommon
102         libX11
103         libXrandr
104         libXi
105         libXcursor
106       ];
107     in
108     ''
109       patchelf --set-rpath "${libPath}" "$out/bin/airshipper"
110       wrapProgram "$out/bin/airshipper" --set VELOREN_PATCHER "${patch}"
111     '';
113   doCheck = false;
114   cargoBuildFlags = [ "--package" "airshipper" ];
115   cargoTestFlags = [ "--package" "airshipper" ];
117   meta = with lib; {
118     description = "Provides automatic updates for the voxel RPG Veloren";
119     mainProgram = "airshipper";
120     homepage = "https://www.veloren.net";
121     license = licenses.gpl3;
122     maintainers = with maintainers; [ yusdacra ];
123   };