Add cln feeadjuster plugin

This commit is contained in:
elsirion 2022-05-20 09:51:21 +00:00 committed by Erik Arvstedt
parent ebaa9a3f2e
commit 1054e9a3b1
No known key found for this signature in database
GPG Key ID: 33312B944DD97846
3 changed files with 82 additions and 0 deletions

View File

@ -14,6 +14,7 @@ in {
imports = [
./clboss.nix
./commando.nix
./feeadjuster.nix
./prometheus.nix
./summary.nix
./zmq.nix

View File

@ -0,0 +1,78 @@
{ config, lib, ... }:
with lib;
let
options.services.clightning.plugins.feeadjuster = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable feeaduster (clightning plugin).
This plugin auto-updates channel fees to keep channels balanced.
See here for for all available options:
https://github.com/lightningd/plugins/blob/master/feeadjuster/feeadjuster.py
Extra options can be set via `services.clightning.extraConfig`.
'';
};
fuzz = mkOption {
type = types.bool;
default = true;
description = "Enable update threshold randomization and hysteresis.";
};
adjustOnForward = mkOption {
type = types.bool;
default = false;
description = "Automatically update fees on forward events.";
};
method = mkOption {
type = types.enum [ "soft" "default" "hard" ];
default = "default";
description = ''
Adjustment method to calculate channel fees.
`soft`: less difference when adjusting fees.
`hard`: greater difference when adjusting fees.
'';
};
adjustDaily = mkOption {
type = types.bool;
default = true;
description = "Automatically update fees daily.";
};
};
cfg = config.services.clightning.plugins.feeadjuster;
inherit (config.services) clightning;
in
{
inherit options;
config = mkIf (cfg.enable && clightning.enable) {
services.clightning.extraConfig = ''
plugin=${config.nix-bitcoin.pkgs.clightning-plugins.feeadjuster.path}
feeadjuster-adjustment-method="${cfg.method}"
'' + optionalString (!cfg.fuzz) ''
feeadjuster-deactivate-fuzz
'' + optionalString (!cfg.adjustOnForward) ''
feeadjuster-deactivate-fee-update
'';
systemd = mkIf cfg.adjustDaily {
services.clightning-feeadjuster = {
# Only run when clightning is running
requisite = [ "clightning.service" ];
after = [ "clightning.service" ];
serviceConfig = {
Type = "oneshot";
User = "clightning";
ExecStart = "${clightning.package}/bin/lightning-cli --lightning-dir ${clightning.dataDir} feeadjust";
};
unitConfig.JoinsNamespaceOf = [ "clightning.service" ];
startAt = [ "daily" ];
};
timers.clightning-feeadjuster.timerConfig = {
RandomizedDelaySec = "6h";
};
};
};
}

View File

@ -39,6 +39,9 @@ let
scriptName = "cl-zmq";
extraPkgs = [ twisted txzmq ];
};
feeadjuster = {
description = "Dynamically changes channel fees to keep your channels more balanced";
};
};
basePkgs = [ nbPython3Packages.pyln-client ];