xmr-stak service: support multiple config files

This commit is contained in:
Franz Pletz 2018-06-19 12:12:44 +02:00
parent 26501a9bf9
commit 8eaff5b06a
No known key found for this signature in database
GPG Key ID: 846FDED7792617B4
1 changed files with 40 additions and 20 deletions

View File

@ -10,9 +10,6 @@ let
inherit (cfg) openclSupport cudaSupport; inherit (cfg) openclSupport cudaSupport;
}; };
xmrConfArg = optionalString (cfg.configText != "") ("-c " +
pkgs.writeText "xmr-stak-config.txt" cfg.configText);
in in
{ {
@ -29,22 +26,34 @@ in
description = "List of parameters to pass to xmr-stak."; description = "List of parameters to pass to xmr-stak.";
}; };
configText = mkOption { configFiles = mkOption {
type = types.lines; type = types.attrsOf types.str;
default = ""; default = {};
example = '' example = literalExample ''
"currency" : "monero", {
"pool_list" : "config.txt" = '''
[ { "pool_address" : "pool.supportxmr.com:5555", "verbose_level" : 4,
"wallet_address" : "<long-hash>", "h_print_time" : 60,
"pool_password" : "minername", "tls_secure_algo" : true,
"pool_weight" : 1, ''';
}, "pools.txt" = '''
], "currency" : "monero7",
"pool_list" :
[ { "pool_address" : "pool.supportxmr.com:443",
"wallet_address" : "my-wallet-address",
"rig_id" : "",
"pool_password" : "nixos",
"use_nicehash" : false,
"use_tls" : true,
"tls_fingerprint" : "",
"pool_weight" : 23
},
],
''';
}
''; '';
description = '' description = ''
Verbatim xmr-stak config.txt. If empty, the <literal>-c</literal> Content of config files like config.txt, pools.txt or cpu.txt.
parameter will not be added to the xmr-stak command.
''; '';
}; };
}; };
@ -58,10 +67,13 @@ in
environment = mkIf cfg.cudaSupport { environment = mkIf cfg.cudaSupport {
LD_LIBRARY_PATH = "${pkgs.linuxPackages_latest.nvidia_x11}/lib"; LD_LIBRARY_PATH = "${pkgs.linuxPackages_latest.nvidia_x11}/lib";
}; };
script = ''
exec ${pkg}/bin/xmr-stak ${xmrConfArg} ${concatStringsSep " " cfg.extraArgs} preStart = concatStrings (flip mapAttrsToList cfg.configFiles (fn: content: ''
''; ln -sf '${pkgs.writeText "xmr-stak-${fn}" content}' '${fn}'
''));
serviceConfig = let rootRequired = cfg.openclSupport || cfg.cudaSupport; in { serviceConfig = let rootRequired = cfg.openclSupport || cfg.cudaSupport; in {
ExecStart = "${pkg}/bin/xmr-stak ${concatStringsSep " " cfg.extraArgs}";
# xmr-stak generates cpu and/or gpu configuration files # xmr-stak generates cpu and/or gpu configuration files
WorkingDirectory = "/tmp"; WorkingDirectory = "/tmp";
PrivateTmp = true; PrivateTmp = true;
@ -70,4 +82,12 @@ in
}; };
}; };
}; };
imports = [
(mkRemovedOptionModule ["services" "xmr-stak" "configText"] ''
This option was removed in favour of `services.xmr-stak.configFiles`
because the new config file `pools.txt` was introduced. You are
now able to define all other config files like cpu.txt or amd.txt.
'')
];
} }