summary refs log tree commit diff
path: root/pkgs/misc/emulators/mgba/default.nix
blob: c15c8a0ad76a99f30013b29e754585542a4b6302 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
{ lib
, stdenv
, fetchFromGitHub
, SDL2
, cmake
, epoxy
, ffmpeg
, imagemagick
, libedit
, libelf
, libzip
, copyDesktopItems
, makeDesktopItem
, minizip
, pkg-config
, qtbase
, qtmultimedia
, qttools
, wrapQtAppsHook
}:

stdenv.mkDerivation rec {
  pname = "mgba";
  version = "0.9.2";

  src = fetchFromGitHub {
    owner = "mgba-emu";
    repo = "mgba";
    rev = version;
    hash = "sha256-A48PVUCekdRYel/BddPCeIcEDllOvcU7pk4i4P58dpo=";
  };

  nativeBuildInputs = [
    cmake
    pkg-config
    wrapQtAppsHook
  ];
  buildInputs = [
    SDL2
    epoxy
    ffmpeg
    imagemagick
    libedit
    libelf
    libzip
    minizip
    qtbase
    qtmultimedia
    qttools
  ];

  desktopItems = [
    (makeDesktopItem {
      name = "mgba";
      exec = "mgba-qt";
      icon = "mgba";
      comment = "A Game Boy Advance Emulator";
      desktopName = "mgba";
      genericName = "Game Boy Advance Emulator";
      categories = "Game;Emulator;";
      startupNotify = "false";
    })
  ];

  meta = with lib; {
    homepage = "https://mgba.io";
    description = "A modern GBA emulator with a focus on accuracy";
    longDescription = ''
      mGBA is a new Game Boy Advance emulator written in C.

      The project started in April 2013 with the goal of being fast enough to
      run on lower end hardware than other emulators support, without
      sacrificing accuracy or portability. Even in the initial version, games
      generally play without problems. It is loosely based on the previous
      GBA.js emulator, although very little of GBA.js can still be seen in mGBA.

      Other goals include accurate enough emulation to provide a development
      environment for homebrew software, a good workflow for tool-assist
      runners, and a modern feature set for emulators that older emulators may
      not support.
    '';

    license = licenses.mpl20;
    maintainers = with maintainers; [ MP2E AndersonTorres ];
    platforms = platforms.linux;
  };
}
# TODO [ AndersonTorres ]: use desktopItem functions