Request for libfprint port for 2808:a658

The fingerprint sensor on various Asus devices is 2808:a658, which I found mainly dues to its cheaper production cost.

But unfortunately there had been no drivers supporting the same for linux.

However recently the drivers surfaced on github, without source code (packaged .so.2 files in .deb and .rpm format.

There is also a corresponding AUR repo for the same. AUR (en) - libfprint-ft9366 extending the support for Arch users.

I would like to request if someone can port it for nix. I tried to build the library myself, however got stuck in a dependency hell. (I’m new to Nix ecosystem)
Can help to test it out.

Here are the curated resources which I gathered during my quest:

  1. PKGBUILD - aur.git - AUR Package Repositories
  2. GitHub - ftfpteams/RTS5811-FT9366-fingerprint-linux-driver-with-VID-2808-and-PID-a658: RTS5811+FT9366 fingerprint driver with VID: 2808 and PID: a658 for ubuntu, fedora, centos, suse...
  3. GitHub - piao3956/2808-A658
  4. nixpkgs/pkgs/development/libraries/libfprint/default.nix at 3c2f1c4ca372622cb2f9de8016c9a0b1cbd0f37c Β· NixOS/nixpkgs Β· GitHub
  5. nixpkgs/pkgs/development/libraries/libfprint-2-tod1-goodix-550a/default.nix at 7ffd9ae656aec493492b44d0ddfb28e79a1ea25d Β· NixOS/nixpkgs Β· GitHub
  6. ModuleNotFoundError: No module named 'gi'
2 Likes

I’d recommend you to open a package request in Nixpkgs.

Though you’re unlikely to get anyone to do it unless they also have this sensor.

You should be able to patchelf the .so using autoPatchelfHook though, have you tried that?

2 Likes

Also if you share what you tried, we can suggest changes here too.

1 Like

Okay, thank you I wasn’t aware about β€œpackage request”. I’ll check that out!
Yes, I tried to use patchelf, by referring to other similar repo.
I’ll attach my attempt to do the same in next comment.

Thank you for your response. I tried various versions of my attempt. Sharing one of those.

{ stdenv, lib, fetchurl, dpkg, libfprint-tod, pkg-config, pkgs }:

stdenv.mkDerivation rec {
  pname = "libfprint-ft9366";
  version = "1.94.4";

  src = fetchurl {
    # main branch perma link
    url = "https://github.com/ftfpteams/RTS5811-FT9366-fingerprint-linux-driver-with-VID-2808-and-PID-a658/raw/b040ccd953c27e26c1285c456b4264e70b36bc3f/libfprint-2-2_1.94.4+tod1-0ubuntu1~22.04.2_amd64_rts5811.deb";
    hash = "sha256-vH1SbJ+/Uro7IQKM/SNUo44ySZqMwj+SgmmzOmwAgpw=";
  };

  nativeBuildInputs = [ dpkg pkg-config ];
  buildInputs = with pkgs; [
    libxml2
    (python3.withPackages (p: with p; [
      pygobject3 gst-python 
    ]))
  ];

  unpackPhase = ''
    dpkg-deb -x $src .
  '';

  buildPhase = ''
    patchelf \
      --set-rpath ${lib.makeLibraryPath [ libfprint-tod ]} \
      usr/lib/x86_64-linux-gnu/libfprint-2.so.2
  '';

  installPhase = ''
    mkdir -p "$out/lib"
    cp usr/lib/x86_64-linux-gnu/libfprint-2.so.2 "$out/lib/"
    ln -s "$out/lib/libfprint-2.so.2" "$out/lib/libfprint-2.so"

    # create pkgconfig file
    mkdir -p "$out/lib/pkgconfig"
    cat > "$out/lib/pkgconfig/libfprint-2.pc" << EOF
    prefix=$out
    exec_prefix=\''${prefix}
    libdir=\''${prefix}/lib
    includedir=\''${prefix}/include

    Name: libfprint-2
    Description: Generic Library for Fingerprint reader devices
    Version: ${version}
    Libs: -L\''${libdir} -lfprint-2
    Cflags: -I\''${includedir}/libfprint-2
    EOF

    # this header should be there, try to copy if they are really there
    if [ -d usr/include/libfprint-2 ]; then
      mkdir -p "$out/include"
      cp -r usr/include/libfprint-2 "$out/include/"
    fi
  '';

  meta = with lib; {
    description = "Proprietary driver for the Focaltech fingerprint reader 2808:a658";
    homepage = "https://github.com/ftfpteams/RTS5811-FT9366-fingerprint-linux-driver-with-VID-2808-and-PID-a658";
    license = licenses.unfree;
    platforms = [ "x86_64-linux" ];
    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
  };
}

The build log looks fine upto this point

Program xmllint found: NO
Program python3 found: YES (/nix/store/h723hb9m43lybmvfxkk6n7j4v664qy7b-python3-3.11.9/bin/python3)
WARNING: You should add the boolean check kwarg to the run_command call.
         It currently defaults to false,
         but it will default to true in future releases of meson.
         See also: https://github.com/mesonbuild/meson/issues/9300

meson.build:156:8: ERROR: Problem encountered: Python3 module 'gi.repository.FPrint' required by test suite not found

Full Logs:

@nix { "action": "setPhase", "phase": "unpackPhase" }
Running phase: unpackPhase
unpacking source archive /nix/store/xg9nw7ic88c7dnbwfx2avd38yjc7fcf7-source
source root is source
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: patchPhase
applying patch /nix/store/hszpvhcafv7wx31z160vjw6k8h3w3pq9-ae04fa989720279e5558c3b8ff9ebe1959b1cf36.patch
patching file tests/pam/test_pam_fprintd.py
patching file tests/test_fprintd_utils.py
patching script interpreter paths in po/check-translations.sh tests/unittest_inspector.py
po/check-translations.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/516kai7nl5dxr792c0nzq0jp8m4zvxpi-bash-5.2p32/bin/bash"
tests/unittest_inspector.py: interpreter directive changed from "#! /usr/bin/env python3" to "/nix/store/h723hb9m43lybmvfxkk6n7j4v664qy7b-python3-3.11.9/bin/python3"
substituteStream() in derivation fprintd-1.94.2: WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. (file 'tests/fprintd.py')
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "configurePhase" }
Running phase: configurePhase
mesonConfigurePhase flags: --prefix=/nix/store/hzlmj6snb0kdqzpxz26rim0kw64m06cs-fprintd-1.94.2 --libdir=/nix/store/hzlmj6snb0kdqzpxz26rim0kw64m06cs-fprintd-1.94.2/lib --libexecdir=/nix/store/hzlmj6snb0kdqzpxz26ri>
The Meson build system
Version: 1.4.2
Source dir: /build/source
Build dir: /build/source/build
Build type: native build
Project name: fprintd
Project version: 1.94.2
C compiler for the host machine: gcc (gcc 13.2.0 "gcc (GCC) 13.2.0")
C linker for the host machine: gcc ld.bfd 2.41
Host machine cpu family: x86_64
Host machine cpu: x86_64
Compiler for C supports arguments -fno-strict-aliasing: YES
Compiler for C supports arguments -Wcast-align: YES
Compiler for C supports arguments -Werror=address: YES
Compiler for C supports arguments -Werror=array-bounds: YES
Compiler for C supports arguments -Werror=empty-body: YES
Compiler for C supports arguments -Werror=implicit: YES
Compiler for C supports arguments -Werror=init-self: YES
Compiler for C supports arguments -Werror=int-to-pointer-cast: YES
Compiler for C supports arguments -Werror=main: YES
Compiler for C supports arguments -Werror=missing-braces: YES
Compiler for C supports arguments -Werror=nonnull: YES
Compiler for C supports arguments -Werror=pointer-to-int-cast: YES
Compiler for C supports arguments -Werror=redundant-decls: YES
Compiler for C supports arguments -Werror=return-type: YES
Compiler for C supports arguments -Werror=sequence-point: YES
Compiler for C supports arguments -Werror=trigraphs: YES
Compiler for C supports arguments -Werror=write-strings: YES
Compiler for C supports arguments -Wformat-nonliteral: YES
Compiler for C supports arguments -Wformat-security: YES
Compiler for C supports arguments -Wformat=2: YES
Compiler for C supports arguments -Wignored-qualifiers: YES
Compiler for C supports arguments -Wimplicit-function-declaration: YES
Compiler for C supports arguments -Wlogical-op: YES
Compiler for C supports arguments -Wmissing-declarations: YES
Compiler for C supports arguments -Wmissing-format-attribute: YES
Compiler for C supports arguments -Wmissing-include-dirs: YES
Compiler for C supports arguments -Wmissing-noreturn: YES
Compiler for C supports arguments -Wmissing-prototypes: YES
Compiler for C supports arguments -Wnested-externs: YES
Compiler for C supports arguments -Wold-style-definition: YES
Compiler for C supports arguments -Wpointer-arith: YES
Compiler for C supports arguments -Wshadow: YES
Compiler for C supports arguments -Wstrict-prototypes: YES
Compiler for C supports arguments -Wtype-limits: YES
Compiler for C supports arguments -Wundef: YES
Compiler for C supports arguments -Wunused: YES
Compiler for C supports arguments -Wno-unused-parameter: YES
Compiler for C supports arguments -Wno-pedantic: YES
Compiler for C supports arguments -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_56: YES
Compiler for C supports arguments -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_56: YES
Found pkg-config: YES (/nix/store/4lssw6pk59r654j0yrfydv0kngk8zrqp-pkg-config-wrapper-0.29.2/bin/pkg-config) 0.29.2
Run-time dependency glib-2.0 found: YES 2.80.2
Run-time dependency gio-2.0 found: YES 2.80.2
Run-time dependency gio-unix-2.0 found: YES 2.80.2
Run-time dependency gmodule-2.0 found: YES 2.80.2
Run-time dependency libfprint-2 found: YES 1.94.4
Run-time dependency polkit-gobject-1 found: YES 124
Run-time dependency dbus-1 found: YES 1.14.10
Run-time dependency libsystemd found: YES 255
Has header "security/pam_modules.h" : YES
Library pam found: YES
Program pod2man found: YES (/nix/store/5ydyzdwlar4ssmhfjg154dy2s2bbyhj3-perl-5.38.2/bin/pod2man)
Program xsltproc found: YES (/nix/store/jb02zq14sa5fn52xcb82fhpwpnrv59rh-libxslt-1.1.39-bin/bin/xsltproc)
Run-time dependency systemd found: YES 255
Run-time dependency pam_wrapper found: YES 1.1.3
Program xmllint found: NO
Program python3 found: YES (/nix/store/h723hb9m43lybmvfxkk6n7j4v664qy7b-python3-3.11.9/bin/python3)
WARNING: You should add the boolean check kwarg to the run_command call.
         It currently defaults to false,
         but it will default to true in future releases of meson.
         See also: https://github.com/mesonbuild/meson/issues/9300

