about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJon Meredith <jon@sunlightpayments.com>2017-01-16 17:18:27 -0800
committerJon Meredith <jon@sunlightpayments.com>2017-01-18 19:13:31 -0800
commitd9340971d9b2439f17711ac25c2a351650bc0173 (patch)
treead742ee844884541d602d5fc77017f59bea6b3f1
parent0baa434f2c13059b8845a30189a60d852a9c71e6 (diff)
Add yubioath-desktop application and required pyscard module to support it
-rw-r--r--pkgs/applications/misc/yubioath-desktop/default.nix41
-rw-r--r--pkgs/development/python-modules/pyscard/default.nix27
-rw-r--r--pkgs/top-level/all-packages.nix2
-rw-r--r--pkgs/top-level/python-packages.nix2
4 files changed, 72 insertions, 0 deletions
diff --git a/pkgs/applications/misc/yubioath-desktop/default.nix b/pkgs/applications/misc/yubioath-desktop/default.nix
new file mode 100644
index 0000000000000..3d12fc0371074
--- /dev/null
+++ b/pkgs/applications/misc/yubioath-desktop/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl,  python27Packages, swig, gettext, pcsclite, qt48Full, yubikey-personalization }:
+
+python27Packages.buildPythonApplication rec {
+    namePrefix = "";
+    name = "yubioath-desktop-${version}";
+    version = "3.1.0";
+
+    src = fetchurl {
+      url = "http://developers.yubico.com/yubioath-desktop/Releases/yubioath-desktop-${version}.tar.gz";
+      sha256 = "0jfvllgh88g2vwd8sg6willlnn2hq05nd9d3xmv98lhl7gyy1akw";
+    };
+
+    doCheck = false;
+
+    buildInputs = [ stdenv ];
+
+    propagatedBuildInputs = [ python27Packages.pycrypto python27Packages.click python27Packages.pyscard python27Packages.pyside ];
+
+    # Need LD_PRELOAD for libykpers as the Nix cpython disables ctypes.cdll.LoadLibrary
+    # support that the yubicommon library uses to load libykpers
+    makeWrapperArgs = ''--prefix LD_LIBRARY_PATH : "${pcsclite}/lib:${yubikey-personalization}/lib" --prefix LD_PRELOAD : "${yubikey-personalization}/lib/libykpers-1.so"'';
+
+    postInstall = ''
+      mkdir -p $out/share/applications
+      cp resources/yubioath.desktop $out/share/applications/yubioath.desktop
+      mkdir -p $out/share/yubioath/icons
+      cp resources/yubioath*.{icns,ico,png,xpm} $out/share/yubioath/icons
+      substituteInPlace $out/share/applications/yubioath.desktop \
+        --replace 'Exec=yubioath-gui' "Exec=$out/bin/yubioath-gui" \
+        --replace 'Icon=yubioath' "Icon=$out/share/yubioath/icons"
+
+    '';
+
+    meta = {
+      description = "Yubikey Desktop Authenticator";
+
+      homepage = https://www.yubico.com/support/knowledge-base/categories/articles/yubico-authenticator-download/;
+
+      license = stdenv.lib.licenses.gpl3;
+    };
+}
diff --git a/pkgs/development/python-modules/pyscard/default.nix b/pkgs/development/python-modules/pyscard/default.nix
new file mode 100644
index 0000000000000..b1f991b1adc5c
--- /dev/null
+++ b/pkgs/development/python-modules/pyscard/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, fetchpatch, python, buildPythonPackage, swig, pcsclite }:
+
+buildPythonPackage rec {
+  name = "pyscard-1.9.4";
+  namePrefix = "";
+
+  src = fetchurl {
+    url = "mirror://pypi/p/pyscard/${name}.tar.gz";
+    sha256 = "0gn0p4p8dhk99g8vald0dcnh45jbf82bj72n4djyr8b4hawkck4v";
+  };
+
+  configurePhase = "";
+
+
+  LDFLAGS="-L${pcsclite}/lib";
+  CFLAGS="-I${pcsclite}/include/PCSC";
+
+  propagatedBuildInputs = [ swig pcsclite ];
+
+  #doCheck = !(python.isPypy or stdenv.isDarwin); # error: AF_UNIX path too long
+
+  meta = {
+    homepage = "https://pyscard.sourceforge.io/";
+    description = "Smartcard library for python";
+    license = stdenv.lib.licenses.lgpl21;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index bb6576491bb37..40d6d5320e558 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -9879,6 +9879,8 @@ in
 
   yajl = callPackage ../development/libraries/yajl { };
 
+  yubioath-desktop = callPackage ../applications/misc/yubioath-desktop { };
+
   yubico-piv-tool = callPackage ../tools/misc/yubico-piv-tool { };
 
   yubikey-neo-manager = callPackage ../tools/misc/yubikey-neo-manager { };
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 2f59ae166395a..daddf1f64653b 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -281,6 +281,8 @@ in {
     pythonPackages = self;
   };
 
+  pyscard = callPackage ../development/python-modules/pyscard { };
+
   pyside = callPackage ../development/python-modules/pyside { };
 
   pysideApiextractor = callPackage ../development/python-modules/pyside/apiextractor.nix { };