{
  lib,
  fetchFromGitLab,
  fetchpatch,
  libxml2,
  fprintd,
  libfprint-tod,
  python3Packages,
  libpam-wrapper,
  gusb,
  gobject-introspection,
}:

(fprintd.override { libfprint = libfprint-tod; }).overrideAttrs (
  finalAttrs: previousAttrs: {
    pname = "fprintd-tod";
    version = "1.90.9";

    src = fetchFromGitLab {
      domain = "gitlab.freedesktop.org";
      owner = "libfprint";
      repo = "fprintd";
      rev = "v${finalAttrs.version}";
      sha256 = "sha256-rOTVThHOY/Q2IIu2RGiv26UE2V/JFfWWnfKZQfKl5Mg=";
    };

    nativeBuildInputs = previousAttrs.nativeBuildInputs or [ ] ++ [
      libpam-wrapper
      python3Packages.python
      python3Packages.pycairo
      python3Packages.dbus-python
      python3Packages.python-dbusmock
      python3Packages.pygobject3
      gusb
      python3Packages.pypamtest
      gobject-introspection
      libxml2 # for xmllint
    ];

    patches = previousAttrs.patches or [ ] ++ [
      (fetchpatch {
        name = "use-more-idiomatic-correct-embedded-shell-scripting";
        url = "https://gitlab.freedesktop.org/libfprint/fprintd/-/commit/f4256533d1ffdc203c3f8c6ee42e8dcde470a93f.patch";
        sha256 = "sha256-4uPrYEgJyXU4zx2V3gwKKLaD6ty0wylSriHlvKvOhek=";
      })
      (fetchpatch {
        name = "remove-pointless-copying-of-files-into-build-directory";
        url = "https://gitlab.freedesktop.org/libfprint/fprintd/-/commit/2c34cef5ef2004d8479475db5523c572eb409a6b.patch";
        sha256 = "sha256-2pZBbMF1xjoDKn/jCAIldbeR2JNEVduXB8bqUrj2Ih4=";
      })
      (fetchpatch {
        name = "build-Do-not-use-positional-arguments-in-i18n.merge_file";
        url = "https://gitlab.freedesktop.org/libfprint/fprintd/-/commit/50943b1bd4f18d103c35233f0446ce7a31d1817e.patch";
        sha256 = "sha256-ANkAq6fr0VRjkS0ckvf/ddVB2mH4b2uJRTI4H8vPPes=";
      })
      (fetchpatch {
        name = "tests-Fix-dbusmock-AddDevice-calls-to-include-option";
        url = "https://gitlab.freedesktop.org/libfprint/fprintd/-/commit/ae04fa989720279e5558c3b8ff9ebe1959b1cf36.patch";
        sha256 = "sha256-jW5vlzrbZQ1gUDLBf7G50GnZfZxhlnL2Eu+9Bghdwdw=";
      })
    ];

    postPatch =
      previousAttrs.postPatch or ""
      + ''
        # part of "remove-pointless-copying-of-files-into-build-directory" but git-apply doesn't handle renaming
        mv src/device.xml src/net.reactivated.Fprint.Device.xml
        mv src/manager.xml src/net.reactivated.Fprint.Manager.xml
      '';

    meta = {
      homepage = "https://fprint.freedesktop.org/";
      description = "fprintd built with libfprint-tod to support Touch OEM Drivers";
      license = lib.licenses.gpl2Plus;
      platforms = lib.platforms.linux;
      maintainers = with lib.maintainers; [ hmenke ];
    };
  }
)