meson.build:156:8: ERROR: Problem encountered: Python3 module 'gi.repository.FPrint' required by test suite not found

A full log can be found at /build/source/build/meson-logs/meson-log.txt

This is the error log of some other derivation, you never got to building the derivation you wrote.

Please just use autoPatchelfHook and provide the libraries that the library needs in buildInputs.

Even if I do β€œnothing” in the build script, I end up with either python3 error (shown above) AND/OR libfprint-2 missing error.
Similar issues were noticed in yet another libfprint patch: https://discourse.nixos.org/t/i-am-trying-to-create-a-custom-package-containing-libfprint-drivers-firmware/

With the most minimal config, I get the following errors (missing libraries)

{ stdenv
, lib
, fetchurl
, dpkg
, autoPatchelfHook
}:

stdenv.mkDerivation rec {
  pname = "libfprint-ft9366";
  version = "1.94.4";

  src = fetchurl {
    url = "https://github.com/ftfpteams/RTS5811-FT9366-fingerprint-linux-driver-with-VID-2808-and-PID-a658/raw/b040ccd953c27e26c1285c456b4264e70b36bc3f/libfprint-2-2_1.94.4+tod1-0ubuntu1~22.04.2_amd64_rts5811.deb";
    hash = "sha256-vH1SbJ+/Uro7IQKM/SNUo44ySZqMwj+SgmmzOmwAgpw=";
  };

  nativeBuildInputs = [
    autoPatchelfHook
    dpkg
  ];

  unpackPhase = ''
    dpkg-deb -x $src .
  '';

  installPhase = ''
    cp -r . $out/
  '';
}
    libgio-2.0.so.0 -> not found!
    libgobject-2.0.so.0 -> not found!
    libglib-2.0.so.0 -> not found!
    libgusb.so.2 -> not found!
    libpixman-1.so.0 -> not found!
    libnss3.so -> not found!
    libgudev-1.0.so.0 -> not found!
    libstdc++.so.6 -> not found!
    libgcc_s.so.1 -> not found!
auto-patchelf: 9 dependencies could not be satisfied

Now trying to patch each library arrives me to:

    libgio-2.0.so.0 -> not found!       => glib
    libgobject-2.0.so.0 -> not found!   => glib
    libglib-2.0.so.0 -> not found!      => glib
    libgusb.so.2 -> not found!          => glib
    libpixman-1.so.0 -> not found!      => pixman
    libnss3.so -> not found!            => nss
    libgudev-1.0.so.0 -> not found!     => libgudev
    libstdc++.so.6 -> not found!        => stdenv.cc.cc
    libgcc_s.so.1 -> not found!         => stdenv.cc.cc
auto-patchelf: 9 dependencies could not be satisfied
{ stdenv, lib, fetchurl, dpkg, autoPatchelfHook, glib, gusb, pixman, libgudev, nss}:

stdenv.mkDerivation rec {
  pname = "libfprint-ft9366";
  version = "1.94.4";

  src = fetchurl {
    url = "https://github.com/ftfpteams/RTS5811-FT9366-fingerprint-linux-driver-with-VID-2808-and-PID-a658/raw/b040ccd953c27e26c1285c456b4264e70b36bc3f/libfprint-2-2_1.94.4+tod1-0ubuntu1~22.04.2_amd64_rts5811.deb";
    hash = "sha256-vH1SbJ+/Uro7IQKM/SNUo44ySZqMwj+SgmmzOmwAgpw=";
  };

  nativeBuildInputs = [
    autoPatchelfHook
    dpkg
  ];

  buildInputs = [
    stdenv.cc.cc
    glib
    gusb
    pixman
    nss
    libgudev
  ];

  unpackPhase = ''
    dpkg-deb -x $src .
  '';

  installPhase = ''
    cp -r . $out/
  '';
}

All required libraries were supplied, but this time Meson build fails.

Found pkg-config: YES (/nix/store/4lssw6pk59r654j0yrfydv0kngk8zrqp-pkg-config-wrapper-0.29.2/bin/pkg-config) 0.29.2
Run-time dependency glib-2.0 found: YES 2.80.2
Run-time dependency gio-2.0 found: YES 2.80.2
Run-time dependency gio-unix-2.0 found: YES 2.80.2
Run-time dependency gmodule-2.0 found: YES 2.80.2
Did not find CMake 'cmake'
Found CMake: NO
Run-time dependency libfprint-2 found: NO (tried pkgconfig)

meson.build:92:16: ERROR: Dependency "libfprint-2" not found, tried pkgconfig

A full log can be found at /build/source/build/meson-logs/meson-log.txt

Even adding libfprint doesn’t help (nix-locate libfprint-2)

Another thread which is relevant to this: [TRACKING] Fingerprint scanner compatibility with linux (ubuntu, fedora, etc) - #58 by NullVoxPopuli - Linux - Framework Community

Sorry for the trouble! I’m new to nix, and this is sort of overwhelming for me.

That derivation is looking better. Does it build now that you’ve added the buildInputs?

As mentioned previously, that other failure you’re seeing is not your derivation but a different one. Your derivation does not invoke meson in any way; it’s not an input.

You’ll have to figure out which derivation that is and what pulls it in.

No, unfortunately this fails to build (attached the error message in last reply)
I don’t really understand from where it is calling the meson build script. And I cannot really make a lot of sense out of it anyway with my current knowledge about Nix and Derivations.

Thanks you all your help though!

I have opened a Package Request for the same on github. Hopefully it gets addressed some day!

Also the distributor seems quite… unreasonable. Who are you? Where did this come from?

And I guess it might actually come from the driver download page of a notebook vendor that advertises support for Linux.

1 Like

That’s understandable. Here is the thread around this discussion in the libfprint source code repository. The driver is being provided via focaltech-electonics email, who created the repository for accessibility focaltechmoc:Support FocalTech moc devices (!413) Β· Merge requests Β· libfprint / libfprint Β· GitLab

Also, unfortunately the person who shared this denied the request to open-source driver, quoting their comment.

RTS5811+FT9366 is a MOH solution, the source code contains our fingerprint algorithm, so we can’t open the source code.

And no, I couldn’t find the driver on notebook’s vendor page (for linux).

