lol
1{ stdenv, fetchFromGitHub, python3Packages, writeText, writeScript
2, coreutils, sqlite }:
3
4with python3Packages;
5
6let
7 dbSql = writeText "create_pykms_db.sql" ''
8 CREATE TABLE clients(
9 clientMachineId TEXT,
10 machineName TEXT,
11 applicationId TEXT,
12 skuId TEXT,
13 licenseStatus TEXT,
14 lastRequestTime INTEGER,
15 kmsEpid TEXT,
16 requestCount INTEGER
17 );
18 '';
19
20 dbScript = writeScript "create_pykms_db.sh" (with stdenv.lib; ''
21 #!${stdenv.shell} -eu
22
23 db=$1
24
25 ${getBin coreutils}/bin/install -d $(dirname $db)
26
27 if [ ! -e $db ] ; then
28 ${getBin sqlite}/bin/sqlite3 $db < ${dbSql}
29 fi
30 '');
31
32in buildPythonApplication rec {
33 name = "pykms-${version}";
34 version = "20171224";
35
36 src = fetchFromGitHub {
37 owner = "ThunderEX";
38 repo = "py-kms";
39 rev = "885f67904f002042d7758e38f9c5426461c5cdc7";
40 sha256 = "155khy1285f8xkzi6bsqm9vzz043jsjmp039va1qsh675gz3q9ha";
41 };
42
43 propagatedBuildInputs = [ argparse pytz ];
44
45 prePatch = ''
46 siteDir=$out/${python.sitePackages}
47
48 substituteInPlace kmsBase.py \
49 --replace "'KmsDataBase.xml'" "'$siteDir/KmsDataBase.xml'"
50 '';
51
52 dontBuild = true;
53
54 # there are no tests
55 doCheck = false;
56
57 installPhase = ''
58 runHook preInstall
59
60 mkdir -p $out/{bin,share/doc/pykms} $siteDir
61
62 mv * $siteDir
63 for b in client server ; do
64 chmod 0755 $siteDir/$b.py
65 makeWrapper ${python.interpreter} $out/bin/$b.py \
66 --add-flags $siteDir/$b.py
67 done
68
69 install -m755 ${dbScript} $out/bin/create_pykms_db.sh
70
71 mv $siteDir/README.md $out/share/doc/pykms/
72
73 ${python.interpreter} -m compileall $siteDir
74
75 runHook postInstall
76 '';
77
78 meta = with stdenv.lib; {
79 description = "Windows KMS (Key Management Service) server written in Python";
80 homepage = https://github.com/ThunderEX/py-kms;
81 license = licenses.mit;
82 maintainers = with maintainers; [ peterhoeg ];
83 };
84}