mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-13 16:34:27 +00:00
c90b6a859b
The polkit support in pcsclite is entirely optional but package enables it unconditionally and this breaks connecting to the pcscd daemon on systems without polkit. The fix is making this configurable and automatically disabling `polkitSupport` when the polkit service is disabled.
73 lines
1.8 KiB
Nix
73 lines
1.8 KiB
Nix
{ stdenv
|
|
, lib
|
|
, fetchurl
|
|
, autoreconfHook
|
|
, autoconf-archive
|
|
, pkg-config
|
|
, perl
|
|
, python3
|
|
, dbus
|
|
, polkit
|
|
, systemdMinimal
|
|
, IOKit
|
|
, pname ? "pcsclite"
|
|
, polkitSupport ? false
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
inherit pname;
|
|
version = "1.9.5";
|
|
|
|
outputs = [ "bin" "out" "dev" "doc" "man" ];
|
|
|
|
src = fetchurl {
|
|
url = "https://pcsclite.apdu.fr/files/pcsc-lite-${version}.tar.bz2";
|
|
hash = "sha256-nuP5szNTdWIXeJNVmtT3uNXCPr6Cju9TBWwC2xQEnQg=";
|
|
};
|
|
|
|
patches = [ ./no-dropdir-literals.patch ];
|
|
|
|
postPatch = ''
|
|
sed -i configure.ac \
|
|
-e "s@polkit_policy_dir=.*@polkit_policy_dir=$bin/share/polkit-1/actions@"
|
|
'';
|
|
|
|
configureFlags = [
|
|
"--enable-confdir=/etc"
|
|
# The OS should care on preparing the drivers into this location
|
|
"--enable-usbdropdir=/var/lib/pcsc/drivers"
|
|
(lib.enableFeature stdenv.isLinux "systemd")
|
|
(lib.enableFeature polkitSupport "polkit")
|
|
] ++ lib.optionals stdenv.isLinux [
|
|
"--enable-ipcdir=/run/pcscd"
|
|
"--with-systemdsystemunitdir=${placeholder "bin"}/lib/systemd/system"
|
|
];
|
|
|
|
postConfigure = ''
|
|
sed -i -re '/^#define *PCSCLITE_HP_DROPDIR */ {
|
|
s/(DROPDIR *)(.*)/\1(getenv("PCSCLITE_HP_DROPDIR") ? : \2)/
|
|
}' config.h
|
|
'';
|
|
|
|
postInstall = ''
|
|
# pcsc-spy is a debugging utility and it drags python into the closure
|
|
moveToOutput bin/pcsc-spy "$dev"
|
|
'';
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
nativeBuildInputs = [ autoreconfHook autoconf-archive pkg-config perl ];
|
|
|
|
buildInputs = [ python3 ]
|
|
++ lib.optionals stdenv.isLinux [ systemdMinimal ]
|
|
++ lib.optionals stdenv.isDarwin [ IOKit ]
|
|
++ lib.optionals polkitSupport [ dbus polkit ];
|
|
|
|
meta = with lib; {
|
|
description = "Middleware to access a smart card using SCard API (PC/SC)";
|
|
homepage = "https://pcsclite.apdu.fr/";
|
|
license = licenses.bsd3;
|
|
platforms = with platforms; unix;
|
|
};
|
|
}
|