1 Like

As mentioned, that build error does not happen in the derivation which you have shown us.

If there is no other error (please post the full build logs!) your derivation is likely to be working just fine.

Could you post the part where you actually integrate your drv into the system?

Here is the snippet from my configuration.nix, the fp.nix is what I shared above.

{
  nixpkgs.overlays = [
    (self: super: {
      libfprint-ft9366 = super.callPackage ./fp.nix {};
    })
  ];

  services.fprintd = {
    enable = true;
    # Replace the default libfprint package with our custom one
    package = pkgs.fprintd.override { libfprint = pkgs.libfprint-ft9366; };
  };
  services.udev.packages = [ pkgs.libfprint-ft9366 ];
}

Here is the output which I get when I run nixos-rebuild switch.

error: builder for '/nix/store/av8bbif6gm7v6ivp23ciwkiwn8k44ib2-fprintd-1.94.2.drv' failed with exit code 1;
       last 10 log lines:
       > Run-time dependency gio-2.0 found: YES 2.80.2
       > Run-time dependency gio-unix-2.0 found: YES 2.80.2
       > Run-time dependency gmodule-2.0 found: YES 2.80.2
       > Did not find CMake 'cmake'
       > Found CMake: NO
       > Run-time dependency libfprint-2 found: NO (tried pkgconfig)
       >
       > meson.build:92:16: ERROR: Dependency "libfprint-2" not found, tried pkgconfig
       >
       > A full log can be found at /build/source/build/meson-logs/meson-log.txt
       For full logs, run 'nix log /nix/store/av8bbif6gm7v6ivp23ciwkiwn8k44ib2-fprintd-1.94.2.drv'.
error: 1 dependencies of derivation '/nix/store/yjq4cj52f0biwfiw3is4sdh71528qlwr-chfn.pam.drv' failed to build
error: 1 dependencies of derivation '/nix/store/hj0x48k50dd5n7038zyizazxfv40w21g-dbus-1.drv' failed to build
error: 1 dependencies of derivation '/nix/store/hrwfvdlsf559jmlj1r0cbw6x4z8ma7n9-dbus-1.drv' failed to build
error: 1 dependencies of derivation '/nix/store/vxhdg39jc4dfl4rkzhx0znchk1ppzym0-dbus-1.drv' failed to build
error: 1 dependencies of derivation '/nix/store/7fvhpazz55wnzp5pgic30fb3gb152rki-system-path.drv' failed to build
error: 1 dependencies of derivation '/nix/store/c10xghvk335mkq1s567z7glsc3dxpyig-system-path.drv' failed to build
error: 1 dependencies of derivation '/nix/store/hcrh4j2g5fyji51yad5hzlam6chn3ly9-system-path.drv' failed to build
error: 1 dependencies of derivation '/nix/store/vxw8s5dphxrr1ckl2zh6ir5rnizhy3g4-nixos-system-seattle-24.05.20241020.8917291.drv' failed to build

I’ve shared the output of nix log /nix/store/av8bbif6gm7v6ivp23ciwkiwn8k44ib2-fprintd-1.94.2.drv previously. (which mentioned that build failed because of missing dependency β€œlibfprint-2”.

Hm that appears to be correct but it isn’t able to find the package’s libfprint via pkg-config. Could you show a tree of the regular libfprint derivation and yours? Check for differences (e.g. also using diffoscope), particularly regarding pkg-config.

Could you show a tree of the regular libfprint derivation and yours?

I’m not really sure how to do that, but here’s what I did which might be useful. I used the most β€œhackiest” way I could think of.

  1. Add the package in configuration.nix as follows: (removed fprintd and its package override statement)
    {  environment.systemPackages = with pkgs; [ libfprint-ft9366 ]; }
    
  2. Add tree command in the install phase of my fp.nix
      installPhase = ''
        cp -r . $out/
        tree $out
      '';
    
  3. Build nixos and find my derivation in /nix/store and open up the corresponding log file with tree output within it. (builds with no errors)
❯ ls /nix/store/ | rg libfprint
7ps1r6pn609iard5pdsh3lvglz5rgbv6-libfprint-ft9366-1.94.4.drv
a7i246vzavn4x9mn0mng5d17rddrmpns-libfprint-ft9366-1.94.4
k8hm4dlzg1sz5yps6jm1dga6hgz3x9g9-libfprint-2-2_1.94.4+tod1-0ubuntu1-22.04.2_amd64_rts5811.deb
kial3br9li3a1wa5ski2ic89944rd0by-libfprint-2-2_1.94.4+tod1-0ubuntu1-22.04.2_amd64_rts5811.deb.drv
z3frbwnac944fk7605rv9l7kqr2c9vzf-libfprint-2-2_1.94.4+tod1-0ubuntu1-22.04.2_amd64_rts5811.deb.drv
 
❯ nix log /nix/store/7ps1r6pn609iard5pdsh3lvglz5rgbv6-libfprint-ft9366-1.94.4.drv
warning: The interpretation of store paths arguments ending in `.drv` recently changed. If this command is now failing try again with '/nix/store/7ps1r6pn609iard5pdsh3lvglz5rgbv6-libfprint-ft
9366-1.94.4.drv^*'
@nix { "action": "setPhase", "phase": "unpackPhase" }
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "configurePhase" }
Running phase: configurePhase
no configure script, doing nothing
@nix { "action": "setPhase", "phase": "buildPhase" }
Running phase: buildPhase
no Makefile or custom buildPhase, doing nothing
@nix { "action": "setPhase", "phase": "glibPreInstallPhase" }
Running phase: glibPreInstallPhase
@nix { "action": "setPhase", "phase": "installPhase" }
Running phase: installPhase
/nix/store/a7i246vzavn4x9mn0mng5d17rddrmpns-libfprint-ft9366-1.94.4
|-- env-vars
|-- lib
|   `-- udev
|       `-- rules.d
|           `-- 60-libfprint-2.rules
`-- usr
    |-- lib
    |   `-- x86_64-linux-gnu
    |       |-- libfprint-2.so.2 -> libfprint-2.so.2.0.0
    |       `-- libfprint-2.so.2.0.0
    `-- share
        |-- doc
        |   `-- libfprint-2-2
        |       |-- NEWS.gz
        |       |-- README
        |       |-- TODO
        |       |-- changelog.Debian.gz
        |       `-- copyright
        `-- lintian
            `-- overrides
                `-- libfprint-2-2

