summary refs log tree commit diff
path: root/nixos/modules/services/misc/xmr-stak.nix
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2017-12-14 09:00:03 +0100
committerFranz Pletz <fpletz@fnordicwalking.de>2017-12-14 16:03:09 +0100
commit2754d1a8c3820abb9cf90a01af0f6d6d0de3bf34 (patch)
treedb741b3655ca8884e2ca093bc9f2ad05cb5e12b1 /nixos/modules/services/misc/xmr-stak.nix
parente520a8cc0d0a504ddc36fa04d6a00dd36639f56d (diff)
downloadnixpkgs-2754d1a8c3820abb9cf90a01af0f6d6d0de3bf34.tar
nixpkgs-2754d1a8c3820abb9cf90a01af0f6d6d0de3bf34.tar.gz
nixpkgs-2754d1a8c3820abb9cf90a01af0f6d6d0de3bf34.tar.bz2
nixpkgs-2754d1a8c3820abb9cf90a01af0f6d6d0de3bf34.tar.lz
nixpkgs-2754d1a8c3820abb9cf90a01af0f6d6d0de3bf34.tar.xz
nixpkgs-2754d1a8c3820abb9cf90a01af0f6d6d0de3bf34.tar.zst
nixpkgs-2754d1a8c3820abb9cf90a01af0f6d6d0de3bf34.zip
xmr-stak module: init
Diffstat (limited to 'nixos/modules/services/misc/xmr-stak.nix')
-rw-r--r--nixos/modules/services/misc/xmr-stak.nix73
1 files changed, 73 insertions, 0 deletions
diff --git a/nixos/modules/services/misc/xmr-stak.nix b/nixos/modules/services/misc/xmr-stak.nix
new file mode 100644
index 00000000000..57f43936547
--- /dev/null
+++ b/nixos/modules/services/misc/xmr-stak.nix
@@ -0,0 +1,73 @@
+{ lib, config, pkgs, ... }:
+
+with lib;
+
+let
+
+  cfg = config.services.xmr-stak;
+
+  pkg = pkgs.xmr-stak.override {
+    inherit (cfg) openclSupport cudaSupport;
+  };
+
+  xmrConfArg = optionalString (cfg.configText != "") ("-c " +
+    pkgs.writeText "xmr-stak-config.txt" cfg.configText);
+
+in
+
+{
+  options = {
+    services.xmr-stak = {
+      enable = mkEnableOption "xmr-stak miner";
+      openclSupport = mkEnableOption "support for OpenCL (AMD/ATI graphics cards)";
+      cudaSupport = mkEnableOption "support for CUDA (NVidia graphics cards)";
+
+      extraArgs = mkOption {
+        type = types.listOf types.str;
+        default = [];
+        example = [ "--noCPU" "--currency monero" ];
+        description = "List of parameters to pass to xmr-stak.";
+      };
+
+      configText = mkOption {
+        type = types.lines;
+        default = "";
+        example = ''
+          "currency" : "monero",
+          "pool_list" :
+            [ { "pool_address" : "pool.supportxmr.com:5555",
+                "wallet_address" : "<long-hash>",
+                "pool_password" : "minername",
+                "pool_weight" : 1,
+              },
+            ],
+        '';
+        description = ''
+          Verbatim xmr-stak config.txt. If empty, the <literal>-c</literal>
+          parameter will not be added to the xmr-stak command.
+        '';
+      };
+    };
+  };
+
+  config = mkIf cfg.enable {
+    systemd.services.xmr-stak = {
+      wantedBy = [ "multi-user.target" ];
+      bindsTo = [ "network-online.target" ];
+      after = [ "network-online.target" ];
+      environment = mkIf cfg.cudaSupport {
+        LD_LIBRARY_PATH = "${pkgs.linuxPackages_latest.nvidia_x11}/lib";
+      };
+      script = ''
+        exec ${pkg}/bin/xmr-stak ${xmrConfArg} ${concatStringsSep " " cfg.extraArgs}
+      '';
+      serviceConfig = let rootRequired = cfg.openclSupport || cfg.cudaSupport; in {
+        # xmr-stak generates cpu and/or gpu configuration files
+        WorkingDirectory = "/tmp";
+        PrivateTmp = true;
+        DynamicUser = !rootRequired;
+        LimitMEMLOCK = toString (1024*1024);
+      };
+    };
+  };
+}