about summary refs log tree commit diff
path: root/humblebundle/default.nix
diff options
context:
space:
mode:
authoraszlig <aszlig@redmoonstudios.org>2015-04-17 12:31:27 +0200
committeraszlig <aszlig@redmoonstudios.org>2015-04-17 12:31:27 +0200
commit62d2888f937bbea915463da55db520710fb5e3fb (patch)
tree836f882c8b9cbcfb3d98ded0cdbe22976ede0d93 /humblebundle/default.nix
parent4d3aa52331a080fa9d8bb2fa915ca4294ac09d22 (diff)
Use the NixOS module system for configuration.
Let's use the module system to allow specifying things such as
HumbleBundle or Steam or $whatnot's usernames and passwords, so we can
not only typecheck these options but also modularize it before this
whole repository is beginning to get very messy.

Right now, if you use the default.nix without a configuration, you'll
still get message saying that you may want to supply HumbleBundle
credentials, even though it's no longer only about HumbleBundle anymore.

Nevertheless, the only tree existing right now is the HumbleBundle one,
so never mind about that :-)

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'humblebundle/default.nix')
-rw-r--r--humblebundle/default.nix32
1 files changed, 27 insertions, 5 deletions
diff --git a/humblebundle/default.nix b/humblebundle/default.nix
index 6e733603..953f3481 100644
--- a/humblebundle/default.nix
+++ b/humblebundle/default.nix
@@ -1,13 +1,13 @@
-{ email ? null, password ? null }:
-
-with import <nixpkgs> {};
+{ config, lib, pkgs, ... }:
 
 let
+  cfg = config.humblebundle;
+
   self = rec {
     callPackage = pkgs.lib.callPackageWith (pkgs // self);
 
     fetchHumbleBundle = callPackage ./fetch-humble-bundle {
-      inherit email password;
+      inherit (config.humblebundle) email password;
     };
 
     bastion = callPackage ./bastion.nix {};
@@ -21,4 +21,26 @@ let
     spaz = callPackage ./spaz.nix {};
     swordsandsoldiers = callPackage ./swordsandsoldiers.nix {};
   };
-in self
+in with lib; {
+  options.humblebundle = {
+    email = mkOption {
+      type = types.nullOr types.str;
+      default = null;
+      description = ''
+        Email address for your HumbleBundle account.
+      '';
+    };
+
+    password = mkOption {
+      type = types.nullOr types.str;
+      default = null;
+      description = ''
+        Password for your HumbleBundle account.
+      '';
+    };
+  };
+
+  config.packages = {
+    humblebundle = mkIf (cfg.email != null && cfg.password != null) self;
+  };
+}