12 directories, 10 files
@nix { "action": "setPhase", "phase": "glibPreFixupPhase" }
Running phase: glibPreFixupPhase
@nix { "action": "setPhase", "phase": "fixupPhase" }
Running phase: fixupPhase
shrinking RPATHs of ELF executables and libraries in /nix/store/a7i246vzavn4x9mn0mng5d17rddrmpns-libfprint-ft9366-1.94.4
shrinking /nix/store/a7i246vzavn4x9mn0mng5d17rddrmpns-libfprint-ft9366-1.94.4/usr/lib/x86_64-linux-gnu/libfprint-2.so.2.0.0
checking for references to /build/ in /nix/store/a7i246vzavn4x9mn0mng5d17rddrmpns-libfprint-ft9366-1.94.4...
patching script interpreter paths in /nix/store/a7i246vzavn4x9mn0mng5d17rddrmpns-libfprint-ft9366-1.94.4
stripping (with command strip and flags -S -p) in  /nix/store/a7i246vzavn4x9mn0mng5d17rddrmpns-libfprint-ft9366-1.94.4/lib
automatically fixing dependencies for ELF files
{'append_rpaths': [],
 'extra_args': [],
 'ignore_missing': [],
 'libs': [PosixPath('/nix/store/ibw76ifhbc8w9lza5176fkaws8v8yn32-auto-patchelf-hook/lib'),
          PosixPath('/nix/store/w0k2k9x26wzv18c3zkvgcg3zqksq4mln-binutils-wrapper-2.41/lib'),
          PosixPath('/nix/store/fck8c69rx8kgvxg62fgqqzffwrws6dz8-dpkg-1.22.5/lib'),
          PosixPath('/nix/store/6wf8zxqql7gmmi96k6swmm0pvqp13gi8-patchelf-0.15.0/lib'),
          PosixPath('/nix/store/vdbrzhl533lr4xn4f48f2c50hymbfhfh-update-autotools-gnu-config-scripts-hook/lib'),
          PosixPath('/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh/lib'),
          PosixPath('/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh/lib'),
          PosixPath('/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh/lib'),
          PosixPath('/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh/lib'),
          PosixPath('/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh/lib'),
          PosixPath('/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh/lib'),
          PosixPath('/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh/lib'),
          PosixPath('/nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh/lib'),
          PosixPath('/nix/store/ilaf1w22bxi6jsi45alhmvvdgy4ly3zs-patch-shebangs.sh/lib'),
          PosixPath('/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh/lib'),
          PosixPath('/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh/lib'),
          PosixPath('/nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh/lib'),
          PosixPath('/nix/store/gps9qrh99j7g02840wv5x78ykmz30byp-strip.sh/lib'),
          PosixPath('/nix/store/r6k305g2rn0qqkvdxfvzqg7mhh7rw679-gcc-wrapper-13.2.0/lib'),
          PosixPath('/nix/store/si9c1ncjikjq2hl5m8i6dzrfznmsz7g5-binutils-wrapper-2.41/lib'),
          PosixPath('/nix/store/0vzdm3k78n3v46wqn5aynhmlbbwsjlsb-tree-2.1.1/lib'),
          PosixPath('/nix/store/6g5fhxv0bdm7236ixdwq1izzawbc7grm-gcc-13.2.0/lib'),
          PosixPath('/nix/store/swcl0ynnia5c57i6qfdcrqa72j7877mg-gcc-13.2.0-lib/lib'),
          PosixPath('/nix/store/f8y44c3k32piprp8wj999cdlakpz86kz-glib-2.80.2-dev/lib'),
          PosixPath('/nix/store/77i5izsm6i7fyzdb5h8w28rcpawwqj6q-zlib-1.3.1-dev/lib'),
          PosixPath('/nix/store/pkl664rrz6vb95piixzfm7qy1yc2xzgc-zlib-1.3.1/lib'),
          PosixPath('/nix/store/zj3xbny21j0fcgcj3bbfaq0hx36s3v6q-libffi-3.4.6-dev/lib'),
          PosixPath('/nix/store/6rwkpxli14j08klbsiwn23jmp9r46dmi-libffi-3.4.6/lib'),
          PosixPath('/nix/store/zz3kckpl8ag09cr4qrlwi2q691ckqvgj-gettext-0.21.1/lib'),
          PosixPath('/nix/store/ikdbqi1h58klmn00x225pc221057iig2-glibc-iconv-2.39/lib'),
          PosixPath('/nix/store/v6rxay5qhjr4s8dzcb3sr9n0m7kms07g-glib-2.80.2-bin/lib'),
          PosixPath('/nix/store/sr6skahp2mvi6y8d4g89a9vwk4yh4z0p-glib-2.80.2/lib'),
          PosixPath('/nix/store/3b69yl33hqv0bnn22qnsa1z4b1mc1wab-gusb-0.4.9-dev/lib'),
          PosixPath('/nix/store/ha7sllikc8rl705qy61s88s4zwhc8v3a-libusb-1.0.27-dev/lib'),
          PosixPath('/nix/store/g56nq43dg77q0bdgal96jq9167ch5wc5-systemd-minimal-libs-255.9-dev/lib'),
          PosixPath('/nix/store/iamn9c2320ma1n87nxxrjkbr3im67039-systemd-minimal-libs-255.9/lib'),
          PosixPath('/nix/store/nyyddgd1znixp7hg34jmf9hwdh953cgl-libusb-1.0.27/lib'),
          PosixPath('/nix/store/x06fi72l4llhlw6clrab9lab9va2krb3-json-glib-1.8.0-dev/lib'),
          PosixPath('/nix/store/225jsq79gll01srq6n2mkybiazlg9s0c-json-glib-1.8.0/lib'),
          PosixPath('/nix/store/n77252zldgqbqs149nky6zfv25whcwsy-gusb-0.4.9-bin/lib'),
          PosixPath('/nix/store/v3r04cncyz4n2m6skybz94506xyxpgmz-gusb-0.4.9/lib'),
          PosixPath('/nix/store/idqvgrnmvxrrr4mix4djcp3y54pzma9n-pixman-0.43.4/lib'),
          PosixPath('/nix/store/cylq1ljqd1x0wf2v4gs144xhcwnh8vsg-nss-3.101.2-dev/lib'),
          PosixPath('/nix/store/qy5lpka5w4blmi0rgvavixwlz3d2p2sw-nspr-4.35-dev/lib'),
          PosixPath('/nix/store/8yd0ngmbfn0avnbfqpljcg6rlrwa14m5-nspr-4.35/lib'),
          PosixPath('/nix/store/z9xjph974cjy97cqkv4kflyfz7x49575-nss-3.101.2/lib'),
          PosixPath('/nix/store/lcgjdhywpvpd0anzkvghz6hzf7ci8fp9-libgudev-238-dev/lib'),
          PosixPath('/nix/store/i5zmwqmbwwmpgq21nxjl6rn4mr0yva9a-libgudev-238/lib'),
          PosixPath('/nix/store/ibw76ifhbc8w9lza5176fkaws8v8yn32-auto-patchelf-hook/lib'),
          PosixPath('/nix/store/w0k2k9x26wzv18c3zkvgcg3zqksq4mln-binutils-wrapper-2.41/lib'),
          PosixPath('/nix/store/fck8c69rx8kgvxg62fgqqzffwrws6dz8-dpkg-1.22.5/lib'),
          PosixPath('/nix/store/6wf8zxqql7gmmi96k6swmm0pvqp13gi8-patchelf-0.15.0/lib'),
          PosixPath('/nix/store/vdbrzhl533lr4xn4f48f2c50hymbfhfh-update-autotools-gnu-config-scripts-hook/lib'),
          PosixPath('/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh/lib'),
          PosixPath('/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh/lib'),
          PosixPath('/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh/lib'),
          PosixPath('/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh/lib'),
          PosixPath('/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh/lib'),
          PosixPath('/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh/lib'),
          PosixPath('/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh/lib'),
          PosixPath('/nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh/lib'),
          PosixPath('/nix/store/ilaf1w22bxi6jsi45alhmvvdgy4ly3zs-patch-shebangs.sh/lib'),
          PosixPath('/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh/lib'),
          PosixPath('/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh/lib'),
          PosixPath('/nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh/lib'),
          PosixPath('/nix/store/gps9qrh99j7g02840wv5x78ykmz30byp-strip.sh/lib'),
          PosixPath('/nix/store/r6k305g2rn0qqkvdxfvzqg7mhh7rw679-gcc-wrapper-13.2.0/lib'),
          PosixPath('/nix/store/si9c1ncjikjq2hl5m8i6dzrfznmsz7g5-binutils-wrapper-2.41/lib'),
          PosixPath('/nix/store/0vzdm3k78n3v46wqn5aynhmlbbwsjlsb-tree-2.1.1/lib'),
          PosixPath('/nix/store/6g5fhxv0bdm7236ixdwq1izzawbc7grm-gcc-13.2.0/lib'),
          PosixPath('/nix/store/swcl0ynnia5c57i6qfdcrqa72j7877mg-gcc-13.2.0-lib/lib'),
          PosixPath('/nix/store/f8y44c3k32piprp8wj999cdlakpz86kz-glib-2.80.2-dev/lib'),
          PosixPath('/nix/store/77i5izsm6i7fyzdb5h8w28rcpawwqj6q-zlib-1.3.1-dev/lib'),
          PosixPath('/nix/store/pkl664rrz6vb95piixzfm7qy1yc2xzgc-zlib-1.3.1/lib'),
          PosixPath('/nix/store/zj3xbny21j0fcgcj3bbfaq0hx36s3v6q-libffi-3.4.6-dev/lib'),
          PosixPath('/nix/store/6rwkpxli14j08klbsiwn23jmp9r46dmi-libffi-3.4.6/lib'),
          PosixPath('/nix/store/zz3kckpl8ag09cr4qrlwi2q691ckqvgj-gettext-0.21.1/lib'),
          PosixPath('/nix/store/ikdbqi1h58klmn00x225pc221057iig2-glibc-iconv-2.39/lib'),
          PosixPath('/nix/store/v6rxay5qhjr4s8dzcb3sr9n0m7kms07g-glib-2.80.2-bin/lib'),
          PosixPath('/nix/store/sr6skahp2mvi6y8d4g89a9vwk4yh4z0p-glib-2.80.2/lib'),
          PosixPath('/nix/store/3b69yl33hqv0bnn22qnsa1z4b1mc1wab-gusb-0.4.9-dev/lib'),
          PosixPath('/nix/store/ha7sllikc8rl705qy61s88s4zwhc8v3a-libusb-1.0.27-dev/lib'),
          PosixPath('/nix/store/g56nq43dg77q0bdgal96jq9167ch5wc5-systemd-minimal-libs-255.9-dev/lib'),
          PosixPath('/nix/store/iamn9c2320ma1n87nxxrjkbr3im67039-systemd-minimal-libs-255.9/lib'),
          PosixPath('/nix/store/nyyddgd1znixp7hg34jmf9hwdh953cgl-libusb-1.0.27/lib'),
          PosixPath('/nix/store/x06fi72l4llhlw6clrab9lab9va2krb3-json-glib-1.8.0-dev/lib'),
          PosixPath('/nix/store/225jsq79gll01srq6n2mkybiazlg9s0c-json-glib-1.8.0/lib'),
          PosixPath('/nix/store/n77252zldgqbqs149nky6zfv25whcwsy-gusb-0.4.9-bin/lib'),
          PosixPath('/nix/store/v3r04cncyz4n2m6skybz94506xyxpgmz-gusb-0.4.9/lib'),
          PosixPath('/nix/store/idqvgrnmvxrrr4mix4djcp3y54pzma9n-pixman-0.43.4/lib'),
          PosixPath('/nix/store/cylq1ljqd1x0wf2v4gs144xhcwnh8vsg-nss-3.101.2-dev/lib'),
          PosixPath('/nix/store/qy5lpka5w4blmi0rgvavixwlz3d2p2sw-nspr-4.35-dev/lib'),
          PosixPath('/nix/store/8yd0ngmbfn0avnbfqpljcg6rlrwa14m5-nspr-4.35/lib'),
          PosixPath('/nix/store/z9xjph974cjy97cqkv4kflyfz7x49575-nss-3.101.2/lib'),
          PosixPath('/nix/store/lcgjdhywpvpd0anzkvghz6hzf7ci8fp9-libgudev-238-dev/lib'),
          PosixPath('/nix/store/i5zmwqmbwwmpgq21nxjl6rn4mr0yva9a-libgudev-238/lib')],
 'paths': [PosixPath('/nix/store/a7i246vzavn4x9mn0mng5d17rddrmpns-libfprint-ft9366-1.94.4')],
 'recursive': True,
 'runtime_dependencies': []}
