diff --git a/nixos/modules/services/security/fprintd.nix b/nixos/modules/services/security/fprintd.nix index 9ed7f2a2efd..8ece1ca1901 100644 --- a/nixos/modules/services/security/fprintd.nix +++ b/nixos/modules/services/security/fprintd.nix @@ -25,6 +25,16 @@ in ''; }; + package = mkOption { + type = types.package; + default = pkgs.fprintd; + defaultText = "pkgs.fprintd"; + example = "pkgs.fprintd-thinkpad"; + description = '' + fprintd package to use. + ''; + }; + }; }; @@ -38,7 +48,7 @@ in environment.systemPackages = [ pkgs.fprintd ]; - systemd.packages = [ pkgs.fprintd ]; + systemd.packages = [ cfg.package ]; }; diff --git a/pkgs/development/libraries/libfprint/default.nix b/pkgs/development/libraries/libfprint/default.nix index 3f3062e3c08..410496a7bb7 100644 --- a/pkgs/development/libraries/libfprint/default.nix +++ b/pkgs/development/libraries/libfprint/default.nix @@ -1,16 +1,29 @@ -{ stdenv, fetchurl, pkgconfig, meson, ninja, libusb, pixman, glib, nss, gtk3 -, coreutils, gtk-doc, docbook_xsl, docbook_xml_dtd_43 }: +{ thinkpad ? false, stdenv, fetchFromGitHub, fetchurl, pkgconfig, meson, ninja, libusb, pixman, glib, nss, gtk3 +, coreutils, gtk-doc, docbook_xsl, docbook_xml_dtd_43, openssl ? null }: + +assert thinkpad -> openssl != null; stdenv.mkDerivation rec { - name = "libfprint-${version}"; + pname = "libfprint" + stdenv.lib.optionalString thinkpad "-thinkpad"; version = "0.99.0"; - src = fetchurl { - url = "https://gitlab.freedesktop.org/libfprint/libfprint/uploads/82ba3cef5bdf72997df711eacdb13c0f/libfprint-${version}.tar.xz"; - sha256 = "16r4nl40y0jri57jiqmdz4s87byblx22lbhyvqpljd6mqm5rg187"; - }; + src = { + libfprint-thinkpad = + fetchFromGitHub { + owner = "3v1n0"; + repo = "libfprint"; + rev = "2e2e3821717e9042e93a995bdbd3d00f2df0be9c"; + sha256 = "1vps1wrp7hskf13f7jrv0dwry2fcid76x2w463wplngp63cj7b3b"; + }; + libfprint = fetchurl { + url = "https://gitlab.freedesktop.org/libfprint/libfprint/uploads/82ba3cef5bdf72997df711eacdb13c0f/libfprint-${version}.tar.xz"; + sha256 = "16r4nl40y0jri57jiqmdz4s87byblx22lbhyvqpljd6mqm5rg187"; + }; + }.${pname}; + + buildInputs = [ libusb pixman glib nss gtk3 ] + ++ stdenv.lib.optional thinkpad openssl; - buildInputs = [ libusb pixman glib nss gtk3 ]; nativeBuildInputs = [ pkgconfig meson ninja gtk-doc docbook_xsl docbook_xml_dtd_43 ]; mesonFlags = [ "-Dudev_rules_dir=lib/udev/rules.d" "-Dx11-examples=false" ]; diff --git a/pkgs/tools/security/fprintd/default.nix b/pkgs/tools/security/fprintd/default.nix index 65eec89a09f..b43be1a6924 100644 --- a/pkgs/tools/security/fprintd/default.nix +++ b/pkgs/tools/security/fprintd/default.nix @@ -1,8 +1,9 @@ -{ stdenv, fetchurl, pkgconfig, intltool -, libfprint, glib, dbus-glib, polkit, nss, pam, systemd }: +{ thinkpad ? false +, stdenv, fetchurl, pkgconfig, intltool, libfprint-thinkpad ? null +, libfprint ? null, glib, dbus-glib, polkit, nss, pam, systemd }: stdenv.mkDerivation rec { - name = "fprintd-${version}"; + pname = "fprintd" + stdenv.lib.optionalString thinkpad "-thinkpad"; version = "0.8.1"; src = fetchurl { @@ -10,7 +11,10 @@ stdenv.mkDerivation rec { sha256 = "124s0g9syvglgsmqnavp2a8c0zcq8cyaph8p8iyvbla11vfizs9l"; }; - buildInputs = [ libfprint glib dbus-glib polkit nss pam systemd ]; + buildInputs = [ glib dbus-glib polkit nss pam systemd ] + ++ stdenv.lib.optional thinkpad libfprint-thinkpad + ++ stdenv.lib.optional (!thinkpad) libfprint; + nativeBuildInputs = [ pkgconfig intltool ]; configureFlags = [ "--with-systemdsystemunitdir=$(out)/lib/systemd/system" "--localstatedir=/var" ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c41cf93d897..de6f3e83283 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2987,6 +2987,9 @@ in fprot = callPackage ../tools/security/fprot { }; fprintd = callPackage ../tools/security/fprintd { }; + fprintd-thinkpad = fprintd.override { + thinkpad = true; + }; franz = callPackage ../applications/networking/instant-messengers/franz { }; @@ -11305,6 +11308,9 @@ in }; libfprint = callPackage ../development/libraries/libfprint { }; + libfprint-thinkpad = libfprint.override { + thinkpad = true; + }; libfpx = callPackage ../development/libraries/libfpx { };