1{ lib
2, stdenv
3, fetchFromGitHub
4, SDL2
5, cmake
6, ffmpeg
7, libedit
8, libelf
9, libepoxy
10, libzip
11, lua5_4
12, minizip
13, pkg-config
14, libsForQt5
15, wrapGAppsHook
16}:
17
18let
19 lua = lua5_4;
20 inherit (libsForQt5)
21 qtbase
22 qtmultimedia
23 qttools
24 wrapQtAppsHook;
25in
26stdenv.mkDerivation (finalAttrs: {
27 pname = "mgba";
28 version = "0.10.2";
29
30 src = fetchFromGitHub {
31 owner = "mgba-emu";
32 repo = "mgba";
33 rev = finalAttrs.version;
34 hash = "sha256-+AwIYhnqp984Banwb7zmB5yzenExfLLU1oGJSxeTl/M=";
35 };
36
37 nativeBuildInputs = [
38 cmake
39 pkg-config
40 wrapGAppsHook
41 wrapQtAppsHook
42 ];
43
44 dontWrapGApps = true;
45 preFixup = ''
46 qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
47 '';
48
49 buildInputs = [
50 SDL2
51 ffmpeg
52 libedit
53 libelf
54 libepoxy
55 libzip
56 lua
57 minizip
58 qtbase
59 qtmultimedia
60 qttools
61 ];
62
63 meta = with lib; {
64 homepage = "https://mgba.io";
65 description = "A modern GBA emulator with a focus on accuracy";
66 longDescription = ''
67 mGBA is a new Game Boy Advance emulator written in C.
68
69 The project started in April 2013 with the goal of being fast enough to
70 run on lower end hardware than other emulators support, without
71 sacrificing accuracy or portability. Even in the initial version, games
72 generally play without problems. It is loosely based on the previous
73 GBA.js emulator, although very little of GBA.js can still be seen in mGBA.
74
75 Other goals include accurate enough emulation to provide a development
76 environment for homebrew software, a good workflow for tool-assist
77 runners, and a modern feature set for emulators that older emulators may
78 not support.
79 '';
80 changelog = "https://github.com/mgba-emu/mgba/blob/${finalAttrs.version}/CHANGES";
81 license = licenses.mpl20;
82 maintainers = with maintainers; [ MP2E AndersonTorres ];
83 platforms = platforms.linux;
84 };
85})