searching for dependencies of /nix/store/a7i246vzavn4x9mn0mng5d17rddrmpns-libfprint-ft9366-1.94.4/usr/lib/x86_64-linux-gnu/libfprint-2.so.2.0.0
    libgio-2.0.so.0 -> found: /nix/store/sr6skahp2mvi6y8d4g89a9vwk4yh4z0p-glib-2.80.2/lib
    libgobject-2.0.so.0 -> found: /nix/store/sr6skahp2mvi6y8d4g89a9vwk4yh4z0p-glib-2.80.2/lib
    libglib-2.0.so.0 -> found: /nix/store/sr6skahp2mvi6y8d4g89a9vwk4yh4z0p-glib-2.80.2/lib
    libgusb.so.2 -> found: /nix/store/v3r04cncyz4n2m6skybz94506xyxpgmz-gusb-0.4.9/lib
    libpixman-1.so.0 -> found: /nix/store/idqvgrnmvxrrr4mix4djcp3y54pzma9n-pixman-0.43.4/lib
    libnss3.so -> found: /nix/store/z9xjph974cjy97cqkv4kflyfz7x49575-nss-3.101.2/lib
    libgudev-1.0.so.0 -> found: /nix/store/i5zmwqmbwwmpgq21nxjl6rn4mr0yva9a-libgudev-238/lib
    libstdc++.so.6 -> found: /nix/store/swcl0ynnia5c57i6qfdcrqa72j7877mg-gcc-13.2.0-lib/lib
    libgcc_s.so.1 -> found: /nix/store/yfd49ay99aa1a0jg80jsvnxbyl61fsh6-gcc-13.2.0-libgcc/lib
setting RPATH to: /nix/store/sr6skahp2mvi6y8d4g89a9vwk4yh4z0p-glib-2.80.2/lib:/nix/store/v3r04cncyz4n2m6skybz94506xyxpgmz-gusb-0.4.9/lib:/nix/store/idqvgrnmvxrrr4mix4djcp3y54pzma9n-pixman-0.>
auto-patchelf: 0 dependencies could not be satisfied

Now I removed this package and added libfprint and then navigated to its directory in /nix/store/ and ran tree command

❯ cd /nix/store/48b5w5isr70y14vx38nmbpjfz8ww3i5c-libfprint-1.94.6/ 

/nix/store/48b5w5isr70y14vx38nmbpjfz8ww3i5c-libfprint-1.94.6πŸ”’ 
❯ tree
.
β”œβ”€β”€ include
β”‚   └── libfprint-2
β”‚       β”œβ”€β”€ fp-context.h
β”‚       β”œβ”€β”€ fp-device.h
β”‚       β”œβ”€β”€ fp-enums.h
β”‚       β”œβ”€β”€ fp-image-device.h
β”‚       β”œβ”€β”€ fp-image.h
β”‚       β”œβ”€β”€ fp-print.h
β”‚       └── fprint.h
β”œβ”€β”€ lib
β”‚   β”œβ”€β”€ girepository-1.0
β”‚   β”‚   └── FPrint-2.0.typelib
β”‚   β”œβ”€β”€ libfprint-2.so -> libfprint-2.so.2
β”‚   β”œβ”€β”€ libfprint-2.so.2 -> libfprint-2.so.2.0.0
β”‚   β”œβ”€β”€ libfprint-2.so.2.0.0
β”‚   β”œβ”€β”€ pkgconfig
β”‚   β”‚   └── libfprint-2.pc
β”‚   └── udev
β”‚       β”œβ”€β”€ hwdb.d
β”‚       β”‚   └── 60-autosuspend-libfprint-2.hwdb
β”‚       └── rules.d
β”‚           └── 70-libfprint-2.rules
β”œβ”€β”€ libexec
β”‚   └── installed-tests
β”‚       └── libfprint-2
β”‚           β”œβ”€β”€ capture.py
β”‚           β”œβ”€β”€ test-fp-context
β”‚           β”œβ”€β”€ test-fp-device
β”‚           β”œβ”€β”€ test-fpi-assembling
β”‚           β”œβ”€β”€ test-fpi-device
β”‚           β”œβ”€β”€ test-fpi-ssm
β”‚           β”œβ”€β”€ umockdev-test.py
β”‚           β”œβ”€β”€ virtual-device.py
β”‚           └── virtual-image.py
└── share
    β”œβ”€β”€ gir-1.0
    β”‚   └── FPrint-2.0.gir
    └── installed-tests
        └── libfprint-2
            β”œβ”€β”€ aes2501
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ aes3500
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ driver-aes2501.test
            β”œβ”€β”€ driver-aes3500.test
            β”œβ”€β”€ driver-egis0570.test
            β”œβ”€β”€ driver-elan-cobo.test
            β”œβ”€β”€ driver-elanmoc.test
            β”œβ”€β”€ driver-elanspi.test
            β”œβ”€β”€ driver-elan.test
            β”œβ”€β”€ driver-fpcmoc.test
            β”œβ”€β”€ driver-goodixmoc.test
            β”œβ”€β”€ driver-nb1010.test
            β”œβ”€β”€ driver-synaptics.test
            β”œβ”€β”€ driver-upektc_img-tcs1s.test
            β”œβ”€β”€ driver-upektc_img.test
            β”œβ”€β”€ driver-uru4000-4500.test
            β”œβ”€β”€ driver-uru4000-msv2.test
            β”œβ”€β”€ driver-vfs0050.test
            β”œβ”€β”€ driver-vfs301.test
            β”œβ”€β”€ driver-vfs5011.test
            β”œβ”€β”€ driver-vfs7552.test
            β”œβ”€β”€ egis0570
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ elan
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.ioctl-recording
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ elan-cobo
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ elanmoc
            β”‚   β”œβ”€β”€ custom.pcapng
            β”‚   β”œβ”€β”€ custom.py
            β”‚   └── device
            β”œβ”€β”€ elanspi
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   β”œβ”€β”€ device-hidraw
            β”‚   └── device-spi
            β”œβ”€β”€ fpcmoc
            β”‚   β”œβ”€β”€ custom.pcapng
            β”‚   β”œβ”€β”€ custom.py
            β”‚   └── device
            β”œβ”€β”€ fp-context.test
            β”œβ”€β”€ fp-device.test
            β”œβ”€β”€ fpi-assembling.test
            β”œβ”€β”€ fpi-device.test
            β”œβ”€β”€ fpi-ssm.test
            β”œβ”€β”€ goodixmoc
            β”‚   β”œβ”€β”€ custom.pcapng
            β”‚   β”œβ”€β”€ custom.py
            β”‚   └── device
            β”œβ”€β”€ nb1010
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ prints
            β”‚   β”œβ”€β”€ arch.jpg
            β”‚   β”œβ”€β”€ arch.png
            β”‚   β”œβ”€β”€ loop-right.jpg
            β”‚   β”œβ”€β”€ loop-right.png
            β”‚   β”œβ”€β”€ README
            β”‚   β”œβ”€β”€ tented_arch.jpg
            β”‚   β”œβ”€β”€ tented_arch.png
            β”‚   β”œβ”€β”€ whorl.jpg
            β”‚   └── whorl.png
            β”œβ”€β”€ synaptics
            β”‚   β”œβ”€β”€ custom.pcapng
            β”‚   β”œβ”€β”€ custom.py
            β”‚   └── device
            β”œβ”€β”€ upektc_img
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ upektc_img-tcs1s
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ uru4000-4500
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ uru4000-msv2
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ vfs0050
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   β”œβ”€β”€ capture-recorded.ioctl
            β”‚   └── device
            β”œβ”€β”€ vfs301
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   β”œβ”€β”€ capture-recorded.ioctl
            β”‚   └── device
            β”œβ”€β”€ vfs5011
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ vfs7552
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ virtual-device.test
            └── virtual-image.test

