nixpkgs/pkgs/development/libraries/spice-gtk/default.nix
Jonathan Ringer 9bb3fccb5b treewide: pkgs.pkgconfig -> pkgs.pkg-config, move pkgconfig to alias.nix
continuation of #109595

pkgconfig was aliased in 2018, however, it remained in
all-packages.nix due to its wide usage. This cleans
up the remaining references to pkgs.pkgsconfig and
moves the entry to aliases.nix.

python3Packages.pkgconfig remained unchanged because
it's the canonical name of the upstream package
on pypi.
2021-01-19 01:16:25 -08:00

136 lines
3.1 KiB
Nix

{ stdenv
, fetchurl
, acl
, cyrus_sasl
, docbook_xsl
, epoxy
, gettext
, gobject-introspection
, gst_all_1
, gtk-doc
, gtk3
, json-glib
, libcacard
, libdrm
, libjpeg_turbo
, libopus
, libsoup
, libusb1
, lz4
, meson
, ninja
, openssl
, perl
, phodav
, pixman
, pkg-config
, polkit
, python3
, spice-protocol
, usbredir
, usbutils
, vala
, zlib
, withPolkit ? true
}:
# If this package is built with polkit support (withPolkit=true),
# usb redirection reqires spice-client-glib-usb-acl-helper to run setuid root.
# The helper confirms via polkit that the user has an active session,
# then adds a device acl entry for that user.
# Example NixOS config to create a setuid wrapper for the helper:
# security.wrappers.spice-client-glib-usb-acl-helper.source =
# "${pkgs.spice-gtk}/bin/spice-client-glib-usb-acl-helper";
# On non-NixOS installations, make a setuid copy of the helper
# outside the store and adjust PATH to find the setuid version.
# If this package is built without polkit support (withPolkit=false),
# usb redirection requires read-write access to usb devices.
# This can be granted by adding users to a custom group like "usb"
# and using a udev rule to put all usb devices in that group.
# Example NixOS config:
# users.groups.usb = {};
# users.users.dummy.extraGroups = [ "usb" ];
# services.udev.extraRules = ''
# KERNEL=="*", SUBSYSTEMS=="usb", MODE="0664", GROUP="usb"
# '';
stdenv.mkDerivation rec {
pname = "spice-gtk";
version = "0.37";
outputs = [ "out" "dev" "devdoc" "man" ];
src = fetchurl {
url = "https://www.spice-space.org/download/gtk/${pname}-${version}.tar.bz2";
sha256 = "1drvj8y35gnxbnrxsipwi15yh0vs9ixzv4wslz6r3lra8w3bfa0z";
};
postPatch = ''
# get rid of absolute path to helper in store so we can use a setuid wrapper
substituteInPlace src/usb-acl-helper.c \
--replace 'ACL_HELPER_PATH"/' '"'
'';
nativeBuildInputs = [
docbook_xsl
gettext
gobject-introspection
gtk-doc
libsoup
meson
ninja
perl
pkg-config
python3
python3.pkgs.pyparsing
python3.pkgs.six
vala
];
propagatedBuildInputs = [
gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good
];
buildInputs = [
cyrus_sasl
epoxy
gtk3
json-glib
libcacard
libdrm
libjpeg_turbo
libopus
libusb1
lz4
openssl
phodav
pixman
spice-protocol
usbredir
zlib
] ++ stdenv.lib.optionals withPolkit [ polkit acl usbutils ] ;
PKG_CONFIG_POLKIT_GOBJECT_1_POLICYDIR = "${placeholder "out"}/share/polkit-1/actions";
mesonFlags = [
"-Dcelt051=disabled"
"-Dpulse=disabled" # is deprecated upstream
];
meta = with stdenv.lib; {
description = "GTK 3 SPICE widget";
longDescription = ''
spice-gtk is a GTK 3 SPICE widget. It features glib-based
objects for SPICE protocol parsing and a gtk widget for embedding
the SPICE display into other applications such as virt-manager.
Python bindings are available too.
'';
homepage = "https://www.spice-space.org/";
license = licenses.lgpl21;
maintainers = [ maintainers.xeji ];
platforms = platforms.linux;
};
}