added electrum - electrs module

This commit is contained in:
Bryan Ramos 2024-05-14 23:38:22 -04:00
parent ca9066bfaa
commit 620b703570
Signed by: bryan
GPG key ID: 6ABDCD144D6643C8
4 changed files with 100 additions and 0 deletions

View file

@ -11,6 +11,7 @@ let
in in
{ options.modules.system.bitcoin = { enable = mkEnableOption "system.bitcoin"; }; { options.modules.system.bitcoin = { enable = mkEnableOption "system.bitcoin"; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
imports = [ ./modules ];
nixpkgs.overlays = [ nixpkgs.overlays = [
(final: prev: { (final: prev: {
bitcoind = prev.bitcoind.overrideAttrs (old: rec { bitcoind = prev.bitcoind.overrideAttrs (old: rec {

View file

@ -0,0 +1,5 @@
{
imports = [
./electrum
];
}

View file

@ -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}"
''

View file

@ -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" ];
};
};
};
}