summary refs log tree commit diff
path: root/pkgs/development/libraries/spice-gtk
diff options
context:
space:
mode:
authorxeji <xeji@cat3.de>2018-02-20 10:50:50 +0100
committerxeji <xeji@cat3.de>2018-03-04 17:47:55 +0100
commit1894a2ace97cc61cf833f712581d31cf2c650c35 (patch)
treed796a249de7f918344aa840fd0dfb07943235031 /pkgs/development/libraries/spice-gtk
parent14c6c286fcf6c7fa341511ac4c38b2d580a7ff33 (diff)
downloadnixpkgs-1894a2ace97cc61cf833f712581d31cf2c650c35.tar
nixpkgs-1894a2ace97cc61cf833f712581d31cf2c650c35.tar.gz
nixpkgs-1894a2ace97cc61cf833f712581d31cf2c650c35.tar.bz2
nixpkgs-1894a2ace97cc61cf833f712581d31cf2c650c35.tar.lz
nixpkgs-1894a2ace97cc61cf833f712581d31cf2c650c35.tar.xz
nixpkgs-1894a2ace97cc61cf833f712581d31cf2c650c35.tar.zst
nixpkgs-1894a2ace97cc61cf833f712581d31cf2c650c35.zip
spice-gtk: fix usb redirection
Build with polkit and acl to enable usb redirection
in virt-viewer and virt-manager. Fixes #27199
usb redirection requires a setuid wrapper, see comment in code.
Diffstat (limited to 'pkgs/development/libraries/spice-gtk')
-rw-r--r--pkgs/development/libraries/spice-gtk/default.nix17
1 files changed, 16 insertions, 1 deletions
diff --git a/pkgs/development/libraries/spice-gtk/default.nix b/pkgs/development/libraries/spice-gtk/default.nix
index e4c614bf3b3..440ee1b2c35 100644
--- a/pkgs/development/libraries/spice-gtk/default.nix
+++ b/pkgs/development/libraries/spice-gtk/default.nix
@@ -1,6 +1,7 @@
 { stdenv, fetchurl, pkgconfig, spice-protocol, gettext, celt_0_5_1
 , openssl, libpulseaudio, pixman, gobjectIntrospection, libjpeg_turbo, zlib
 , cyrus_sasl, python2Packages, autoreconfHook, usbredir, libsoup
+, polkit, acl, usbutils, vala
 , gtk3, epoxy }:
 
 with stdenv.lib;
@@ -18,19 +19,33 @@ in stdenv.mkDerivation rec {
   buildInputs = [
     spice-protocol celt_0_5_1 openssl libpulseaudio pixman gobjectIntrospection
     libjpeg_turbo zlib cyrus_sasl python pygtk usbredir gtk3 epoxy
+    polkit acl usbutils
   ];
 
-  nativeBuildInputs = [ pkgconfig gettext libsoup autoreconfHook ];
+  nativeBuildInputs = [ pkgconfig gettext libsoup autoreconfHook vala ];
 
   NIX_CFLAGS_COMPILE = "-fno-stack-protector";
 
+  # put polkit action in the $out/share/polkit-1/actions
   preAutoreconf = ''
+    substituteInPlace configure.ac \
+      --replace 'POLICYDIR=`''${PKG_CONFIG} polkit-gobject-1 --variable=policydir`' "POLICYDIR=$out/share/polkit-1/actions"
   '';
 
   configureFlags = [
     "--with-gtk3"
   ];
 
+  # usb redirection needs spice-client-glib-usb-acl-helper to run setuid root
+  # the helper then uses polkit to check access
+  # in nixos, enable this with
+  # security.wrappers.spice-client-glib-usb-acl-helper.source =
+  #   "${pkgs.spice_gtk}/bin/spice-client-glib-usb-acl-helper.real";
+  postFixup = ''
+    mv $out/bin/spice-client-glib-usb-acl-helper $out/bin/spice-client-glib-usb-acl-helper.real
+    ln -sf /run/wrappers/bin/spice-client-glib-usb-acl-helper $out/bin/spice-client-glib-usb-acl-helper
+  '';
+
   dontDisableStatic = true; # Needed by the coroutine test
 
   enableParallelBuilding = true;