minor improvements

- README: add matrix room

- examples/configuration.nix: explain why bitcoind is enabled by default

- btcpayserver: group lnd service settings

- clightning:
  Use public onion port only when the onion service is public

  This allows users to enable the onion service while announcing a
  non-onion public address.

- netns-isolation: move `readOnly` attr to the top

- tests: use mkDefault to allow for easier overriding

- tests/btcpayserver: test web server response
This commit is contained in:
Erik Arvstedt 2021-10-30 14:55:55 +02:00
parent 1da23cd933
commit aada35fc7b
No known key found for this signature in database
GPG Key ID: 33312B944DD97846
7 changed files with 21 additions and 16 deletions

View File

@ -101,6 +101,7 @@ Docs
Troubleshooting Troubleshooting
--- ---
If you are having problems with nix-bitcoin check the [FAQ](docs/faq.md) or submit an issue. If you are having problems with nix-bitcoin check the [FAQ](docs/faq.md) or submit an issue.\
There's also a `#nix-bitcoin` IRC channel on [libera](https://libera.chat). There's also a Matrix room at [#general:nixbitcoin.org](https://matrix.to/#/#general:nixbitcoin.org)
and a `#nix-bitcoin` IRC channel on [libera](https://libera.chat).\
We are always happy to help. We are always happy to help.

View File

@ -24,7 +24,7 @@
# modules by commenting out their respective line. # modules by commenting out their respective line.
### BITCOIND ### BITCOIND
# Bitcoind is enabled by default. # Bitcoind is enabled by default via secure-node.nix.
# #
# Set this option to enable pruning with a specified MiB value. # Set this option to enable pruning with a specified MiB value.
# clightning is compatible with pruning. See # clightning is compatible with pruning. See

View File

@ -119,17 +119,17 @@ in {
listenWhitelisted = true; listenWhitelisted = true;
}; };
services.clightning.enable = mkIf (cfg.btcpayserver.lightningBackend == "clightning") true; services.clightning.enable = mkIf (cfg.btcpayserver.lightningBackend == "clightning") true;
services.lnd.enable = mkIf (cfg.btcpayserver.lightningBackend == "lnd") true; services.lnd = mkIf (cfg.btcpayserver.lightningBackend == "lnd") {
enable = true;
macaroons.btcpayserver = {
inherit (cfg.btcpayserver) user;
permissions = ''{"entity":"info","action":"read"},{"entity":"onchain","action":"read"},{"entity":"offchain","action":"read"},{"entity":"address","action":"read"},{"entity":"message","action":"read"},{"entity":"peers","action":"read"},{"entity":"signer","action":"read"},{"entity":"invoices","action":"read"},{"entity":"invoices","action":"write"},{"entity":"address","action":"write"}'';
};
};
services.liquidd = mkIf cfg.btcpayserver.lbtc { services.liquidd = mkIf cfg.btcpayserver.lbtc {
enable = true; enable = true;
listenWhitelisted = true; listenWhitelisted = true;
}; };
services.lnd.macaroons.btcpayserver = mkIf (cfg.btcpayserver.lightningBackend == "lnd") {
inherit (cfg.btcpayserver) user;
permissions = ''{"entity":"info","action":"read"},{"entity":"onchain","action":"read"},{"entity":"offchain","action":"read"},{"entity":"address","action":"read"},{"entity":"message","action":"read"},{"entity":"peers","action":"read"},{"entity":"signer","action":"read"},{"entity":"invoices","action":"read"},{"entity":"invoices","action":"write"},{"entity":"address","action":"write"}'';
};
services.postgresql = { services.postgresql = {
enable = true; enable = true;
ensureDatabases = [ "btcpaydb" ]; ensureDatabases = [ "btcpaydb" ];

View File

@ -91,8 +91,10 @@ let
${cfg.extraConfig} ${cfg.extraConfig}
''; '';
# If the clightning onion service is enabled, use the onion port as the public port # If a public clightning onion service is enabled, use the onion port as the public port
publicPort = if config.nix-bitcoin.onionServices.clightning.enable or false then publicPort = if (config.nix-bitcoin.onionServices.clightning.enable or false)
&& config.nix-bitcoin.onionServices.clightning.public
then
(builtins.elemAt config.services.tor.relay.onionServices.clightning.map 0).port (builtins.elemAt config.services.tor.relay.onionServices.clightning.map 0).port
else else
cfg.port; cfg.port;

View File

@ -43,14 +43,14 @@ let
}; };
netns = mkOption { netns = mkOption {
default = netns;
readOnly = true; readOnly = true;
default = netns;
description = "Exposes netns parameters."; description = "Exposes netns parameters.";
}; };
bridgeIp = mkOption { bridgeIp = mkOption {
default = bridgeIp;
readOnly = true; readOnly = true;
default = bridgeIp;
description = "IP of the netns bridge interface."; description = "IP of the netns bridge interface.";
}; };
}; };

View File

@ -80,8 +80,8 @@ let
tests.btcpayserver = cfg.btcpayserver.enable; tests.btcpayserver = cfg.btcpayserver.enable;
services.btcpayserver = { services.btcpayserver = {
lightningBackend = "lnd"; lightningBackend = mkDefault "lnd";
lbtc = true; lbtc = mkDefault true;
}; };
# Needed to test macaroon creation # Needed to test macaroon creation
environment.systemPackages = mkIfTest "btcpayserver" (with pkgs; [ openssl xxd ]); environment.systemPackages = mkIfTest "btcpayserver" (with pkgs; [ openssl xxd ]);

View File

@ -201,6 +201,8 @@ def _():
f"-X GET https://{ip('lnd')}:8080/v1/getinfo | jq", f"-X GET https://{ip('lnd')}:8080/v1/getinfo | jq",
'"version"', '"version"',
) )
# Test web server response
assert_matches(f"curl -L {ip('btcpayserver')}:23000", "Welcome to your BTCPay Server")
@test("spark-wallet") @test("spark-wallet")
def _(): def _():