diff --git a/modules/clightning-plugins/clboss.nix b/modules/clightning-plugins/clboss.nix new file mode 100644 index 0000000..5a01a20 --- /dev/null +++ b/modules/clightning-plugins/clboss.nix @@ -0,0 +1,26 @@ +{ config, lib, pkgs, ... }: + +with lib; +let cfg = config.services.clightning.plugins.clboss; in +{ + options.services.clightning.plugins.clboss = { + enable = mkEnableOption "CLBOSS (clightning plugin)"; + min-onchain = mkOption { + type = types.ints.positive; + default = 30000; + description = '' + Specify target amount (in satoshi) that CLBOSS will leave onchain. + ''; + }; + }; + + config = mkIf cfg.enable { + services.clightning.extraConfig = '' + plugin=${config.nix-bitcoin.pkgs.clboss}/bin/clboss + clboss-min-onchain=${toString cfg.min-onchain} + ''; + systemd.services.clightning.path = [ + pkgs.dnsutils + ] ++ optional config.services.clightning.enforceTor (hiPrio config.nix-bitcoin.torify); + }; +} diff --git a/modules/clightning-plugins/default.nix b/modules/clightning-plugins/default.nix index 946cdc2..4de6bb1 100644 --- a/modules/clightning-plugins/default.nix +++ b/modules/clightning-plugins/default.nix @@ -6,6 +6,7 @@ let pluginPkgs = config.nix-bitcoin.pkgs.clightning-plugins; in { imports = [ + ./clboss.nix ./prometheus.nix ./summary.nix ./zmq.nix diff --git a/modules/modules.nix b/modules/modules.nix index 7a3ddf3..4dd50eb 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -1,5 +1,6 @@ { config, pkgs, lib, ... }: +with lib; { imports = [ # Core modules @@ -33,14 +34,27 @@ disabledModules = [ "services/networking/bitcoind.nix" ]; options = { - nix-bitcoin-services = lib.mkOption { + nix-bitcoin-services = mkOption { readOnly = true; default = import ./nix-bitcoin-services.nix lib pkgs; }; - nix-bitcoin.pkgs = lib.mkOption { - type = lib.types.attrs; - default = (import ../pkgs { inherit pkgs; }).modulesPkgs; + nix-bitcoin = { + pkgs = mkOption { + type = types.attrs; + default = (import ../pkgs { inherit pkgs; }).modulesPkgs; + }; + + # Torify binary that works with custom Tor SOCKS addresses + # Related issue: https://github.com/NixOS/nixpkgs/issues/94236 + torify = mkOption { + readOnly = true; + default = pkgs.writeScriptBin "torify" '' + ${pkgs.tor}/bin/torify \ + --address ${head (splitString ":" config.services.tor.client.socksListenAddress)} \ + "$@" + ''; + }; }; };