feat(gs/system): Setup fingerprint scanner
This is kinda nifty Change-Id: I1b9a6762a5349974f539d2c4938a2b3dcdf488ad Reviewed-on: https://cl.tvl.fyi/c/depot/+/2219 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
This commit is contained in:
parent
ea936e0a78
commit
cdedcc6238
6 changed files with 364 additions and 1 deletions
124
users/glittershark/pkgs/fprintd/default.nix
Normal file
124
users/glittershark/pkgs/fprintd/default.nix
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
args @ { pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
nixpkgs = import pkgs.nixpkgsSrc {
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
inherit (nixpkgs)
|
||||||
|
stdenv
|
||||||
|
fetchFromGitLab
|
||||||
|
fetchpatch
|
||||||
|
pkgconfig
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
perl
|
||||||
|
gettext
|
||||||
|
cairo
|
||||||
|
gtk-doc
|
||||||
|
libxslt
|
||||||
|
docbook-xsl-nons
|
||||||
|
docbook_xml_dtd_412
|
||||||
|
glib
|
||||||
|
dbus
|
||||||
|
dbus-glib
|
||||||
|
polkit
|
||||||
|
nss
|
||||||
|
pam
|
||||||
|
systemd
|
||||||
|
python3;
|
||||||
|
libfprint-tod = nixpkgs.callPackage ./libfprint-tod.nix {};
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "fprintd";
|
||||||
|
version = "1.90.1";
|
||||||
|
outputs = [ "out" "devdoc" ];
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
domain = "gitlab.freedesktop.org";
|
||||||
|
owner = "libfprint";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "0mbzk263x7f58i9cxhs44mrngs7zw5wkm62j5r6xlcidhmfn03cg";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Fixes issue with ":" when there is multiple paths (might be the case on NixOS)
|
||||||
|
# https://gitlab.freedesktop.org/libfprint/fprintd/-/merge_requests/50
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://gitlab.freedesktop.org/libfprint/fprintd/-/commit/d7fec03f24d10f88d34581c72f0eef201f5eafac.patch";
|
||||||
|
sha256 = "0f88dhizai8jz7hpm5lpki1fx4593zcy89iwi4brsqbqc7jp9ls0";
|
||||||
|
})
|
||||||
|
|
||||||
|
# Fix locating libpam_wrapper for tests
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://gitlab.freedesktop.org/libfprint/fprintd/-/merge_requests/40.patch";
|
||||||
|
sha256 = "0qqy090p93lzabavwjxzxaqidkcb3ifacl0d3yh1q7ms2a58yyz3";
|
||||||
|
})
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://gitlab.freedesktop.org/libfprint/fprintd/-/commit/f401f399a85dbeb2de165b9b9162eb552ab6eea7.patch";
|
||||||
|
sha256 = "1bc9g6kc95imlcdpvp8qgqjsnsxg6nipr6817c1pz5i407yvw1iy";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgconfig
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
perl
|
||||||
|
gettext
|
||||||
|
gtk-doc
|
||||||
|
libxslt
|
||||||
|
dbus
|
||||||
|
docbook-xsl-nons
|
||||||
|
docbook_xml_dtd_412
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
glib
|
||||||
|
dbus-glib
|
||||||
|
polkit
|
||||||
|
nss
|
||||||
|
pam
|
||||||
|
systemd
|
||||||
|
libfprint-tod
|
||||||
|
];
|
||||||
|
|
||||||
|
checkInputs = with python3.pkgs; [
|
||||||
|
python-dbusmock
|
||||||
|
dbus-python
|
||||||
|
pygobject3
|
||||||
|
pycairo
|
||||||
|
pypamtest
|
||||||
|
];
|
||||||
|
|
||||||
|
mesonFlags = [
|
||||||
|
"-Dgtk_doc=true"
|
||||||
|
"-Dpam_modules_dir=${placeholder "out"}/lib/security"
|
||||||
|
"-Dsysconfdir=${placeholder "out"}/etc"
|
||||||
|
"-Ddbus_service_dir=${placeholder "out"}/share/dbus-1/system-services"
|
||||||
|
"-Dsystemd_system_unit_dir=${placeholder "out"}/lib/systemd/system"
|
||||||
|
];
|
||||||
|
|
||||||
|
PKG_CONFIG_DBUS_1_INTERFACES_DIR = "${placeholder "out"}/share/dbus-1/interfaces";
|
||||||
|
PKG_CONFIG_POLKIT_GOBJECT_1_POLICYDIR = "${placeholder "out"}/share/polkit-1/actions";
|
||||||
|
PKG_CONFIG_DBUS_1_DATADIR = "${placeholder "out"}/share";
|
||||||
|
|
||||||
|
# FIXME: Ugly hack for tests to find libpam_wrapper.so
|
||||||
|
LIBRARY_PATH = stdenv.lib.makeLibraryPath [ python3.pkgs.pypamtest ];
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
patchShebangs po/check-translations.sh
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://fprint.freedesktop.org/";
|
||||||
|
description = "D-Bus daemon that offers libfprint functionality over the D-Bus interprocess communication bus";
|
||||||
|
license = licenses.gpl2;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ abbradar elyhaka ];
|
||||||
|
};
|
||||||
|
}
|
81
users/glittershark/pkgs/fprintd/libfprint-tod-clean.nix
Normal file
81
users/glittershark/pkgs/fprintd/libfprint-tod-clean.nix
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
{ stdenv
|
||||||
|
, pkgs
|
||||||
|
, fetchFromGitLab
|
||||||
|
, fetchurl
|
||||||
|
, pkgconfig
|
||||||
|
, meson
|
||||||
|
, ninja
|
||||||
|
, libusb
|
||||||
|
, gusb
|
||||||
|
, pixman
|
||||||
|
, gobject-introspection
|
||||||
|
, glib
|
||||||
|
, nss
|
||||||
|
, gtk3
|
||||||
|
, python3
|
||||||
|
, umockdev
|
||||||
|
, coreutils
|
||||||
|
, gtk-doc
|
||||||
|
, docbook_xsl
|
||||||
|
, docbook_xml_dtd_43
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "libfprint";
|
||||||
|
version = "1.90.2";
|
||||||
|
outputs = [ "out" "devdoc" ];
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
domain = "gitlab.freedesktop.org";
|
||||||
|
owner = "3v1n0";
|
||||||
|
repo = "libfprint";
|
||||||
|
rev = "0e123d0752538d834ee2cca8b471373369ad5e89";
|
||||||
|
sha256 = "11yl3nikdyykamafqf3ys1wg7zx3rb81lf11ndd8sf9rkwwfgpn6";
|
||||||
|
};
|
||||||
|
|
||||||
|
checkInputs = [ (python3.withPackages (ps: with ps; [ pycairo gobject ])) umockdev ];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgconfig
|
||||||
|
meson
|
||||||
|
gobject-introspection
|
||||||
|
ninja
|
||||||
|
gtk-doc
|
||||||
|
docbook_xsl
|
||||||
|
docbook_xml_dtd_43
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libusb
|
||||||
|
gusb
|
||||||
|
pixman
|
||||||
|
glib
|
||||||
|
nss
|
||||||
|
gtk3
|
||||||
|
];
|
||||||
|
|
||||||
|
mesonFlags = [
|
||||||
|
"-Dudev_rules_dir=${placeholder "out"}/lib/udev/rules.d"
|
||||||
|
"-Dx11-examples=false"
|
||||||
|
];
|
||||||
|
|
||||||
|
doChecks = true;
|
||||||
|
|
||||||
|
checkPhase = ''
|
||||||
|
meson test -C build --print-errorlogs
|
||||||
|
'';
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace libfprint/meson.build \
|
||||||
|
--replace /bin/echo ${coreutils}/bin/echo
|
||||||
|
'';
|
||||||
|
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://fprint.freedesktop.org/;
|
||||||
|
description = "A library designed to make it easy to add support for consumer fingerprint readers";
|
||||||
|
license = licenses.lgpl21;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ jobojeha ];
|
||||||
|
};
|
||||||
|
}
|
47
users/glittershark/pkgs/fprintd/libfprint-tod-goodix.nix
Normal file
47
users/glittershark/pkgs/fprintd/libfprint-tod-goodix.nix
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
{ stdenv
|
||||||
|
, pkgs
|
||||||
|
, fetchgit
|
||||||
|
, libfprint-tod ? (pkgs.callPackage ./libfprint-tod-clean.nix {})
|
||||||
|
, git
|
||||||
|
, autoPatchelfHook
|
||||||
|
, libusb
|
||||||
|
, glibc
|
||||||
|
,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "libfprint-2-tod1-xps9300-bin";
|
||||||
|
version = "0.0.6";
|
||||||
|
|
||||||
|
src = fetchgit {
|
||||||
|
url = "git://git.launchpad.net/~oem-solutions-engineers/libfprint-2-tod1-goodix/+git/libfprint-2-tod1-goodix/";
|
||||||
|
rev = "882735c6366fbe30149eea5cfd6d0ddff880f0e4";
|
||||||
|
sha256 = "1x9h5x027s2avdhjhnfmmhdpgyf9x79fz8skcjd3rm3phnpr3zsj";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libfprint-tod
|
||||||
|
git
|
||||||
|
libusb
|
||||||
|
autoPatchelfHook
|
||||||
|
glibc
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
install -dm 755 "$out/lib/udev/rules.d/"
|
||||||
|
install -dm 755 "$out/usr/lib/libfprint-2/tod-1/"
|
||||||
|
|
||||||
|
sed -n -r '/Shenzhen/,/^\s*$/p' debian/copyright > LICENSE
|
||||||
|
install -Dm644 LICENSE "$out/usr/share/licenses/libfprint-2-tod1-xps9300-bin/LICENSE"
|
||||||
|
|
||||||
|
install -Dm 755 usr/lib/x86_64-linux-gnu/libfprint-2/tod-1/libfprint-tod-goodix-53xc-0.0.6.so "$out/usr/lib/libfprint-2/tod-1/"
|
||||||
|
install -Dm 0755 lib/udev/rules.d/60-libfprint-2-tod1-goodix.rules "$out/lib/udev/rules.d/"
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://git.launchpad.net/~oem-solutions-engineers/libfprint-2-tod1-goodix/+git/libfprint-2-tod1-goodix";
|
||||||
|
description = "Goodix driver module for libfprint-2 Touch OEM Driver";
|
||||||
|
license = licenses.unfreeRedistributable;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ jobojeha ];
|
||||||
|
};
|
||||||
|
}
|
89
users/glittershark/pkgs/fprintd/libfprint-tod.nix
Normal file
89
users/glittershark/pkgs/fprintd/libfprint-tod.nix
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
{ stdenv
|
||||||
|
, pkgs
|
||||||
|
, fetchFromGitLab
|
||||||
|
, fetchurl
|
||||||
|
, pkgconfig
|
||||||
|
, meson
|
||||||
|
, ninja
|
||||||
|
, libusb
|
||||||
|
, gusb
|
||||||
|
, pixman
|
||||||
|
, gobject-introspection
|
||||||
|
, glib
|
||||||
|
, nss
|
||||||
|
, gtk3
|
||||||
|
, python3
|
||||||
|
, umockdev
|
||||||
|
, coreutils
|
||||||
|
, gtk-doc
|
||||||
|
, docbook_xsl
|
||||||
|
, docbook_xml_dtd_43
|
||||||
|
, libfprint-tod-goodix ? (pkgs.callPackage ./libfprint-tod-goodix.nix {})
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "libfprint";
|
||||||
|
version = "1.90.2";
|
||||||
|
outputs = [ "out" "devdoc" ];
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
domain = "gitlab.freedesktop.org";
|
||||||
|
owner = "3v1n0";
|
||||||
|
repo = "libfprint";
|
||||||
|
rev = "0e123d0752538d834ee2cca8b471373369ad5e89";
|
||||||
|
sha256 = "11yl3nikdyykamafqf3ys1wg7zx3rb81lf11ndd8sf9rkwwfgpn6";
|
||||||
|
};
|
||||||
|
|
||||||
|
checkInputs = [ (python3.withPackages (ps: with ps; [ pycairo gobject ])) umockdev ];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgconfig
|
||||||
|
meson
|
||||||
|
gobject-introspection
|
||||||
|
ninja
|
||||||
|
gtk-doc
|
||||||
|
docbook_xsl
|
||||||
|
docbook_xml_dtd_43
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libusb
|
||||||
|
gusb
|
||||||
|
pixman
|
||||||
|
glib
|
||||||
|
nss
|
||||||
|
gtk3
|
||||||
|
libfprint-tod-goodix
|
||||||
|
];
|
||||||
|
|
||||||
|
mesonFlags = [
|
||||||
|
"-Dudev_rules_dir=${placeholder "out"}/lib/udev/rules.d"
|
||||||
|
"-Dx11-examples=false"
|
||||||
|
];
|
||||||
|
|
||||||
|
doChecks = true;
|
||||||
|
|
||||||
|
checkPhase = ''
|
||||||
|
meson test -C build --print-errorlogs
|
||||||
|
'';
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace libfprint/meson.build \
|
||||||
|
--replace /bin/echo ${coreutils}/bin/echo
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $out/lib/libfprint-2/tod-1/
|
||||||
|
ln -s ${libfprint-tod-goodix}/usr/lib/libfprint-2/tod-1/libfprint-tod-goodix-53xc-0.0.6.so $out/lib/libfprint-2/tod-1/
|
||||||
|
ln -s ${libfprint-tod-goodix}/lib/udev/rules.d/60-libfprint-2-tod1-goodix.rules $out/lib/udev/rules.d/
|
||||||
|
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://fprint.freedesktop.org/;
|
||||||
|
description = "A library designed to make it easy to add support for consumer fingerprint readers";
|
||||||
|
license = licenses.lgpl21;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ jobojeha ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -16,7 +16,13 @@ rec {
|
||||||
yeren = import ./machines/yeren.nix;
|
yeren = import ./machines/yeren.nix;
|
||||||
|
|
||||||
yerenSystem = (pkgs.nixos {
|
yerenSystem = (pkgs.nixos {
|
||||||
configuration = yeren;
|
configuration = { ... }: {
|
||||||
|
imports = [
|
||||||
|
./machines/yeren.nix
|
||||||
|
"${depot.depotPath}/ops/nixos/depot.nix"
|
||||||
|
];
|
||||||
|
inherit depot;
|
||||||
|
};
|
||||||
}).system;
|
}).system;
|
||||||
|
|
||||||
iso = import ./iso.nix args;
|
iso = import ./iso.nix args;
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
../modules/xserver.nix
|
../modules/xserver.nix
|
||||||
../modules/fonts.nix
|
../modules/fonts.nix
|
||||||
../modules/sound.nix
|
../modules/sound.nix
|
||||||
|
../modules/tvl.nix
|
||||||
|
../modules/development.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.hostName = "yeren";
|
networking.hostName = "yeren";
|
||||||
|
@ -69,4 +71,18 @@
|
||||||
libvdpau-va-gl
|
libvdpau-va-gl
|
||||||
intel-media-driver
|
intel-media-driver
|
||||||
];
|
];
|
||||||
|
|
||||||
|
services.fprintd = {
|
||||||
|
enable = true;
|
||||||
|
package = config.depot.users.glittershark.pkgs.fprintd;
|
||||||
|
};
|
||||||
|
|
||||||
|
security.pam.services = {
|
||||||
|
login.fprintAuth = true;
|
||||||
|
sudo.fprintAuth = true;
|
||||||
|
i3lock.fprintAuth = false;
|
||||||
|
i3lock-color.fprintAuth = false;
|
||||||
|
lightdm.fprintAuth = true;
|
||||||
|
lightdm-greeter.fprintAuth = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue