chezmoi: 2.56.0 -> 2.57.0 (#372077)
[NixPkgs.git] / pkgs / by-name / me / mesen / package.nix
blob43957a1c7004a829aa64b8af227bdf29ef175f51
2   lib,
3   clangStdenv,
4   buildDotnetModule,
5   dotnetCorePackages,
6   fetchFromGitHub,
7   wrapGAppsHook3,
8   gtk3,
9   SDL2,
12 buildDotnetModule rec {
13   pname = "mesen";
14   version = "2.0.0-unstable-2024-12-25";
16   src = fetchFromGitHub {
17     owner = "SourMesen";
18     repo = "Mesen2";
19     rev = "6820db37933002089a04d356d8469481e915a359";
20     hash = "sha256-TzGMZr351XvVj/wARWJxRisRb5JlkyzdjCVYbwydBVE=";
21   };
23   patches = [
24     # the nightly avalonia repository url is still queried, which errors out
25     # even if we don't actually need any nightly versions
26     ./dont-use-alternative-restore-sources.patch
27     # upstream has a weird library loading mechanism, which we override with a more sane alternative
28     ./dont-zip-libraries.patch
29   ];
31   dotnet-sdk = dotnetCorePackages.sdk_8_0;
32   dotnet-runtime = dotnetCorePackages.runtime_8_0;
34   projectFile = [ "UI/UI.csproj" ];
36   dotnetFlags = [
37     "-p:RuntimeIdentifier=${dotnetCorePackages.systemToDotnetRid clangStdenv.hostPlatform.system}"
38   ];
40   executables = [ "Mesen" ];
42   nugetDeps = ./deps.json;
44   nativeBuildInputs = [ wrapGAppsHook3 ];
46   runtimeDeps = [ gtk3 ];
48   postInstall = ''
49     ln -s ${passthru.core}/lib/MesenCore.* $out/lib/mesen
50   '';
52   # according to upstream, compiling with clang creates a faster binary
53   passthru.core = clangStdenv.mkDerivation {
54     pname = "mesen-core";
55     inherit version src;
57     enableParallelBuilding = true;
59     strictDeps = true;
61     nativeBuildInputs = [ SDL2 ];
63     buildInputs = [ SDL2 ];
65     makeFlags = [ "core" ];
67     installPhase = ''
68       runHook preInstall
69       install -Dm755 InteropDLL/obj.*/MesenCore.* -t $out/lib
70       runHook postInstall
71     '';
72   };
74   meta = {
75     badPlatforms = [ "aarch64-linux" ]; # not sure what the issue is
76     description = "Multi-system emulator that supports NES, SNES, Game Boy (Color) and PC Engine games";
77     homepage = "https://www.mesen.ca";
78     license = lib.licenses.gpl3Plus;
79     mainProgram = "Mesen";
80     maintainers = with lib.maintainers; [ tomasajt ];
81   };