1{
2 lib,
3 stdenv,
4 fetchurl,
5 replaceVars,
6 meson,
7 ninja,
8 pkg-config,
9 gettext,
10 gperf,
11 glib,
12 sqlite,
13 libarchive,
14 libdmapsharing,
15 libsoup_3,
16 gnome,
17 libxml2,
18 lua5_4,
19 liboauth,
20 libmediaart,
21 grilo,
22 gst_all_1,
23 gnome-online-accounts,
24 gmime,
25 gom,
26 json-glib,
27 avahi,
28 tinysparql,
29 dleyna,
30 itstool,
31 totem-pl-parser,
32}:
33
34stdenv.mkDerivation rec {
35 pname = "grilo-plugins";
36 version = "0.3.16";
37
38 src = fetchurl {
39 url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
40 sha256 = "/m9Nvlhsa4uiQGOU4gLyLQCdZCqW6zpU8y9qIdCEzcs=";
41 };
42
43 patches = [
44 # grl-chromaprint requires the following GStreamer elements:
45 # * fakesink (gstreamer)
46 # * playbin (gst-plugins-base)
47 # * chromaprint (gst-plugins-bad)
48 (replaceVars ./chromaprint-gst-plugins.patch {
49 load_plugins =
50 lib.concatMapStrings
51 (plugin: ''gst_registry_scan_path(gst_registry_get(), "${lib.getLib plugin}/lib/gstreamer-1.0");'')
52 (
53 with gst_all_1;
54 [
55 gstreamer
56 gst-plugins-base
57 gst-plugins-bad
58 ]
59 );
60 })
61 ];
62
63 strictDeps = true;
64
65 depsBuildBuild = [
66 pkg-config
67 ];
68
69 nativeBuildInputs = [
70 meson
71 ninja
72 pkg-config
73 gettext
74 itstool
75 gperf # for lua-factory
76 glib # glib-compile-resources
77 ];
78
79 buildInputs = [
80 grilo
81 libxml2
82 # libgdata
83 lua5_4
84 liboauth
85 sqlite
86 gnome-online-accounts
87 totem-pl-parser
88 libarchive
89 libdmapsharing
90 libsoup_3
91 gmime
92 gom
93 json-glib
94 avahi
95 libmediaart
96 tinysparql
97 dleyna
98 gst_all_1.gstreamer
99 ];
100
101 passthru = {
102 updateScript = gnome.updateScript {
103 packageName = pname;
104 versionPolicy = "none";
105 };
106 };
107
108 meta = with lib; {
109 homepage = "https://gitlab.gnome.org/GNOME/grilo-plugins";
110 description = "Collection of plugins for the Grilo framework";
111 teams = [ teams.gnome ];
112 license = licenses.lgpl21Plus;
113 platforms = platforms.unix;
114 };
115}