From 620b7035709c36e93cca0bf8ea80024df4236635 Mon Sep 17 00:00:00 2001 From: Bryan Ramos Date: Tue, 14 May 2024 23:38:22 -0400 Subject: [PATCH] added electrum - electrs module --- src/system/modules/bitcoin/default.nix | 1 + .../modules/bitcoin/modules/default.nix | 5 ++ .../modules/electrum/config/default.nix | 22 ++++++ .../bitcoin/modules/electrum/default.nix | 72 +++++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 src/system/modules/bitcoin/modules/default.nix create mode 100644 src/system/modules/bitcoin/modules/electrum/config/default.nix create mode 100644 src/system/modules/bitcoin/modules/electrum/default.nix diff --git a/src/system/modules/bitcoin/default.nix b/src/system/modules/bitcoin/default.nix index 774feb9..957d81e 100644 --- a/src/system/modules/bitcoin/default.nix +++ b/src/system/modules/bitcoin/default.nix @@ -11,6 +11,7 @@ let in { options.modules.system.bitcoin = { enable = mkEnableOption "system.bitcoin"; }; config = mkIf cfg.enable { + imports = [ ./modules ]; nixpkgs.overlays = [ (final: prev: { bitcoind = prev.bitcoind.overrideAttrs (old: rec { diff --git a/src/system/modules/bitcoin/modules/default.nix b/src/system/modules/bitcoin/modules/default.nix new file mode 100644 index 0000000..f610803 --- /dev/null +++ b/src/system/modules/bitcoin/modules/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./electrum + ]; +} diff --git a/src/system/modules/bitcoin/modules/electrum/config/default.nix b/src/system/modules/bitcoin/modules/electrum/config/default.nix new file mode 100644 index 0000000..0e214ad --- /dev/null +++ b/src/system/modules/bitcoin/modules/electrum/config/default.nix @@ -0,0 +1,22 @@ +{ home, ... }: + +let + daemonDir = /var/lib/bitcoin; + +in +'' + network = "bitcoin" + + electrum_rpc_addr = "127.0.0.1:50001" + + cookie-file = "${daemonDir}/.cookie" + + db_dir = "${home}/db" + + log_filters = "INFO" + timestamp = true + + daemon-rpc-addr = "127.0.0.1:8332" + daemon-p2p-addr = "127.0.0.1:8333" + daemon-dir = "${daemonDir}" +'' diff --git a/src/system/modules/bitcoin/modules/electrum/default.nix b/src/system/modules/bitcoin/modules/electrum/default.nix new file mode 100644 index 0000000..6e920d8 --- /dev/null +++ b/src/system/modules/bitcoin/modules/electrum/default.nix @@ -0,0 +1,72 @@ +{ lib, pkgs, config, ... }: + +with lib; +let + cfg = config.modules.system.bitcoin.electrum; + home = /var/lib/electrs; + + btc = config.modules.system.bitcoin; + + conf = pkgs.writeText "config.toml" (import ./config { inherit home; }); + +in +{ options.modules.system.bitcoin.electrum = { enable = mkEnableOption "bitcoin.electrum"; }; + config = mkIf (cfg.enable && btc.enable) { + nixpkgs.overlays = [ + (final: prev: { + electrs = prev.electrs.overrideAttrs (old: rec { + version = "0.10.4"; + src = fetchFromGithub { + owner = old.owner; + repo = old.pname; + rev = "${version}"; + hash = '' + sha256-0xw2532nmaxx9bjdpnnby03b83wc9zs8bv1wdfgv9q1phccqbkz1 + ''; + }; + }); + }) + ]; + + environment.systemPackages = with pkgs; [ + electrs + ]; + + users = { + users = { + "electrs" = { + inherit home; + description = "electrs system user"; + isSystemUser = true; + group = "bitcoin"; + createHome = true; + }; + }; + }; + + + systemd.services.electrs = { + Unit = { + Description = "Electrs Bitcoin Indexer"; + After = [ "network.target" "bitcoind.service" ]; + Requires = [ "bitcoind.service" ]; + }; + Service = { + ExecStartPre = "${pkgs.coreutils}/sleep 10"; + ExecStart = "${pkgs.electrs}/bin/electrs --conf=${conf}"; + + User = "electrs"; + Group = "bitcoin"; + + Type = "simple"; + KillMode = "process"; + TimeoutSec = 60; + Restart = "always"; + RestartSec = 60; + }; + Install = { + WantedBy = [ "multi-user.target" ]; + }; + }; + }; +}