36 directories, 120 files

Here is the relevant component of trees
libfprint

❯ tree lib
lib
β”œβ”€β”€ girepository-1.0
β”‚   └── FPrint-2.0.typelib
β”œβ”€β”€ libfprint-2.so -> libfprint-2.so.2
β”œβ”€β”€ libfprint-2.so.2 -> libfprint-2.so.2.0.0
β”œβ”€β”€ libfprint-2.so.2.0.0
β”œβ”€β”€ pkgconfig
β”‚   └── libfprint-2.pc
└── udev
    β”œβ”€β”€ hwdb.d
    β”‚   └── 60-autosuspend-libfprint-2.hwdb
    └── rules.d
        └── 70-libfprint-2.rules

6 directories, 7 files

my-libfprint

|-- env-vars
|-- lib
|   `-- udev
|       `-- rules.d
|           `-- 60-libfprint-2.rules
`-- usr
    |-- lib
    |   `-- x86_64-linux-gnu
    |       |-- libfprint-2.so.2 -> libfprint-2.so.2.0.0
    |       `-- libfprint-2.so.2.0.0
    `-- share
        |-- doc
        |   `-- libfprint-2-2
        |       |-- NEWS.gz
        |       |-- README
        |       |-- TODO
        |       |-- changelog.Debian.gz
        |       `-- copyright
        `-- lintian
            `-- overrides
                `-- libfprint-2-2

12 directories, 10 files

There’s your issue, it’s made for global-FHS distros that have a /usr/ and therefore puts its libs into usr/lib/. I don’t believe our pkg-config looks at that sub-path.

mv it to $out/lib/ instead so that it’s like the original libfprint.

Thanks for putting me in the right direction! I observed the folder structure of libfprint and my derivation.
Unfortunately, simply moving out the files to appropriate path didn’t help.

I assumed maybe the other files in libfprint are also required. So what I tried next is to copy all the files from libfprint to out derivation (empty dir) and then overwrite the library file (libfprint-2.so.2.0.0) and the udev rules.
Since the udev/rules.d rules had different file name notation, (70-libfprint-2.rules instead of 60-libfprint-2.rules as in my derivation had), so I symlinked 70-libfprint-2.rules to 60-libfprint-2.rules, keeping the 60-libfprint-2.rules in there.

On running the build command, this time I encountered different error from patchelf trying to patch the .so file in my derivation, libcairo.so.2 was missing, so added that with cairo as buildInput.

{ stdenv, lib, fetchurl, dpkg, autoPatchelfHook, glib, gusb, pixman, libgudev, nss, tree, libfprint, cairo }:

stdenv.mkDerivation rec {
  pname = "libfprint-ft9366";
  version = "1.94.4";

  src = fetchurl {
    url = "https://github.com/ftfpteams/RTS5811-FT9366-fingerprint-linux-driver-with-VID-2808-and-PID-a658/raw/b040ccd953c27e26c1285c456b4264e70b36bc3f/libfprint-2-2_1.94.4+tod1-0ubuntu1~22.04.2_amd64_rts5811.deb";
    hash = "sha256-vH1SbJ+/Uro7IQKM/SNUo44ySZqMwj+SgmmzOmwAgpw=";
  };

  nativeBuildInputs = [
    autoPatchelfHook
    dpkg
  ];

  buildInputs = [
    stdenv.cc.cc
    glib
    gusb
    pixman
    nss
    libgudev
    libfprint
    cairo
  ];

  unpackPhase = ''
    dpkg-deb -x $src .
  '';

  installPhase = ''
    cp -r ${libfprint}/ $out/
    chmod +w $out/lib/libfprint-2.so.2.0.0
    cp ./usr/lib/x86_64-linux-gnu/libfprint-2.so.2.0.0 $out/lib/
    chmod +x $out/lib/libfprint-2.so.2.0.0

    chmod +w $out/lib/udev/rules.d/
    cp ./lib/udev/rules.d/60-libfprint-2.rules $out/lib/udev/rules.d/
    rm $out/lib/udev/rules.d/70-libfprint-2.rules
    ln -s -T $out/lib/udev/rules.d/60-libfprint-2.rules $out/lib/udev/rules.d/70-libfprint-2.rules
  '';
}

With this version of the derivation, I was able to build the package without any errors :tada:

Although at this point this would be a milestone for me, but unfortunately the fingerprint sensor still doesn’t work.
Here is the error I get when I try to enroll using fprintd-enroll:

Using device /net/reactivated/Fprint/Device/0
failed to claim device: GDBus.Error:org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying

Same error message trying from System Settings GUI.

Here is my derivation’s folder structure:

