vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / misc / xmrig.nix
blobd4e1be7799728315d5919d3285ef4bd3d4438a1a
1 { config, pkgs, lib, ... }:
4 let
5   cfg = config.services.xmrig;
7   json = pkgs.formats.json { };
8   configFile = json.generate "config.json" cfg.settings;
9 in
11 with lib;
14   options = {
15     services.xmrig = {
16       enable = mkEnableOption "XMRig Mining Software";
18       package = mkPackageOption pkgs "xmrig" {
19         example = "xmrig-mo";
20       };
22       settings = mkOption {
23         default = { };
24         type = json.type;
25         example = literalExpression ''
26           {
27             autosave = true;
28             cpu = true;
29             opencl = false;
30             cuda = false;
31             pools = [
32               {
33                 url = "pool.supportxmr.com:443";
34                 user = "your-wallet";
35                 keepalive = true;
36                 tls = true;
37               }
38             ]
39           }
40         '';
41         description = ''
42           XMRig configuration. Refer to
43           <https://xmrig.com/docs/miner/config>
44           for details on supported values.
45         '';
46       };
47     };
48   };
50   config = mkIf cfg.enable {
51     hardware.cpu.x86.msr.enable = true;
53     systemd.services.xmrig = {
54       wantedBy = [ "multi-user.target" ];
55       after = [ "network.target" ];
56       description = "XMRig Mining Software Service";
57       serviceConfig = {
58         ExecStartPre = "${lib.getExe cfg.package} --config=${configFile} --dry-run";
59         ExecStart = "${lib.getExe cfg.package} --config=${configFile}";
60         # https://xmrig.com/docs/miner/randomx-optimization-guide/msr
61         # If you use recent XMRig with root privileges (Linux) or admin
62         # privileges (Windows) the miner configure all MSR registers
63         # automatically.
64         DynamicUser = lib.mkDefault false;
65       };
66     };
67   };
69   meta = with lib; {
70     maintainers = with maintainers; [ ratsclub ];
71   };