Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / emulators / ruffle / default.nix
blob0d8cc1474aa3e192de723a077204405cb53ed2ea
1 { alsa-lib
2 , fetchFromGitHub
3 , makeWrapper
4 , openssl
5 , pkg-config
6 , python3
7 , rustPlatform
8 , lib
9 , wayland
10 , xorg
11 , vulkan-loader
12 , jre_minimal
13 , cairo
14 , gtk3
15 , wrapGAppsHook
16 , gsettings-desktop-schemas
17 , glib
20 rustPlatform.buildRustPackage rec {
21   pname = "ruffle";
22   version = "nightly-2023-04-10";
24   src = fetchFromGitHub {
25     owner = "ruffle-rs";
26     repo = pname;
27     rev = version;
28     sha256 = "sha256-u5Ri9KnYzE3JedUP9fGgYeG8G9uxrL6/zt3KPiKjhU0=";
29   };
31   nativeBuildInputs = [
32     glib
33     gsettings-desktop-schemas
34     jre_minimal
35     makeWrapper
36     pkg-config
37     python3
38     wrapGAppsHook
39   ];
41   buildInputs = [
42     alsa-lib
43     cairo
44     gtk3
45     openssl
46     wayland
47     xorg.libX11
48     xorg.libXcursor
49     xorg.libXrandr
50     xorg.libXi
51     xorg.libxcb
52     xorg.libXrender
53     vulkan-loader
54   ];
56   dontWrapGApps = true;
58   postFixup = ''
59     # This name is too generic
60     mv $out/bin/exporter $out/bin/ruffle_exporter
62     vulkanWrapperArgs+=(
63       --prefix LD_LIBRARY_PATH ':' ${vulkan-loader}/lib
64     )
66     wrapProgram $out/bin/ruffle_exporter \
67       "''${vulkanWrapperArgs[@]}"
69     wrapProgram $out/bin/ruffle_desktop \
70       "''${vulkanWrapperArgs[@]}" \
71       "''${gappsWrapperArgs[@]}"
72   '';
74   cargoBuildFlags = [ "--workspace" ];
76   # Currently, buildRustPackage can't handle having both the Crates.io dasp-0.11
77   # and the git dasp-0.11, as it tries to symlink both to the same place. For
78   # now, unify both dasp versions to the (newer) Git version.
79   # Related issues: #22177, #183344
80   cargoPatches = [ ./unify-dasp-version.patch ];
82   cargoLock = {
83     lockFile = ./Cargo.lock;
84     outputHashes = {
85       "dasp-0.11.0" = "sha256-CZNgTLL4IG7EJR2xVp9X9E5yre8foY6VX2hUMRawxiI=";
86       "flash-lso-0.5.0" = "sha256-9uH3quxRzLtmHJs5WF/GRxWkXL/KFyOl182HKcHNnuc=";
87       "gc-arena-0.2.2" = "sha256-/H9VcTesBD+IA7bUf208b0HQ/cIUDAz9TJBBywf6akA=";
88       "h263-rs-0.1.0" = "sha256-4kBg09VHyiQTvUbvcTb5g/BVcOpRFZ1fVEuRWXv5XwE=";
89       "nellymoser-rs-0.1.2" = "sha256-GykDQc1XwySOqfxW/OcSxkKCFJyVmwSLy/CEBcwcZJs=";
90       "nihav_codec_support-0.1.0" = "sha256-rE9AIiQr+PnHC9xfDQULndSfFHSX4sqKkCAQYVNaJcQ=";
91     };
92   };
94   meta = with lib; {
95     description = "An Adobe Flash Player emulator written in the Rust programming language.";
96     homepage = "https://ruffle.rs/";
97     license = with licenses; [ mit asl20 ];
98     maintainers = with maintainers; [ govanify ];
99     platforms = platforms.linux;
100   };