β”œβ”€β”€ include
β”‚   └── libfprint-2
β”‚       β”œβ”€β”€ fp-context.h
β”‚       β”œβ”€β”€ fp-device.h
β”‚       β”œβ”€β”€ fp-enums.h
β”‚       β”œβ”€β”€ fp-image-device.h
β”‚       β”œβ”€β”€ fp-image.h
β”‚       β”œβ”€β”€ fp-print.h
β”‚       └── fprint.h
β”œβ”€β”€ lib
β”‚   β”œβ”€β”€ girepository-1.0
β”‚   β”‚   └── FPrint-2.0.typelib
β”‚   β”œβ”€β”€ libfprint-2.so -> libfprint-2.so.2
β”‚   β”œβ”€β”€ libfprint-2.so.2 -> libfprint-2.so.2.0.0
β”‚   β”œβ”€β”€ libfprint-2.so.2.0.0
β”‚   β”œβ”€β”€ pkgconfig
β”‚   β”‚   └── libfprint-2.pc
β”‚   └── udev
β”‚       β”œβ”€β”€ hwdb.d
β”‚       β”‚   └── 60-autosuspend-libfprint-2.hwdb
β”‚       └── rules.d
β”‚           β”œβ”€β”€ 60-libfprint-2.rules
β”‚           └── 70-libfprint-2.rules -> 60-libfprint-2.rules
β”œβ”€β”€ libexec
β”‚   └── installed-tests
β”‚       └── libfprint-2
β”‚           β”œβ”€β”€ capture.py
β”‚           β”œβ”€β”€ test-fp-context
β”‚           β”œβ”€β”€ test-fp-device
β”‚           β”œβ”€β”€ test-fpi-assembling
β”‚           β”œβ”€β”€ test-fpi-device
β”‚           β”œβ”€β”€ test-fpi-ssm
β”‚           β”œβ”€β”€ umockdev-test.py
β”‚           β”œβ”€β”€ virtual-device.py
β”‚           └── virtual-image.py
└── share
    β”œβ”€β”€ gir-1.0
    β”‚   └── FPrint-2.0.gir
    └── installed-tests
        └── libfprint-2
            β”œβ”€β”€ aes2501
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ aes3500
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ driver-aes2501.test
            β”œβ”€β”€ driver-aes3500.test
            β”œβ”€β”€ driver-egis0570.test
            β”œβ”€β”€ driver-elan-cobo.test
            β”œβ”€β”€ driver-elanmoc.test
            β”œβ”€β”€ driver-elanspi.test
            β”œβ”€β”€ driver-elan.test
            β”œβ”€β”€ driver-fpcmoc.test
            β”œβ”€β”€ driver-goodixmoc.test
            β”œβ”€β”€ driver-nb1010.test
            β”œβ”€β”€ driver-synaptics.test
            β”œβ”€β”€ driver-upektc_img-tcs1s.test
            β”œβ”€β”€ driver-upektc_img.test
            β”œβ”€β”€ driver-uru4000-4500.test
            β”œβ”€β”€ driver-uru4000-msv2.test
            β”œβ”€β”€ driver-vfs0050.test
            β”œβ”€β”€ driver-vfs301.test
            β”œβ”€β”€ driver-vfs5011.test
            β”œβ”€β”€ driver-vfs7552.test
            β”œβ”€β”€ egis0570
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ elan
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.ioctl-recording
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ elan-cobo
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ elanmoc
            β”‚   β”œβ”€β”€ custom.pcapng
            β”‚   β”œβ”€β”€ custom.py
            β”‚   └── device
            β”œβ”€β”€ elanspi
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   β”œβ”€β”€ device-hidraw
            β”‚   └── device-spi
            β”œβ”€β”€ fpcmoc
            β”‚   β”œβ”€β”€ custom.pcapng
            β”‚   β”œβ”€β”€ custom.py
            β”‚   └── device
            β”œβ”€β”€ fp-context.test
            β”œβ”€β”€ fp-device.test
            β”œβ”€β”€ fpi-assembling.test
            β”œβ”€β”€ fpi-device.test
            β”œβ”€β”€ fpi-ssm.test
            β”œβ”€β”€ goodixmoc
            β”‚   β”œβ”€β”€ custom.pcapng
            β”‚   β”œβ”€β”€ custom.py
            β”‚   └── device
            β”œβ”€β”€ nb1010
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ prints
            β”‚   β”œβ”€β”€ arch.jpg
            β”‚   β”œβ”€β”€ arch.png
            β”‚   β”œβ”€β”€ loop-right.jpg
            β”‚   β”œβ”€β”€ loop-right.png
            β”‚   β”œβ”€β”€ README
            β”‚   β”œβ”€β”€ tented_arch.jpg
            β”‚   β”œβ”€β”€ tented_arch.png
            β”‚   β”œβ”€β”€ whorl.jpg
            β”‚   └── whorl.png
            β”œβ”€β”€ synaptics
            β”‚   β”œβ”€β”€ custom.pcapng
            β”‚   β”œβ”€β”€ custom.py
            β”‚   └── device
            β”œβ”€β”€ upektc_img
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ upektc_img-tcs1s
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ uru4000-4500
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ uru4000-msv2
            β”‚   β”œβ”€β”€ capture.pcapng
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ vfs0050
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   β”œβ”€β”€ capture-recorded.ioctl
            β”‚   └── device
            β”œβ”€β”€ vfs301
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   β”œβ”€β”€ capture-recorded.ioctl
            β”‚   └── device
            β”œβ”€β”€ vfs5011
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ vfs7552
            β”‚   β”œβ”€β”€ capture.ioctl
            β”‚   β”œβ”€β”€ capture.png
            β”‚   └── device
            β”œβ”€β”€ virtual-device.test
            └── virtual-image.test

36 directories, 121 files

Here is the relevant logs for this

❯ journalctl -b | grep fprintd
Nov 06 07:30:41 seattle dbus-daemon[1360]: [system] Activating via systemd: service name='net.reactivated.Fprint' unit='fprintd.service' requested by ':1.21' (uid=0 pid=2114 comm="/nix/store/qhf4ypm1mf3svmvly1lkk18r1kqirjx6-sddm-u" label="kernel")
Nov 06 07:30:56 seattle fprintd[2115]: Authorization denied to :1.61 to call method 'Release' for device 'FocalTech Systems Co., Ltd fingerprint': Device was not claimed before use
Nov 06 07:30:59 seattle fprintd[2115]: /nix/store/7xbddlsrx99dya9ibw0zmblrxf8cqa2v-fprintd-1.94.2/libexec/fprintd: symbol lookup error: /nix/store/glvv4iyzw7g4myb47gkplxk82090qzkm-libfprint-ft9366-1.94.4/lib/libfprint-2.so.2: undefined symbol: g_usb_device_get_interfaces, version LIBGUSB_0.1.0
Nov 06 07:30:59 seattle systemd[1]: fprintd.service: Main process exited, code=exited, status=127/n/a
Nov 06 07:30:59 seattle systemd[1]: fprintd.service: Failed with result 'exit-code'.

❯ sudo fprintd-verify
[sudo] password for seattle:
Using device /net/reactivated/Fprint/Device/0
failed to claim device: GDBus.Error:org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying

❯ sudo systemctl restart fprintd

~
❯ journalctl -b | grep fprintd
Nov 06 07:30:41 seattle dbus-daemon[1360]: [system] Activating via systemd: service name='net.reactivated.Fprint' unit='fprintd.service' requested by ':1.21' (uid=0 pid=2114 comm="/nix/store/qhf4ypm1mf3svmvly1lkk18r1kqirjx6-sddm-u" label="kernel")
Nov 06 07:30:56 seattle fprintd[2115]: Authorization denied to :1.61 to call method 'Release' for device 'FocalTech Systems Co., Ltd fingerprint': Device was not claimed before use
Nov 06 07:30:59 seattle fprintd[2115]: /nix/store/7xbddlsrx99dya9ibw0zmblrxf8cqa2v-fprintd-1.94.2/libexec/fprintd: symbol lookup error: /nix/store/glvv4iyzw7g4myb47gkplxk82090qzkm-libfprint-ft9366-1.94.4/lib/libfprint-2.so.2: undefined symbol: g_usb_device_get_interfaces, version LIBGUSB_0.1.0
Nov 06 07:30:59 seattle systemd[1]: fprintd.service: Main process exited, code=exited, status=127/n/a
Nov 06 07:30:59 seattle systemd[1]: fprintd.service: Failed with result 'exit-code'.
Nov 06 07:32:21 seattle dbus-daemon[1360]: [system] Activating via systemd: service name='net.reactivated.Fprint' unit='fprintd.service' requested by ':1.78' (uid=0 pid=3993 comm="sudo fprintd-verify" label="kernel")
Nov 06 07:32:23 seattle sudo[3993]:  seattle : TTY=pts/1 ; PWD=/home/seattle ; USER=root ; COMMAND=/run/current-system/sw/bin/fprintd-verify
Nov 06 07:32:24 seattle fprintd[3994]: /nix/store/7xbddlsrx99dya9ibw0zmblrxf8cqa2v-fprintd-1.94.2/libexec/fprintd: symbol lookup error: /nix/store/glvv4iyzw7g4myb47gkplxk82090qzkm-libfprint-ft9366-1.94.4/lib/libfprint-2.so.2: undefined symbol: g_usb_device_get_interfaces, version LIBGUSB_0.1.0
Nov 06 07:32:24 seattle systemd[1]: fprintd.service: Main process exited, code=exited, status=127/n/a
Nov 06 07:32:24 seattle systemd[1]: fprintd.service: Failed with result 'exit-code'.
Nov 06 07:32:44 seattle sudo[4052]:  seattle : TTY=pts/1 ; PWD=/home/seattle ; USER=root ; COMMAND=/etc/profiles/per-user/seattle/bin/systemctl restart fprintd

The main highlight to me is this subset of logs:

Nov 06 07:32:24 seattle fprintd[3994]: /nix/store/7xbddlsrx99dya9ibw0zmblrxf8cqa2v-fprintd-1.94.2/libexec/fprintd: symbol lookup error: /nix/store/glvv4iyzw7g4myb47gkplxk82090qzkm-libfprint-ft9366-1.94.4/lib/libfprint-2.so.2: undefined symbol: g_usb_device_get_interfaces, version LIBGUSB_0.1.0
Nov 06 07:32:24 seattle systemd[1]: fprintd.service: Main process exited, code=exited, status=127/n/a
Nov 06 07:32:24 seattle systemd[1]: fprintd.service: Failed with result 'exit-code'.

This might be due to wrongly patching the library?

Update: Is this due to the LIBGUSB version?
libfprint seems to be using higher version than my derivation. (I don’t know how to configure that)

