diff --git a/src/system/modules/bitcoin/default.nix b/src/system/modules/bitcoin/default.nix index b62372a..f2412bb 100644 --- a/src/system/modules/bitcoin/default.nix +++ b/src/system/modules/bitcoin/default.nix @@ -23,6 +23,8 @@ in description = "bitcoind system user"; isSystemUser = true; group = "bitcoin"; + home = /var/lib/bitcoind; + createHome = true; }; }; groups = { @@ -41,9 +43,6 @@ in configFile = /var/lib/bitcoind/bitcoin.conf; rpc = { - "btcd" = { - #passwordHMAC = #CHECK IF THIS IS SAFE TO EXPOSE!!; - }; port = 8332; }; diff --git a/src/system/modules/bitcoin/modules/core-lightning/default.nix b/src/system/modules/bitcoin/modules/core-lightning/default.nix index c851f6f..19e59fd 100644 --- a/src/system/modules/bitcoin/modules/core-lightning/default.nix +++ b/src/system/modules/bitcoin/modules/core-lightning/default.nix @@ -1,4 +1,5 @@ { lib, pkgs, config, ... }: +#TODO: c-lightning config file with lib; let cfg = config.modules.system.bitcoin.core-lightning; @@ -6,21 +7,23 @@ with lib; in { options.modules.system.bitcoin.core-lightning = { enable = mkEnableOption "system.bitcoin.core-lightning"; }; config = mkIf cfg.enable { - imports = [ ./modules ]; + imports = [ ./modules ]; programs.bash.shellAliases = { cln = "lightningd"; }; - home.packages = with pkgs; [ + environment.systemPackages = with pkgs; [ clightning ]; users = { users = { - "clightning" = { - description = "clightning system user"; + "c-lightning" = { + description = "core-lightning system user"; isSystemUser = true; group = "bitcoin"; + home = /var/lib/c-lightning; + createHome = true; }; }; }; @@ -33,12 +36,23 @@ in Wants = [ "network-online.target" ]; }; Service = { - ExecStartPre = "/usr/bin/sleep 10"; - ExecStart = "${pkgs.clightning}/bin/lightningd --conf=/var/lib/clightning/.lightning/config"; + ExecStartPre = + let + lightningConf = '' + ''; #put lightning conf here + in + "${pkgs.writeShellScript "prepare-clightning-config" '' + mkdir -p /var/lib/c-lightning/.lightning + chown -R c-lightning:bitcoin /var/lib/c-lightning + echo "${lightningConf}" > /var/lib/c-lightning/.lightning/config + chmod 600 /var/lib/c-lightning/.lightning/config + ''}"; + + ExecStart = "${pkgs.clightning}/bin/lightningd --conf=/var/lib/c-lightning/.lightning/config"; RuntimeDirectory = "lightningd"; - User = "clightning"; + User = "c-lightning"; Group = "bitcoin"; Type = "forking"; @@ -49,6 +63,7 @@ in ProtectSystem = "full"; NoNewPrivileges = true; PrivateDevies = true; + MemoryDenyWriteAccess = false; }; Install = { WantedBy = [ "multi-user.target" ]; diff --git a/src/system/modules/bitcoin/modules/core-lightning/modules/c-lightning-REST/default.nix b/src/system/modules/bitcoin/modules/core-lightning/modules/c-lightning-REST/default.nix index e69de29..c04a9e8 100644 --- a/src/system/modules/bitcoin/modules/core-lightning/modules/c-lightning-REST/default.nix +++ b/src/system/modules/bitcoin/modules/core-lightning/modules/c-lightning-REST/default.nix @@ -0,0 +1,18 @@ +{ lib, pkgs, config, ... }: + +with lib; + let + cfg = config.modules.system.bitcoin.core-lightning.REST; + cln = config.modules.system.bitcoin.core-lightning; + c-lightning-REST = import ./derivation.nix { inherit pkgs; }; + +in +{ options.modules.system.bitcoin.core-lightning.REST = { + enable = mkEnableOption "system.bitcoin.core-lightning.REST"; + }; + config = mkIf (cfg.enable && cln.enable) { + environment.systemPackages = with pkgs; [ + c-lightning-REST + ]; + }; +} diff --git a/src/system/modules/bitcoin/modules/core-lightning/modules/c-lightning-REST/derivation.nix b/src/system/modules/bitcoin/modules/core-lightning/modules/c-lightning-REST/derivation.nix new file mode 100644 index 0000000..4c7dd7e --- /dev/null +++ b/src/system/modules/bitcoin/modules/core-lightning/modules/c-lightning-REST/derivation.nix @@ -0,0 +1,28 @@ +{ pkgs, ... }: + +with pkgs; +stdenv.mkDerivation rec { + pname = "c-lightning-REST"; + version = "0.10.7"; + + src = fetchurl { + url = "https://github.com/Ride-The-Lightning/c-lightning-REST/archive/refs/tags/v${version}.tar.gz"; + sha256 = "1swg53vbacsrsgy79lni07dy2h44b0yf2kad7j4fv17az4gwnxk7"; + }; + + buildInputs = with pkgs; [ + nodejs + ]; + + installPhase = '' + mkdir -p $out + cp -r * $out/ + ''; + + meta = { + description = "c-lighting REST API"; + homepage = "https://github.com/Ride-The-Lightning/c-lightning-REST"; + license = stdenv.lib.licenses.mit; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/src/system/modules/bitcoin/modules/electrs/default.nix b/src/system/modules/bitcoin/modules/electrs/default.nix index 9c988e4..677bafd 100644 --- a/src/system/modules/bitcoin/modules/electrs/default.nix +++ b/src/system/modules/bitcoin/modules/electrs/default.nix @@ -1,4 +1,5 @@ { lib, pkgs, config, ... }: +#TODO: electrs configuration file with lib; let cfg = config.modules.bitcoin.electrs; @@ -15,6 +16,8 @@ in description = "electrs system user"; isSystemUser = true; group = "bitcoin"; + home = /var/lib/electrs; + createHome = true; }; }; }; @@ -34,9 +37,9 @@ in Type = "simple"; KillMode = "process"; - TimeoutSec = "60"; + TimeoutSec = 60; Restart = "always"; - RestartSec = "60"; + RestartSec = 60; }; Install = { WantedBy = [ "multi-user.target" ]; diff --git a/src/system/modules/bitcoin/modules/sparrow-server/default.nix b/src/system/modules/bitcoin/modules/sparrow-server/default.nix index ca6ff75..6629f8c 100644 --- a/src/system/modules/bitcoin/modules/sparrow-server/default.nix +++ b/src/system/modules/bitcoin/modules/sparrow-server/default.nix @@ -2,12 +2,12 @@ with lib; let - cfg = config.modules.gui.bitcoin.sparrow-server; + cfg = config.modules.system.bitcoin.sparrow-server; sparrow-server = import ./derivation.nix { inherit pkgs; }; in -{ options.modules.gui.bitcoin.sparrow-server = { enable = mkEnableOption "gui.bitcoin.sparrow-server"; }; +{ options.modules.system.bitcoin.sparrow-server = { enable = mkEnableOption "system.bitcoin.sparrow-server"; }; config = mkIf cfg.enable { - home.packages = with pkgs; [ + environment.systemPackages = with pkgs; [ sparrow-server ]; };