{ lib , stdenv , bash-completion , fetchurl , fetchpatch , gdbm , glib , gst_all_1 , gsettings-desktop-schemas , gtk-vnc , gtk3 , intltool , libcap , libgovirt # Currently unsupported. According to upstream, libgovirt is for a very narrow # use-case and we don't currently cover it in Nixpkgs. It's safe to disable. # https://gitlab.com/virt-viewer/virt-viewer/-/issues/100#note_1265011223 # Can be enabled again once this is merged: # https://gitlab.com/virt-viewer/virt-viewer/-/merge_requests/129 , ovirtSupport ? false , libvirt , libvirt-glib , libxml2 , meson , ninja , pkg-config , python3 , shared-mime-info , spice-gtk , spice-protocol , spiceSupport ? true , vte , wrapGAppsHook3 }: stdenv.mkDerivation rec { pname = "virt-viewer"; version = "11.0"; src = fetchurl { url = "https://releases.pagure.org/virt-viewer/virt-viewer-${version}.tar.xz"; sha256 = "sha256-pD+iMlxMHHelyMmAZaww7wURohrJjlkPIjQIabrZq9A="; }; patches = [ # Fix build with meson 0.61. Should be fixed in the next release. # https://gitlab.com/virt-viewer/virt-viewer/-/merge_requests/120 (fetchpatch { url = "https://gitlab.com/virt-viewer/virt-viewer/-/commit/98d9f202ef768f22ae21b5c43a080a1aa64a7107.patch"; sha256 = "sha256-3AbnkbhWOh0aNjUkmVoSV/9jFQtvTllOr7plnkntb2o="; }) ]; nativeBuildInputs = [ glib intltool meson ninja pkg-config python3 shared-mime-info wrapGAppsHook3 ]; buildInputs = [ gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good bash-completion glib gsettings-desktop-schemas gtk-vnc gtk3 libvirt libvirt-glib libxml2 vte ] ++ lib.optionals ovirtSupport [ libgovirt ] ++ lib.optionals spiceSupport ([ gdbm spice-gtk spice-protocol ] ++ lib.optionals stdenv.hostPlatform.isLinux [ libcap ]); # Required for USB redirection PolicyKit rules file propagatedUserEnvPkgs = lib.optional spiceSupport spice-gtk; mesonFlags = [ (lib.mesonEnable "ovirt" ovirtSupport) ]; strictDeps = true; postPatch = '' patchShebangs build-aux/post_install.py ''; meta = with lib; { description = "Viewer for remote virtual machines"; maintainers = with maintainers; [ raskin atemu ]; platforms = with platforms; linux ++ darwin; license = licenses.gpl2; }; passthru = { updateInfo = { downloadPage = "https://virt-manager.org/download.html"; }; }; }