~
❯ ls /nix/store/*/lib/libfprint-2.so.2.0.0 -l
-r-xr-xr-x 2 root root  815384 Jan  1  1970 /nix/store/48b5w5isr70y14vx38nmbpjfz8ww3i5c-libfprint-1.94.6/lib/libfprint-2.so.2.0.0
-r-xr-xr-x 2 root root 2422800 Jan  1  1970 /nix/store/4jb679nzm8bgizqfxpf33yylbwncc4gd-libfprint-ft9366-1.94.4/lib/libfprint-2.so.2.0.0

~
❯ nm -D /nix/store/48b5w5isr70y14vx38nmbpjfz8ww3i5c-libfprint-1.94.6/lib/libfprint-2.so.2.0.0 | rg g_usb_device_get_interfaces
                 U g_usb_device_get_interfaces@LIBGUSB_0.2.8

~
❯ nm -D /nix/store/4jb679nzm8bgizqfxpf33yylbwncc4gd-libfprint-ft9366-1.94.4/lib/libfprint-2.so.2.0.0 | rg g_usb_device_get_interfaces
                 U g_usb_device_get_interfaces@LIBGUSB_0.1.0

What’s the exact error?

Please diff the pkg-config files. If the pkg-config file is the one from the original libfprint, it’ll also use the original .sos which would explain the symptoms.

I believe that makes them execute twice, don’t do that. Just mv it to the other name but I doubt even that makes a difference.

The only other difference are the headers and that might cause issues. I don’t know whether they changed the headers in any way, you’d have to ask them.

With the following install phase:

cp -r . $out/

# move out to correct dir
mv $out/usr/lib/x86_64-linux-gnu/libfprint-2.so.2.0.0 $out/lib
mv $out/usr/lib/x86_64-linux-gnu/libfprint-2.so.2 $out/lib

# create this symlink as it was there in libfprint
ln -s -T $out/lib/libfprint-2.so.2.0.0 $out/lib/x86_64-linux-gnu/libfprint-2.so

# this .so was not marked executable by default
chmod +x $out/usr/lib/libfprint-2.so.2.0.0

I get the following error (from fprintd derivation):

Run-time dependency libfprint-2 found: NO (tried pkgconfig)

Full log:

warning: The interpretation of store paths arguments ending in `.drv` recently changed. If this command is now failing try again with '/nix/store/7n1cy68bd16q4za0xgbi05sxigb7lmxp-fprintd-1.94
.2.drv^*'
@nix { "action": "setPhase", "phase": "unpackPhase" }
Running phase: unpackPhase
unpacking source archive /nix/store/xg9nw7ic88c7dnbwfx2avd38yjc7fcf7-source
source root is source
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: patchPhase
applying patch /nix/store/hszpvhcafv7wx31z160vjw6k8h3w3pq9-ae04fa989720279e5558c3b8ff9ebe1959b1cf36.patch
patching file tests/pam/test_pam_fprintd.py
patching file tests/test_fprintd_utils.py
patching script interpreter paths in po/check-translations.sh tests/unittest_inspector.py
po/check-translations.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/516kai7nl5dxr792c0nzq0jp8m4zvxpi-bash-5.2p32/bin/bash"
tests/unittest_inspector.py: interpreter directive changed from "#! /usr/bin/env python3" to "/nix/store/h723hb9m43lybmvfxkk6n7j4v664qy7b-python3-3.11.9/bin/python3"
substituteStream() in derivation fprintd-1.94.2: WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. (file 'tests/fprintd.py')
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "configurePhase" }
Running phase: configurePhase
mesonConfigurePhase flags: --prefix=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2 --libdir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/lib --libexecdir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/libexec --bindir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/bin --sbindir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/sbin --includedir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/include --mandir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/share/man --infodir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/share/info --localedir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/share/locale -Dauto_features=enabled -Dwrap_mode=nodownload --buildtype=plain -Dgtk_doc=true -Dpam_modules_dir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/lib/security -Dsysconfdir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/etc -Ddbus_service_dir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/share/dbus-1/system-services -Dsystemd_system_unit_dir=/nix/store/s61r6s1bh56vii01sw4v4a0cmw34j7nb-fprintd-1.94.2/lib/systemd/system
The Meson build system
Version: 1.4.2
Source dir: /build/source
Build dir: /build/source/build
Build type: native build
Project name: fprintd
Project version: 1.94.2
C compiler for the host machine: gcc (gcc 13.2.0 "gcc (GCC) 13.2.0")
C linker for the host machine: gcc ld.bfd 2.41
Host machine cpu family: x86_64
Host machine cpu: x86_64
Compiler for C supports arguments -fno-strict-aliasing: YES 
Compiler for C supports arguments -Wcast-align: YES 
Compiler for C supports arguments -Werror=address: YES 
Compiler for C supports arguments -Werror=array-bounds: YES 
Compiler for C supports arguments -Werror=empty-body: YES 
Compiler for C supports arguments -Werror=implicit: YES 
Compiler for C supports arguments -Werror=init-self: YES 
Compiler for C supports arguments -Werror=int-to-pointer-cast: YES 
Compiler for C supports arguments -Werror=main: YES 
Compiler for C supports arguments -Werror=missing-braces: YES 
Compiler for C supports arguments -Werror=nonnull: YES 
Compiler for C supports arguments -Werror=pointer-to-int-cast: YES 
Compiler for C supports arguments -Werror=redundant-decls: YES 
Compiler for C supports arguments -Werror=return-type: YES 
Compiler for C supports arguments -Werror=sequence-point: YES 
Compiler for C supports arguments -Werror=trigraphs: YES 
Compiler for C supports arguments -Werror=write-strings: YES 
Compiler for C supports arguments -Wformat-nonliteral: YES 
Compiler for C supports arguments -Wformat-security: YES 
Compiler for C supports arguments -Wformat=2: YES 
Compiler for C supports arguments -Wignored-qualifiers: YES 
Compiler for C supports arguments -Wimplicit-function-declaration: YES 
Compiler for C supports arguments -Wlogical-op: YES 
Compiler for C supports arguments -Wmissing-declarations: YES 
Compiler for C supports arguments -Wmissing-format-attribute: YES 
Compiler for C supports arguments -Wmissing-include-dirs: YES 
Compiler for C supports arguments -Wmissing-noreturn: YES 
Compiler for C supports arguments -Wmissing-prototypes: YES 
Compiler for C supports arguments -Wnested-externs: YES 
Compiler for C supports arguments -Wold-style-definition: YES 
Compiler for C supports arguments -Wpointer-arith: YES 
Compiler for C supports arguments -Wshadow: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES 
Compiler for C supports arguments -Wtype-limits: YES 
Compiler for C supports arguments -Wundef: YES 
Compiler for C supports arguments -Wunused: YES 
Compiler for C supports arguments -Wno-unused-parameter: YES 
Compiler for C supports arguments -Wno-pedantic: YES 
Compiler for C supports arguments -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_56: YES 
Compiler for C supports arguments -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_56: YES 
Found pkg-config: YES (/nix/store/4lssw6pk59r654j0yrfydv0kngk8zrqp-pkg-config-wrapper-0.29.2/bin/pkg-config) 0.29.2
Run-time dependency glib-2.0 found: YES 2.80.2
Run-time dependency gio-2.0 found: YES 2.80.2
Run-time dependency gio-unix-2.0 found: YES 2.80.2
Run-time dependency gmodule-2.0 found: YES 2.80.2
Did not find CMake 'cmake'
Found CMake: NO
Run-time dependency libfprint-2 found: NO (tried pkgconfig)

meson.build:92:16: ERROR: Dependency "libfprint-2" not found, tried pkgconfig

Tree of the derivation:

β”œβ”€β”€ env-vars
β”œβ”€β”€ lib
β”‚   β”œβ”€β”€ libfprint-2.so -> libfprint-2.so.2.0.0
β”‚   β”œβ”€β”€ libfprint-2.so.2 -> libfprint-2.so.2.0.0
β”‚   β”œβ”€β”€ libfprint-2.so.2.0.0
β”‚   └── udev
β”‚       └── rules.d
β”‚           └── 60-libfprint-2.rules
└── usr
    β”œβ”€β”€ lib
    β”‚   └── x86_64-linux-gnu
    └── share
        β”œβ”€β”€ doc
        β”‚   └── libfprint-2-2
        β”‚       β”œβ”€β”€ changelog.Debian.gz
        β”‚       β”œβ”€β”€ copyright
        β”‚       β”œβ”€β”€ NEWS.gz
        β”‚       β”œβ”€β”€ README
        β”‚       └── TODO
        └── lintian
            └── overrides
                └── libfprint-2-2

I’m sorry to say, I’m unaware what that is an how to do that.

Yeah, I read under the libfprint udev rules file, it explicitly asked to not overwrite the original file and make a new file with other name for adding rules. Tried that as well, didn’t work out.