{
  lib,
  stdenv,
  fetchFromGitHub,
  pkg-config,
  libtool,
  autoreconfHook,
  pcsclite,
  qrencode,
  python3,
  help2man,
  darwin,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "vsmartcard-vpcd";
  version = "0.9-unstable-2025-01-25";

  src = fetchFromGitHub {
    owner = "frankmorgner";
    repo = "vsmartcard";
    rev = "7369dae26bcb709845003ae2128b8db9df7031ae";
    hash = "sha256-mfw/Yv12ceBVZIyAKJqBh+w4otj3rYYZbJUjKRLcsr4=";
  };

  sourceRoot = "${finalAttrs.src.name}/virtualsmartcard";

  nativeBuildInputs = [
    autoreconfHook
    libtool
    pkg-config
    help2man
  ];

  buildInputs =
    [
      pcsclite
      qrencode
      (python3.withPackages (
        pp: with pp; [
          pyscard
          pycrypto
          pbkdf2
          pillow
          gnureadline
        ]
      ))
    ]
    ++ lib.optionals stdenv.isDarwin [
      darwin.apple_sdk.frameworks.PCSC
    ];

  configureFlags = lib.optional stdenv.isDarwin "--enable-infoplist";

  meta = {
    description = "Emulates a smart card and makes it accessible through PC/SC";
    homepage = "http://frankmorgner.github.io/vsmartcard/virtualsmartcard/README.html";
    license = lib.licenses.gpl3Only;
    platforms = lib.platforms.all;
    broken = stdenv.isDarwin;
    maintainers = with lib.maintainers; [ stargate01 ];
  };
})