1{ lib
2, stdenv
3, fetchurl
4, fetchpatch
5, cmake
6, meson
7, ninja
8, pkg-config
9, libepoxy
10, glib
11, gtk3
12, libpulseaudio
13, libsamplerate
14, gobject-introspection
15, vala
16, gtk-doc
17}:
18
19stdenv.mkDerivation rec {
20 pname = "retro-gtk";
21 version = "1.0.2";
22
23 src = fetchurl {
24 url = "mirror://gnome/sources/retro-gtk/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
25 sha256 = "1lnb7dwcj3lrrvdzd85dxwrlid28xf4qdbrgfjyg1wn1z6sv063i";
26 };
27
28 patches = [
29 # https://gitlab.gnome.org/GNOME/retro-gtk/-/merge_requests/150
30 ./gio-unix.patch
31 # fix build with meson 0.60 (https://gitlab.gnome.org/GNOME/retro-gtk/-/merge_requests/167)
32 (fetchpatch {
33 url = "https://gitlab.gnome.org/GNOME/retro-gtk/-/commit/8016c10e7216394bc66281f2d9be740140b6fad6.patch";
34 sha256 = "sha256-HcQnqadK5sJM5mMqi4KERkJM3H+MUl8AJAorpFDsJ68=";
35 })
36 ];
37
38 nativeBuildInputs = [
39 gobject-introspection
40 gtk-doc
41 meson
42 ninja
43 pkg-config
44 vala
45 ];
46
47 buildInputs = [
48 libepoxy
49 glib
50 gtk3
51 libpulseaudio
52 libsamplerate
53 ];
54
55 meta = with lib; {
56 description = "The GTK Libretro frontend framework";
57 longDescription = ''
58 Libretro is a plugin format design to implement video game
59 console emulators, video games and similar multimedia
60 software. Such plugins are called Libretro cores.
61
62 RetroGTK is a framework easing the use of Libretro cores in
63 conjunction with GTK.
64
65 It encourages the cores to be installed in a well defined
66 centralized place — namely the libretro subdirectory of your lib
67 directory — and it recommends them to come with Libretro core
68 descriptors.
69 '';
70 homepage = "https://gitlab.gnome.org/GNOME/retro-gtk";
71 changelog = "https://gitlab.gnome.org/GNOME/retro-gtk/-/blob/master/NEWS";
72 license = licenses.gpl3Plus;
73 maintainers = [ maintainers.DamienCassou ];
74 platforms = platforms.all;
75 broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/retro-gtk.x86_64-darwin
76 };
77}