A facial recognition login service for Linux.
2

Configure Feed

Select the types of activity you want to include in your feed.

nix: Bump Rust toolchain to 1.90 and add bindgen prerequisites

A transitive dep of the soon-to-land v4l backend (`home` via `bindgen`)
declares MSRV 1.88, so 1.85 no longer resolves a complete dep graph. Bumping
to 1.90 gives us a small buffer above that floor without committing to the
absolute latest release.

The `v4l` crate generates its FFI layer via bindgen at build time, which
needs libclang plus the surrounding C / kernel-UAPI header search paths
set up correctly. `rustPlatform.bindgenHook` from nixpkgs is the
idiomatic way to provide all of that — it wires up LIBCLANG_PATH and
BINDGEN_EXTRA_CLANG_ARGS via the standard stdenv mechanism. Adding it to
nativeBuildInputs means the devShell handles bindgen out of the box.

`v4l-utils` covers libv4l itself. CI workflows aren't updated here because
the v4l backend lands feature-gated; CI keeps building the default-no-features
profile and so doesn't need any of this.

Isaac Corbrey (May 27, 2026, 10:46 AM EDT) 6b31e8cf e4c90444

+13 -4
+1 -1
Cargo.toml
··· 13 13 edition = "2021" 14 14 license = "MIT OR Apache-2.0" 15 15 repository = "https://github.com/icorbrey/pareidolia" 16 - rust-version = "1.85" 16 + rust-version = "1.90" 17 17 18 18 # All dev / shared dependencies are declared here and inherited by member crates 19 19 # via `workspace = true`. This prevents version drift and keeps the dep graph
+12 -3
flake.nix
··· 18 18 19 19 # Pin the Rust toolchain so every contributor gets the same one. Bump 20 20 # this in lockstep with rust-version in Cargo.toml. 21 - rustToolchain = pkgs.rust-bin.stable."1.85.0".default.override { 21 + rustToolchain = pkgs.rust-bin.stable."1.90.0".default.override { 22 22 extensions = [ "rust-src" "rust-analyzer" "clippy" "rustfmt" ]; 23 23 }; 24 24 ··· 28 28 nativeBuildInputs = with pkgs; [ 29 29 rustToolchain 30 30 pkg-config 31 + 32 + # bindgenHook sets up LIBCLANG_PATH and BINDGEN_EXTRA_CLANG_ARGS 33 + # correctly for the wrapped clang to find both libclang and the 34 + # surrounding C standard headers (glibc, kernel UAPI via stdenv). 35 + # The `v4l` crate's transitive `v4l2-sys-mit` build script needs 36 + # all of that to generate its FFI bindings. 37 + rustPlatform.bindgenHook 31 38 ]; 32 39 33 40 buildInputs = with pkgs; [ 34 - # placeholder: onnxruntime, libpam, v4l-utils, etc. land here in 35 - # later milestones. 41 + # V4L2 user-space library. The `v4l` Rust crate wraps libv4l for 42 + # capture; without this in buildInputs the crate's build script 43 + # can't find its system headers. 44 + v4l-utils 36 45 ]; 37 46 in 38 47 {