aboutsummaryrefslogtreecommitdiff
path: root/pkgs/tools/networking/pykms/default.nix
diff options
context:
space:
mode:
authorPeter Hoeg <peter@hoeg.com>2017-07-25 15:04:28 +0800
committerPeter Hoeg <peter@hoeg.com>2017-10-12 08:51:11 +0800
commit62e73a75f120d1c4b28d9e32e539db1bc99d1f28 (patch)
treeb8e13b34543c2fa62bb02d481a3548abaf894962 /pkgs/tools/networking/pykms/default.nix
parent829566a23dfbe8ef7fe1b3d2949f0f984c71fc98 (diff)
pykms: init at 20170719
Diffstat (limited to '')
-rw-r--r--pkgs/tools/networking/pykms/default.nix82
1 files changed, 82 insertions, 0 deletions
diff --git a/pkgs/tools/networking/pykms/default.nix b/pkgs/tools/networking/pykms/default.nix
new file mode 100644
index 00000000000..ba9bd762124
--- /dev/null
+++ b/pkgs/tools/networking/pykms/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchFromGitHub, python2Packages, writeText, writeScript
+, coreutils, sqlite }:
+
+let
+ dbSql = writeText "create_pykms_db.sql" ''
+ CREATE TABLE clients(
+ clientMachineId TEXT,
+ machineName TEXT,
+ applicationId TEXT,
+ skuId TEXT,
+ licenseStatus TEXT,
+ lastRequestTime INTEGER,
+ kmsEpid TEXT,
+ requestCount INTEGER
+ );
+ '';
+
+ dbScript = writeScript "create_pykms_db.sh" (with stdenv.lib; ''
+ #!${stdenv.shell} -eu
+
+ db=$1
+
+ ${getBin coreutils}/bin/install -d $(dirname $db)
+
+ if [ ! -e $db ] ; then
+ ${getBin sqlite}/bin/sqlite3 $db < ${dbSql}
+ fi
+ '');
+
+in python2Packages.buildPythonApplication rec {
+ name = "pykms-${version}";
+ version = "20170719";
+
+ src = fetchFromGitHub {
+ owner = "ThunderEX";
+ repo = "py-kms";
+ rev = "27355d88affd740330174a7c2bae9f50b9efce56";
+ sha256 = "0cpywj73jmyijjc5hs3b00argjsdwpqzmhawbxkx3mc2l4sgzc88";
+ };
+
+ propagatedBuildInputs = with python2Packages; [ argparse pytz ];
+
+ prePatch = ''
+ siteDir=$out/${python2Packages.python.sitePackages}
+
+ substituteInPlace kmsBase.py \
+ --replace "'KmsDataBase.xml'" "'$siteDir/KmsDataBase.xml'"
+ '';
+
+ dontBuild = true;
+
+ # there are no tests
+ doCheck = false;
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/{bin,share/doc/pykms} $siteDir
+
+ mv * $siteDir
+ for b in client server ; do
+ chmod 0755 $siteDir/$b.py
+ makeWrapper ${python2Packages.python.interpreter} $out/bin/$b.py \
+ --add-flags $siteDir/$b.py
+ done
+
+ install -m755 ${dbScript} $out/bin/create_pykms_db.sh
+
+ mv $siteDir/README.md $out/share/doc/pykms/
+
+ ${python2Packages.python.interpreter} -m compileall $siteDir
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Windows KMS (Key Management Service) server written in Python";
+ homepage = "https://forums.mydigitallife.info/threads/50234-Emulated-KMS-Servers-on-non-Windows-platforms/page2?p=840410&viewfull=1#post840410";
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}