nixpkgs/pkgs/tools/security/pcsclite/default.nix
rnhmjoj c90b6a859b
nixos/pcscd: allow use without polkit
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.
2022-10-21 13:06:40 +02:00

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;
};
}