grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / misc / cpuminer-cryptonight.nix
blobc61c0d7c34bdd2bd17df65dd5ff72490c7963209
1 { config, lib, pkgs, ... }:
2 let
3   cfg = config.services.cpuminer-cryptonight;
5   json = builtins.toJSON (
6     cfg // {
7        enable = null;
8        threads =
9          if cfg.threads == 0 then null else toString cfg.threads;
10     }
11   );
13   confFile = builtins.toFile "cpuminer.json" json;
17   options = {
19     services.cpuminer-cryptonight = {
20       enable = lib.mkOption {
21         type = lib.types.bool;
22         default = false;
23         description = ''
24           Whether to enable the cpuminer cryptonight miner.
25         '';
26       };
27       url = lib.mkOption {
28         type = lib.types.str;
29         description = "URL of mining server";
30       };
31       user = lib.mkOption {
32         type = lib.types.str;
33         description = "Username for mining server";
34       };
35       pass = lib.mkOption {
36         type = lib.types.str;
37         default = "x";
38         description = "Password for mining server";
39       };
40       threads = lib.mkOption {
41         type = lib.types.int;
42         default = 0;
43         description = "Number of miner threads, defaults to available processors";
44       };
45     };
47   };
49   config = lib.mkIf config.services.cpuminer-cryptonight.enable {
51     systemd.services.cpuminer-cryptonight = {
52       description = "Cryptonight cpuminer";
53       wantedBy = [ "multi-user.target" ];
54       after = [ "network.target" ];
55       serviceConfig = {
56         ExecStart = "${pkgs.cpuminer-multi}/bin/minerd --syslog --config=${confFile}";
57         User = "nobody";
58       };
59     };
61   };