about summary refs log tree commit diff
path: root/users/glittershark/pkgs/fprintd/default.nix
diff options
context:
space:
mode:
authorGriffin Smith <grfn@gws.fyi>2020-12-01T16·59-0500
committerglittershark <grfn@gws.fyi>2020-12-14T18·18+0000
commitcdedcc6238652599534b65f98b9422029ed05368 (patch)
tree6bd140abd3abfcbd812c0f316d08f5f4bb1f70bf /users/glittershark/pkgs/fprintd/default.nix
parentea936e0a78223c02d6e56954c60cf4a29b5e2983 (diff)
feat(gs/system): Setup fingerprint scanner r/1996
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
Diffstat (limited to 'users/glittershark/pkgs/fprintd/default.nix')
-rw-r--r--users/glittershark/pkgs/fprintd/default.nix124
1 files changed, 124 insertions, 0 deletions
diff --git a/users/glittershark/pkgs/fprintd/default.nix b/users/glittershark/pkgs/fprintd/default.nix
new file mode 100644
index 000000000000..4c4632b7a32e
--- /dev/null
+++ b/users/glittershark/pkgs/fprintd/default.nix
@@ -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 ];
+  };
+}