remove recurring-donations
module
This module has failed to evaluate for quite some time. We might bring it back someday with bolt12 and LNURL support.
This commit is contained in:
parent
9a31cc7d5a
commit
8aa28da110
@ -75,7 +75,6 @@ NixOS modules ([src](modules/modules.nix))
|
|||||||
* [liquid](https://github.com/elementsproject/elements)
|
* [liquid](https://github.com/elementsproject/elements)
|
||||||
* [JoinMarket](https://github.com/joinmarket-org/joinmarket-clientserver)
|
* [JoinMarket](https://github.com/joinmarket-org/joinmarket-clientserver)
|
||||||
* [JoinMarket Orderbook Watcher](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/orderbook.md)
|
* [JoinMarket Orderbook Watcher](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/orderbook.md)
|
||||||
* [recurring-donations](modules/recurring-donations.nix): for periodic lightning payments
|
|
||||||
* [bitcoin-core-hwi](https://github.com/bitcoin-core/HWI)
|
* [bitcoin-core-hwi](https://github.com/bitcoin-core/HWI)
|
||||||
* Helper
|
* Helper
|
||||||
* [netns-isolation](modules/netns-isolation.nix): isolates applications on the network-level via network namespaces
|
* [netns-isolation](modules/netns-isolation.nix): isolates applications on the network-level via network namespaces
|
||||||
|
@ -145,22 +145,6 @@
|
|||||||
#
|
#
|
||||||
# Liquid can be controlled with command 'elements-cli'.
|
# Liquid can be controlled with command 'elements-cli'.
|
||||||
|
|
||||||
### RECURRING-DONATIONS
|
|
||||||
# Set this to enable recurring donations. This is EXPERIMENTAL; it's
|
|
||||||
# not guaranteed that payments are succeeding or that you will notice payment
|
|
||||||
# failure.
|
|
||||||
# services.recurring-donations.enable = true;
|
|
||||||
# This automatically enables clightning.
|
|
||||||
#
|
|
||||||
# Specify the receivers of the donations. By default donations are every
|
|
||||||
# Monday at a randomized time. Check `journalctl -eu recurring-donations` or
|
|
||||||
# `lightning-cli listpayments` for successful lightning donations.
|
|
||||||
# services.recurring-donations.tallycoin = {
|
|
||||||
# "<receiver name>" = <amount you wish to donate in sat>"
|
|
||||||
# "<additional receiver name>" = <amount you wish to donate in sat>;
|
|
||||||
# "djbooth007" = 1000;
|
|
||||||
# };
|
|
||||||
|
|
||||||
### Hardware wallets
|
### Hardware wallets
|
||||||
# Enable the following to allow using hardware wallets.
|
# Enable the following to allow using hardware wallets.
|
||||||
# See https://github.com/bitcoin-core/HWI for more information.
|
# See https://github.com/bitcoin-core/HWI for more information.
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
presets.secure-node = ./presets/secure-node.nix;
|
presets.secure-node = ./presets/secure-node.nix;
|
||||||
rtl = ./rtl.nix;
|
rtl = ./rtl.nix;
|
||||||
spark-wallet = ./spark-wallet.nix;
|
spark-wallet = ./spark-wallet.nix;
|
||||||
recurring-donations = ./recurring-donations.nix;
|
|
||||||
lnd = ./lnd.nix;
|
lnd = ./lnd.nix;
|
||||||
charge-lnd = ./charge-lnd.nix;
|
charge-lnd = ./charge-lnd.nix;
|
||||||
joinmarket = ./joinmarket.nix;
|
joinmarket = ./joinmarket.nix;
|
||||||
|
@ -25,7 +25,6 @@
|
|||||||
./joinmarket.nix
|
./joinmarket.nix
|
||||||
./joinmarket-ob-watcher.nix
|
./joinmarket-ob-watcher.nix
|
||||||
./hardware-wallets.nix
|
./hardware-wallets.nix
|
||||||
./recurring-donations.nix
|
|
||||||
|
|
||||||
# Support features
|
# Support features
|
||||||
./versioning.nix
|
./versioning.nix
|
||||||
|
@ -246,10 +246,6 @@ in {
|
|||||||
id = 17;
|
id = 17;
|
||||||
# communicates with clightning over lightning-rpc socket
|
# communicates with clightning over lightning-rpc socket
|
||||||
};
|
};
|
||||||
recurring-donations = {
|
|
||||||
id = 20;
|
|
||||||
# communicates with clightning over lightning-rpc socket
|
|
||||||
};
|
|
||||||
nginx = {
|
nginx = {
|
||||||
id = 21;
|
id = 21;
|
||||||
};
|
};
|
||||||
|
@ -19,7 +19,6 @@ in {
|
|||||||
# btcpayserver.enforceTor = true;
|
# btcpayserver.enforceTor = true;
|
||||||
nbxplorer.enforceTor = true;
|
nbxplorer.enforceTor = true;
|
||||||
spark-wallet.enforceTor = true;
|
spark-wallet.enforceTor = true;
|
||||||
recurring-donations.enforceTor = true;
|
|
||||||
lightning-pool.enforceTor = true;
|
lightning-pool.enforceTor = true;
|
||||||
rtl.enforceTor = true;
|
rtl.enforceTor = true;
|
||||||
};
|
};
|
||||||
|
@ -1,107 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
options.services.recurring-donations = {
|
|
||||||
enable = mkEnableOption "recurring-donations";
|
|
||||||
tallycoin = mkOption {
|
|
||||||
type = types.attrs;
|
|
||||||
default = {};
|
|
||||||
description = ''
|
|
||||||
This option is used to specify tallycoin donation receivers using an
|
|
||||||
attribute set. For example the following setting instructs the module
|
|
||||||
to repeatedly send 1000 satoshis to djbooth007.
|
|
||||||
{
|
|
||||||
"djbooth007" = 1000;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
interval = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "Mon *-*-* 00:00:00";
|
|
||||||
description = ''
|
|
||||||
Schedules the donations. Default is weekly on Mon 00:00:00. See `man
|
|
||||||
systemd.time` for further options.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
randomizedDelaySec = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 86400;
|
|
||||||
description = ''
|
|
||||||
Random delay to add to scheduled time for donation. Default is one day.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
enforceTor = nbLib.enforceTor;
|
|
||||||
};
|
|
||||||
|
|
||||||
cfg = config.services.recurring-donations;
|
|
||||||
nbLib = config.nix-bitcoin.lib;
|
|
||||||
recurring-donations-script = pkgs.writeScript "recurring-donations.sh" ''
|
|
||||||
LNCLI="${config.nix-bitcoin.pkgs.clightning}/bin/lightning-cli --lightning-dir=${config.services.clightning.dataDir}"
|
|
||||||
pay_tallycoin() {
|
|
||||||
NAME=$1
|
|
||||||
AMOUNT=$2
|
|
||||||
echo "Attempting to pay $AMOUNT sat to $NAME"
|
|
||||||
INVOICE=$(curl --socks5-hostname ${config.nix-bitcoin.torClientAddressWithPort} -d "satoshi_amount=$AMOUNT&payment_method=ln&id=$NAME&type=profile" -X POST https://api.tallyco.in/v1/payment/request/ | jq -r '.lightning_pay_request') 2> /dev/null
|
|
||||||
if [ -z "$INVOICE" ] || [ "$INVOICE" = "null" ]; then
|
|
||||||
echo "ERROR: did not get invoice from tallycoin"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
# Decode invoice and compare amount with requested amount
|
|
||||||
DECODED_AMOUNT=$($LNCLI decodepay "$INVOICE" | jq -r '.amount_msat' | head -c -8)
|
|
||||||
if [ -z "$DECODED_AMOUNT" ] || [ "$DECODED_AMOUNT" = "null" ]; then
|
|
||||||
echo "ERROR: did not get response from clightning"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
if [ $DECODED_AMOUNT -eq $AMOUNT ]; then
|
|
||||||
echo "Paying with invoice $INVOICE"
|
|
||||||
$LNCLI pay "$INVOICE"
|
|
||||||
else
|
|
||||||
echo "ERROR: requested amount and invoice amount do not match. $AMOUNT vs $DECODED_AMOUNT"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
${ builtins.foldl'
|
|
||||||
(x: receiver: x +
|
|
||||||
''
|
|
||||||
pay_tallycoin ${receiver} ${toString (builtins.getAttr receiver cfg.tallycoin)}
|
|
||||||
'')
|
|
||||||
""
|
|
||||||
(builtins.attrNames cfg.tallycoin)
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
inherit options;
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
services.clightning.enable = true;
|
|
||||||
|
|
||||||
systemd.services.recurring-donations = {
|
|
||||||
requires = [ "clightning.service" ];
|
|
||||||
after = [ "clightning.service" ];
|
|
||||||
path = with pkgs; [ nix-bitcoin.clightning curl jq ];
|
|
||||||
serviceConfig = nbLib.defaultHardening // {
|
|
||||||
ExecStart = "${pkgs.bash}/bin/bash ${recurring-donations-script}";
|
|
||||||
User = "recurring-donations";
|
|
||||||
Type = "oneshot";
|
|
||||||
} // nbLib.allowedIPAddresses cfg.enforceTor;
|
|
||||||
};
|
|
||||||
systemd.timers.recurring-donations = {
|
|
||||||
requires = [ "clightning.service" ];
|
|
||||||
after = [ "clightning.service" ];
|
|
||||||
timerConfig = {
|
|
||||||
Unit = "recurring-donations.service";
|
|
||||||
OnCalendar = cfg.interval;
|
|
||||||
RandomizedDelaySec = toString cfg.randomizedDelaySec;
|
|
||||||
};
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.recurring-donations = {
|
|
||||||
isSystemUser = true;
|
|
||||||
group = "recurring-donations";
|
|
||||||
extraGroups = [ config.services.clightning.group ];
|
|
||||||
};
|
|
||||||
users.groups.recurring-donations = {};
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user