{ lib, stdenv, fetchurl, substituteAll, meson, ninja, pkg-config, gettext, gperf, glib, sqlite, libarchive, libdmapsharing, libsoup_3, gnome, libxml2, lua5_4, liboauth, libmediaart, grilo, gst_all_1, gnome-online-accounts, gmime, gom, json-glib, avahi, tinysparql, dleyna-server, itstool, totem-pl-parser, }: stdenv.mkDerivation rec { pname = "grilo-plugins"; version = "0.3.16"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; sha256 = "/m9Nvlhsa4uiQGOU4gLyLQCdZCqW6zpU8y9qIdCEzcs="; }; patches = [ # grl-chromaprint requires the following GStreamer elements: # * fakesink (gstreamer) # * playbin (gst-plugins-base) # * chromaprint (gst-plugins-bad) (substituteAll { src = ./chromaprint-gst-plugins.patch; load_plugins = lib.concatMapStrings (plugin: ''gst_registry_scan_path(gst_registry_get(), "${lib.getLib plugin}/lib/gstreamer-1.0");'') ( with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-bad ] ); }) ]; strictDeps = true; depsBuildBuild = [ pkg-config ]; nativeBuildInputs = [ meson ninja pkg-config gettext itstool gperf # for lua-factory glib # glib-compile-resources ]; buildInputs = [ grilo libxml2 # libgdata lua5_4 liboauth sqlite gnome-online-accounts totem-pl-parser libarchive libdmapsharing libsoup_3 gmime gom json-glib avahi libmediaart tinysparql dleyna-server gst_all_1.gstreamer ]; passthru = { updateScript = gnome.updateScript { packageName = pname; versionPolicy = "none"; }; }; meta = with lib; { homepage = "https://gitlab.gnome.org/GNOME/grilo-plugins"; description = "Collection of plugins for the Grilo framework"; maintainers = teams.gnome.members; license = licenses.lgpl21Plus; platforms = platforms.unix; }; }