diff options
Diffstat (limited to 'os/srv/monero.nix')
| -rw-r--r-- | os/srv/monero.nix | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/os/srv/monero.nix b/os/srv/monero.nix deleted file mode 100644 index eb21abc..0000000 --- a/os/srv/monero.nix +++ /dev/null @@ -1,124 +0,0 @@ -{ - config, - lib, - pkgs, - masterDomain, - securityTemplates, - ... -}: -let - cfg = config.os.srv.monero; - banlist1 = pkgs.fetchurl { - url = "https://gui.xmr.pm/files/block.txt"; - hash = "sha256-0ik4d66js6wvrvciza0li6bsajj8dvxsqlf09hcz7hg610szdxcw"; - }; - banlist2 = pkgs.fetchurl { - url = "https://raw.githubusercontent.com/Boog900/monero-ban-list/refs/heads/main/ban_list.txt"; - hash = "sh256-01z4wm2mp4z1wq2wdkrm66j50gwk3r82m2ml4n0pwjcbajxkdc87"; - }; - - combinedBanlist = pkgs.writeText "combined-monero-banlist.txt" '' - ${builtins.readFile banlist1} - ${builtins.readFile banlist2} - ''; -in -{ - options.os.srv.monero = { - wallet.enable = lib.mkEnableOption "enables the monero wallet"; - service = { - enable = lib.mkEnableOption "enables hosting a monero node"; - public = lib.mkEnableOption "makes the RPC node public (disables authentication for general wallet syncing)"; - tor.enable = lib.mkEnableOption "exposes monero RPC via Tor Onion Service"; - i2p.enable = lib.mkEnableOption "exposes monero RPC via I2P Tunnel"; - }; - }; - - config = lib.mkMerge [ - (lib.mkIf cfg.wallet.enable { - environment.systemPackages = [ pkgs.monero-cli ]; - }) - (lib.mkIf cfg.service.enable { - assertions = [ - { - assertion = if (!cfg.service.public) then config.os.srv.sops.enable else true; - message = "sops must be enabled"; - } - { - assertion = if cfg.service.tor.enable then config.os.srv.tor.enable else true; - message = "tor must be enabled"; - } - { - assertion = if cfg.service.i2p.enable then config.os.srv.i2p.enable else true; - message = "i2p must be enabled"; - } - ]; - - sops.secrets."monero/rpc-password" = { - owner = "monero"; - restartUnits = [ "monero.service" ]; - }; - - services.monero = { - enable = true; - prune = true; - banlist = combinedBanlist; - - limits = { - upload = 1250; - download = 12500; - threads = 8; - }; - - rpc = { - address = "0.0.0.0"; - } - // lib.optionalAttrs (!cfg.service.public) { - restricted = true; - user = "admin"; - password = config.sops.secrets."monero/rpc-password".path; - }; - - }; - - services.tor = lib.mkIf cfg.service.tor.enable { - # onionServices."xmr-rpc" = { - # to = [ - # { - # port = 18081; - # address = config.os.core.network.ips.relay-vm; - # } - # ]; - # }; - }; - - services.i2pd = lib.mkIf cfg.service.i2p.enable { - # tunnels.server."xmr-rpc" = { - # port = 18081; - # address = config.os.core.network.ips.relay-vm; - # keys = "xmr-rpc-key.dat"; - # inbound.length = 3; - # outbound.length = 3; - # }; - }; - - os.cluster.nginxProxies."xmr.${masterDomain}" = { - enableACME = true; - forceSSL = true; - - locations."/" = { - proxyPass = "http://${config.os.core.network.ips.relay-vm}:18081"; - extraConfig = '' - proxy_read_timeout 600s; - proxy_send_timeout 600s; - client_max_body_size 50m; - - ${securityTemplates.restrictToInternal} - ''; - }; - }; - - # Left open for P2P syncing - networking.firewall.allowedTCPPorts = [ 18080 ]; - }) - ]; -} |
