about summary refs log tree commit diff
path: root/humblebundle/fetch-humble-bundle/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'humblebundle/fetch-humble-bundle/default.nix')
-rw-r--r--humblebundle/fetch-humble-bundle/default.nix30
1 files changed, 27 insertions, 3 deletions
diff --git a/humblebundle/fetch-humble-bundle/default.nix b/humblebundle/fetch-humble-bundle/default.nix
index 3ef2cbe6..b5b15bb6 100644
--- a/humblebundle/fetch-humble-bundle/default.nix
+++ b/humblebundle/fetch-humble-bundle/default.nix
@@ -1,5 +1,7 @@
-{ stdenv, curl, cacert, email, password, writeText, fetchFromGitHub
-, python, buildPythonPackage, pythonPackages, fetchpatch
+{ stdenv, curl, cacert, writeText, fetchFromGitHub, fetchpatch
+, python, buildPythonPackage, pythonPackages
+
+, email ? null, password ? null
 }:
 
 { machineName, downloadName ? "Download", suffix ? "humblebundle", md5 }: let
@@ -24,6 +26,28 @@
     propagatedBuildInputs = with pythonPackages; [ requests2 ];
   };
 
+  configFilePath = let
+    xdgConfig = builtins.getEnv "XDG_CONFIG_HOME";
+    fallback = "${builtins.getEnv "HOME"}/.config";
+    basedir = if xdgConfig == "" then fallback else xdgConfig;
+  in "${basedir}/nixgames.nix";
+
+  configFile = if !builtins.pathExists configFilePath then throw ''
+    The config file "${configFilePath}" doesn't exist! Be sure to create it and
+    put your HumbleBundle email address and password in it, like this:
+
+    {
+      humblebundle.email = "fancyuser@example.com";
+      humblebundle.password = "my_super_secret_password";
+    }
+  '' else configFilePath;
+
+  credentials = if email != null && password != null then {
+    inherit email password;
+  } else {
+    inherit ((import configFile).humblebundle) email password;
+  };
+
   getDownloadURL = writeText "gethburl.py" ''
     import sys, humblebundle
 
@@ -53,7 +77,7 @@
           raise SystemExit(1)
 
     hb = humblebundle.HumbleApi()
-    hb.login('${email}', '${password}')
+    hb.login('${credentials.email}', '${credentials.password}')
     products = dict(get_products(hb))
     dstruct = find_download(products)