diff options
author | Franz Pletz <fpletz@fnordicwalking.de> | 2017-12-14 09:00:03 +0100 |
---|---|---|
committer | Franz Pletz <fpletz@fnordicwalking.de> | 2017-12-14 16:03:09 +0100 |
commit | 2754d1a8c3820abb9cf90a01af0f6d6d0de3bf34 (patch) | |
tree | db741b3655ca8884e2ca093bc9f2ad05cb5e12b1 /nixos/modules/services/misc/xmr-stak.nix | |
parent | e520a8cc0d0a504ddc36fa04d6a00dd36639f56d (diff) | |
download | nixpkgs-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.nix | 73 |
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); + }; + }; + }; +} |