1{ lib, buildPythonPackage, fetchFromGitHub, cacert, openssl, python
2
3, cryptography, pyrad, pymysql, python-dateutil, flask-versioned, flask_script
4, defusedxml, croniter, flask_migrate, pyjwt, configobj, sqlsoup, pillow
5, python-gnupg, passlib, pyopenssl, beautifulsoup4, smpplib, flask-babel
6, ldap3, huey, pyyaml, qrcode, oauth2client, requests, lxml, cbor2, psycopg2
7
8, mock, pytest, responses, testfixtures
9}:
10
11buildPythonPackage rec {
12 pname = "privacyIDEA";
13 version = "3.3";
14
15 src = fetchFromGitHub {
16 owner = pname;
17 repo = pname;
18 rev = "v${version}";
19 sha256 = "188ki924dig899wlih45xfsm0s7mjkya56vii26bg02h91izrb4b";
20 };
21
22 propagatedBuildInputs = [
23 cryptography pyrad pymysql python-dateutil flask-versioned flask_script
24 defusedxml croniter flask_migrate pyjwt configobj sqlsoup pillow
25 python-gnupg passlib pyopenssl beautifulsoup4 smpplib flask-babel
26 ldap3 huey pyyaml qrcode oauth2client requests lxml cbor2 psycopg2
27 ];
28
29 checkInputs = [ openssl mock pytest responses testfixtures ];
30 # issues with hardware token tests
31 doCheck = false;
32
33 pythonImportsCheck = [ "privacyidea" ];
34
35 postPatch = ''
36 substituteInPlace privacyidea/lib/resolvers/LDAPIdResolver.py --replace \
37 "/etc/privacyidea/ldap-ca.crt" \
38 "${cacert}/etc/ssl/certs/ca-bundle.crt"
39 '';
40
41 postInstall = ''
42 rm -rf $out/${python.sitePackages}/tests
43 '';
44
45 meta = with lib; {
46 description = "Multi factor authentication system (2FA, MFA, OTP Server)";
47 license = licenses.agpl3Plus;
48 homepage = "http://www.privacyidea.org";
49 maintainers = [ maintainers.globin ];
50 };
51}