{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, gi-docgen, glib, libxml2, gobject-introspection, enableGstPlugin ? true, enableViewer ? true, gst_all_1, gtk3, wrapGAppsHook3, enableUsb ? true, libusb1, enablePacketSocket ? true, enableFastHeartbeat ? false, }: assert enableGstPlugin -> gst_all_1 != null; assert enableViewer -> enableGstPlugin; assert enableViewer -> gtk3 != null; assert enableViewer -> wrapGAppsHook3 != null; stdenv.mkDerivation rec { pname = "aravis"; version = "0.8.33"; src = fetchFromGitHub { owner = "AravisProject"; repo = pname; rev = version; sha256 = "sha256-D6zcTCaFJxJ2VhhsgEFu5+3Xx1MJov4ryrtA0VkjZlY="; }; outputs = [ "bin" "dev" "out" "lib" ]; nativeBuildInputs = [ meson ninja pkg-config gi-docgen gobject-introspection ] ++ lib.optional enableViewer wrapGAppsHook3; buildInputs = [ glib libxml2 ] ++ lib.optional enableUsb libusb1 ++ lib.optionals (enableViewer || enableGstPlugin) ( with gst_all_1; [ gstreamer gst-plugins-base (gst-plugins-good.override { gtkSupport = true; }) gst-plugins-bad ] ) ++ lib.optionals (enableViewer) [ gtk3 ]; mesonFlags = [ ] ++ lib.optional enableFastHeartbeat "-Dfast-heartbeat=enabled" ++ lib.optional (!enableGstPlugin) "-Dgst-plugin=disabled" ++ lib.optional (!enableViewer) "-Dviewer=disabled" ++ lib.optional (!enableUsb) "-Dviewer=disabled" ++ lib.optional (!enablePacketSocket) "-Dpacket-socket=disabled"; doCheck = true; meta = { description = "Library for video acquisition using GenICam cameras"; longDescription = '' Implements the gigabit ethernet and USB3 protocols used by industrial cameras. ''; # the documentation is the best working homepage that's not the Github repo homepage = "https://aravisproject.github.io/docs/aravis-0.8"; license = lib.licenses.lgpl2; maintainers = with lib.maintainers; [ tpw_rules ]; platforms = lib.platforms.unix; }; }