Merge fort-nix/nix-bitcoin#718: Update to Nixos 24.05
2a9489ec0btests/flake: check flake outputs for all systems (Erik Arvstedt)b7bce52da9examples: fix call to `start-bash-session.sh` (Erik Arvstedt)5d0907b064test/nixos-search: fix running `flake-info` in an offline environment (Erik Arvstedt)3cc6010658test/nixos-search/ci-test.sh: remove unneded setup step (Erik Arvstedt)22c1424552backups: fix for nixos 24.05 (Erik Arvstedt)69b3d5f1b3bitcoind: fix module warning (Erik Arvstedt)e8e5d8cf4cpython3Packages.joinmarket: update to nixos 24.05 (Erik Arvstedt)7f8563afecpython3Packages.pyln-proto: update to nixos 24.05 (Erik Arvstedt)5d463b1677treewide: remove `buildPythonPackageWithDepsCheck` (Erik Arvstedt)fc703c38c9treewide: remove obsolete `mdDoc` (Erik Arvstedt)83eb1de24bupdate to nixos 24.05 (Erik Arvstedt)7daab61431rtl: remove unused pkg arg (Erik Arvstedt) Pull request description: ACKs for top commit: jonasnick: ACK2a9489ec0bTree-SHA512: 1e88d52b52050ea39c18570eb22b3b83471ebbf30d7ba77f212947ffaaf80ebb851782aa6a5e42752bdfb0db00fa31d5fb9cebb7f42a50145acfeeef1c1aa934
This commit is contained in:
commit
1c6e35e152
61 changed files with 402 additions and 357 deletions
|
|
@ -9,7 +9,7 @@ task:
|
|||
|
||||
container:
|
||||
# Defined in https://github.com/nix-community/docker-nixpkgs
|
||||
image: nixpkgs/nix-flakes:nixos-23.11
|
||||
image: nixpkgs/nix-flakes:nixos-24.05
|
||||
|
||||
matrix:
|
||||
- name: modules_test
|
||||
|
|
@ -34,7 +34,7 @@ task:
|
|||
|
||||
- name: flake
|
||||
build_script:
|
||||
- nix flake check
|
||||
- nix flake check --all-systems
|
||||
- ./test/nixos-search/ci-test.sh
|
||||
|
||||
- name: shellcheck
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@
|
|||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "23.11"; # Did you read the comment?
|
||||
system.stateVersion = "24.05"; # Did you read the comment?
|
||||
|
||||
# The nix-bitcoin release version that your config is compatible with.
|
||||
# When upgrading to a backwards-incompatible release, nix-bitcoin will display an
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ c nodeinfo
|
|||
|
||||
case ${1:-} in
|
||||
-i|--interactive)
|
||||
. start-bash-session.sh
|
||||
. ./start-bash-session.sh
|
||||
;;
|
||||
esac
|
||||
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ c nodeinfo
|
|||
|
||||
case ${1:-} in
|
||||
-i|--interactive)
|
||||
. start-bash-session.sh
|
||||
. ./start-bash-session.sh
|
||||
;;
|
||||
esac
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
inputs.nix-bitcoin.url = "github:fort-nix/nix-bitcoin/release";
|
||||
# You can also use a version branch to track a specific NixOS release
|
||||
# inputs.nix-bitcoin.url = "github:fort-nix/nix-bitcoin/nixos-23.11";
|
||||
# inputs.nix-bitcoin.url = "github:fort-nix/nix-bitcoin/nixos-24.05";
|
||||
|
||||
inputs.nixpkgs.follows = "nix-bitcoin/nixpkgs";
|
||||
inputs.nixpkgs-unstable.follows = "nix-bitcoin/nixpkgs-unstable";
|
||||
|
|
|
|||
14
flake.lock
generated
14
flake.lock
generated
|
|
@ -43,27 +43,27 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1719957072,
|
||||
"narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=",
|
||||
"lastModified": 1721226092,
|
||||
"narHash": "sha256-UBvzVpo5sXSi2S/Av+t+Q+C2mhMIw/LBEZR+d6NMjws=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7144d6241f02d171d25fba3edeaf15e0f2592105",
|
||||
"rev": "c716603a63aca44f39bef1986c13402167450e0a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-23.11",
|
||||
"ref": "nixos-24.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1720027103,
|
||||
"narHash": "sha256-Q92DHQjIvaMLpawMdXnbKQjCkzAWqjhjWJYS5RcKujY=",
|
||||
"lastModified": 1721209527,
|
||||
"narHash": "sha256-UvhjON7sx/ALhJJPMSoUSJ4pvMGvHqvjEOX/AA7AjjM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "61684d356e41c97f80087e89659283d00fe032ab",
|
||||
"rev": "5e73714b16ca222dcb2fc3ea2618fd7ba698da65",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
'';
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
|
||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
extra-container = {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Enable backups of node data.
|
||||
This uses the NixOS duplicity service.
|
||||
To further configure the backup, you can set NixOS options `services.duplicity.*`.
|
||||
|
|
@ -16,34 +16,34 @@ let
|
|||
with-bulk-data = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Whether to also backup Bitcoin blockchain and other bulk data.
|
||||
'';
|
||||
};
|
||||
destination = mkOption {
|
||||
type = types.str;
|
||||
default = "file:///var/lib/localBackups";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Where to back up to.
|
||||
'';
|
||||
};
|
||||
frequency = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Run backup with the given frequency. If null, do not run automatically.
|
||||
'';
|
||||
};
|
||||
postgresqlDatabases = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = mdDoc "List of database names to backup.";
|
||||
description = "List of database names to backup.";
|
||||
};
|
||||
extraFiles = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = [ "/var/lib/nginx" ];
|
||||
description = mdDoc "Additional files to be appended to filelist.";
|
||||
description = "Additional files to be appended to filelist.";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -52,7 +52,7 @@ let
|
|||
# Potential backup file paths are matched against filelist
|
||||
# entries from top to bottom.
|
||||
# The first match determines inclusion or exclusion.
|
||||
filelist = builtins.toFile "filelist.txt" ''
|
||||
includeFileList = builtins.toFile "filelist.txt" ''
|
||||
${builtins.concatStringsSep "\n" cfg.extraFiles}
|
||||
|
||||
${optionalString (!cfg.with-bulk-data) ''
|
||||
|
|
@ -95,9 +95,7 @@ in {
|
|||
|
||||
services.duplicity = {
|
||||
enable = true;
|
||||
extraFlags = [
|
||||
"--include-filelist" "${filelist}"
|
||||
];
|
||||
inherit includeFileList;
|
||||
fullIfOlderThan = mkDefault "1M";
|
||||
targetUrl = cfg.destination;
|
||||
frequency = cfg.frequency;
|
||||
|
|
|
|||
|
|
@ -8,20 +8,20 @@ let
|
|||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen for peer connections.";
|
||||
description = "Address to listen for peer connections.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = if !cfg.regtest then 8333 else 18444;
|
||||
defaultText = "if !cfg.regtest then 8333 else 18444";
|
||||
description = mdDoc "Port to listen for peer connections.";
|
||||
description = "Port to listen for peer connections.";
|
||||
};
|
||||
onionPort = mkOption {
|
||||
type = types.nullOr types.port;
|
||||
# When the bitcoind onion service is enabled, add an onion-tagged socket
|
||||
# to distinguish local connections from Tor connections
|
||||
default = if (config.nix-bitcoin.onionServices.bitcoind.enable or false) then 8334 else null;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Port to listen for Tor peer connections.
|
||||
If set, inbound connections to this port are tagged as onion peers.
|
||||
'';
|
||||
|
|
@ -29,7 +29,7 @@ let
|
|||
listen = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Listen for peer connections at `address:port`
|
||||
and `address:onionPort` (if {option}`onionPort` is set).
|
||||
'';
|
||||
|
|
@ -37,7 +37,7 @@ let
|
|||
listenWhitelisted = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Listen for peer connections at `address:whitelistedPort`.
|
||||
Peers connected through this socket are automatically whitelisted.
|
||||
'';
|
||||
|
|
@ -45,12 +45,12 @@ let
|
|||
whitelistedPort = mkOption {
|
||||
type = types.port;
|
||||
default = 8335;
|
||||
description = mdDoc "See `listenWhitelisted`.";
|
||||
description = "See `listenWhitelisted`.";
|
||||
};
|
||||
getPublicAddressCmd = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Bash expression which outputs the public service address to announce to peers.
|
||||
If left empty, no address is announced.
|
||||
'';
|
||||
|
|
@ -59,7 +59,7 @@ let
|
|||
type = types.package;
|
||||
default = config.nix-bitcoin.pkgs.bitcoind;
|
||||
defaultText = "config.nix-bitcoin.pkgs.bitcoind";
|
||||
description = mdDoc "The package providing bitcoin binaries.";
|
||||
description = "The package providing bitcoin binaries.";
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
|
|
@ -68,18 +68,18 @@ let
|
|||
par=16
|
||||
logips=1
|
||||
'';
|
||||
description = mdDoc "Extra lines appended to {file}`bitcoin.conf`.";
|
||||
description = "Extra lines appended to {file}`bitcoin.conf`.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/bitcoind";
|
||||
description = mdDoc "The data directory for bitcoind.";
|
||||
description = "The data directory for bitcoind.";
|
||||
};
|
||||
rpc = {
|
||||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Address to listen for JSON-RPC connections.
|
||||
'';
|
||||
};
|
||||
|
|
@ -87,23 +87,23 @@ let
|
|||
type = types.port;
|
||||
default = if !cfg.regtest then 8332 else 18443;
|
||||
defaultText = "if !cfg.regtest then 8332 else 18443";
|
||||
description = mdDoc "Port to listen for JSON-RPC connections.";
|
||||
description = "Port to listen for JSON-RPC connections.";
|
||||
};
|
||||
threads = mkOption {
|
||||
type = types.nullOr types.ints.u16;
|
||||
default = null;
|
||||
description = mdDoc "The number of threads to service RPC calls.";
|
||||
description = "The number of threads to service RPC calls.";
|
||||
};
|
||||
allowip = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ "127.0.0.1" ];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Allow JSON-RPC connections from specified sources.
|
||||
'';
|
||||
};
|
||||
users = mkOption {
|
||||
default = {};
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Allowed users for JSON-RPC connections.
|
||||
'';
|
||||
example = {
|
||||
|
|
@ -118,14 +118,14 @@ let
|
|||
type = types.str;
|
||||
default = name;
|
||||
example = "alice";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Username for JSON-RPC connections.
|
||||
'';
|
||||
};
|
||||
passwordHMAC = mkOption {
|
||||
type = types.str;
|
||||
example = "f7efda5c189b999524f151318c0c86$d5b51b3beffbc02b724e5d095828e0bc8b2456e9ac8757ae3211a5d9b16a22ae";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Password HMAC-SHA-256 for JSON-RPC connections. Must be a string of the
|
||||
format `<SALT-HEX>$<HMAC-HEX>`.
|
||||
'';
|
||||
|
|
@ -138,7 +138,7 @@ let
|
|||
rpcwhitelist = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
List of allowed rpc calls for each user.
|
||||
If empty list, rpcwhitelist is disabled for that user.
|
||||
'';
|
||||
|
|
@ -150,7 +150,7 @@ let
|
|||
regtest = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc "Enable regtest mode.";
|
||||
description = "Enable regtest mode.";
|
||||
};
|
||||
network = mkOption {
|
||||
readOnly = true;
|
||||
|
|
@ -163,12 +163,12 @@ let
|
|||
proxy = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = if cfg.tor.proxy then config.nix-bitcoin.torClientAddressWithPort else null;
|
||||
description = mdDoc "Connect through SOCKS5 proxy";
|
||||
description = "Connect through SOCKS5 proxy";
|
||||
};
|
||||
i2p = mkOption {
|
||||
type = types.enum [ false true "only-outgoing" ];
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Enable peer connections via i2p.
|
||||
With `only-outgoing`, incoming i2p connections are disabled.
|
||||
'';
|
||||
|
|
@ -176,7 +176,7 @@ let
|
|||
dataDirReadableByGroup = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
If enabled, data dir content is readable by the bitcoind service group.
|
||||
Warning: This disables bitcoind's wallet support.
|
||||
'';
|
||||
|
|
@ -184,7 +184,7 @@ let
|
|||
sysperms = mkOption {
|
||||
type = types.nullOr types.bool;
|
||||
default = null;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Create new files with system default permissions, instead of umask 077
|
||||
(only effective with disabled wallet functionality)
|
||||
'';
|
||||
|
|
@ -192,7 +192,7 @@ let
|
|||
disablewallet = mkOption {
|
||||
type = types.nullOr types.bool;
|
||||
default = null;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Do not load the wallet and disable wallet RPC calls
|
||||
'';
|
||||
};
|
||||
|
|
@ -200,13 +200,13 @@ let
|
|||
type = types.nullOr (types.ints.between 4 16384);
|
||||
default = null;
|
||||
example = 4000;
|
||||
description = mdDoc "Override the default database cache size in MiB.";
|
||||
description = "Override the default database cache size in MiB.";
|
||||
};
|
||||
prune = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
default = 0;
|
||||
example = 10000;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Automatically prune block files to stay under the specified target size in MiB.
|
||||
Value 0 disables pruning.
|
||||
'';
|
||||
|
|
@ -214,25 +214,25 @@ let
|
|||
txindex = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc "Enable the transaction index.";
|
||||
description = "Enable the transaction index.";
|
||||
};
|
||||
zmqpubrawblock = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "tcp://127.0.0.1:28332";
|
||||
description = mdDoc "ZMQ address for zmqpubrawblock notifications";
|
||||
description = "ZMQ address for zmqpubrawblock notifications";
|
||||
};
|
||||
zmqpubrawtx = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "tcp://127.0.0.1:28333";
|
||||
description = mdDoc "ZMQ address for zmqpubrawtx notifications";
|
||||
description = "ZMQ address for zmqpubrawtx notifications";
|
||||
};
|
||||
assumevalid = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "00000000000000000000e5abc3a74fe27dc0ead9c70ea1deb456f11c15fd7bc6";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
If this block is in the chain assume that it and its ancestors are
|
||||
valid and potentially skip their script verification.
|
||||
'';
|
||||
|
|
@ -241,28 +241,28 @@ let
|
|||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = [ "ecoc5q34tmbq54wl.onion" ];
|
||||
description = mdDoc "Add nodes to connect to and attempt to keep the connections open";
|
||||
description = "Add nodes to connect to and attempt to keep the connections open";
|
||||
};
|
||||
discover = mkOption {
|
||||
type = types.nullOr types.bool;
|
||||
default = null;
|
||||
description = mdDoc "Discover own IP addresses";
|
||||
description = "Discover own IP addresses";
|
||||
};
|
||||
addresstype = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "bech32";
|
||||
description = mdDoc "The type of addresses to use";
|
||||
description = "The type of addresses to use";
|
||||
};
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "bitcoin";
|
||||
description = mdDoc "The user as which to run bitcoind.";
|
||||
description = "The user as which to run bitcoind.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = mdDoc "The group as which to run bitcoind.";
|
||||
description = "The group as which to run bitcoind.";
|
||||
};
|
||||
cli = mkOption {
|
||||
readOnly = true;
|
||||
|
|
@ -271,7 +271,7 @@ let
|
|||
exec ${cfg.package}/bin/bitcoin-cli -datadir='${cfg.dataDir}' "$@"
|
||||
'';
|
||||
defaultText = "(See source)";
|
||||
description = mdDoc "Binary to connect with the bitcoind instance.";
|
||||
description = "Binary to connect with the bitcoind instance.";
|
||||
};
|
||||
tor = nbLib.tor;
|
||||
};
|
||||
|
|
@ -373,16 +373,20 @@ in {
|
|||
"d '${cfg.dataDir}' 0770 ${cfg.user} ${cfg.group} - -"
|
||||
];
|
||||
|
||||
systemd.services.bitcoind = {
|
||||
# Use `wants` instead of `requires` so that bitcoind and all dependent services
|
||||
# are not restarted when the secrets target restarts.
|
||||
# The secrets target always restarts when deploying with one of the methods
|
||||
# in ./deployment.
|
||||
#
|
||||
# TODO-EXTERNAL: Instead of `wants`, use a future systemd dependency type
|
||||
# that propagates initial start failures but no restarts
|
||||
wants = [ "nix-bitcoin-secrets.target" ];
|
||||
after = [ "network-online.target" "nix-bitcoin-secrets.target" ];
|
||||
systemd.services.bitcoind = rec {
|
||||
wants = [
|
||||
"network-online.target"
|
||||
# Use `wants` instead of `requires` for `nix-bitcoin-secrets.target`
|
||||
# so that bitcoind and all dependent services are not restarted when
|
||||
# the secrets target restarts.
|
||||
# The secrets target always restarts when deploying with one of the methods
|
||||
# in ./deployment.
|
||||
#
|
||||
# TODO-EXTERNAL: Instead of `wants`, use a future systemd dependency type
|
||||
# that propagates initial start failures but no restarts
|
||||
"nix-bitcoin-secrets.target"
|
||||
];
|
||||
after = wants;
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
preStart = let
|
||||
|
|
|
|||
|
|
@ -8,12 +8,12 @@ let
|
|||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen on.";
|
||||
description = "Address to listen on.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 23000;
|
||||
description = mdDoc "Port to listen on.";
|
||||
description = "Port to listen on.";
|
||||
};
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
|
|
@ -22,38 +22,38 @@ let
|
|||
else
|
||||
config.nix-bitcoin.pkgs.btcpayserver;
|
||||
defaultText = "(See source)";
|
||||
description = mdDoc "The package providing btcpayserver binaries.";
|
||||
description = "The package providing btcpayserver binaries.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/btcpayserver";
|
||||
description = mdDoc "The data directory for btcpayserver.";
|
||||
description = "The data directory for btcpayserver.";
|
||||
};
|
||||
lightningBackend = mkOption {
|
||||
type = types.nullOr (types.enum [ "clightning" "lnd" ]);
|
||||
default = null;
|
||||
description = mdDoc "The lightning node implementation to use.";
|
||||
description = "The lightning node implementation to use.";
|
||||
};
|
||||
lbtc = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc "Enable liquid support in btcpayserver.";
|
||||
description = "Enable liquid support in btcpayserver.";
|
||||
};
|
||||
rootpath = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "btcpayserver";
|
||||
description = mdDoc "The prefix for root-relative btcpayserver URLs.";
|
||||
description = "The prefix for root-relative btcpayserver URLs.";
|
||||
};
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "btcpayserver";
|
||||
description = mdDoc "The user as which to run btcpayserver.";
|
||||
description = "The user as which to run btcpayserver.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.btcpayserver.user;
|
||||
description = mdDoc "The group as which to run btcpayserver.";
|
||||
description = "The group as which to run btcpayserver.";
|
||||
};
|
||||
tor.enforce = nbLib.tor.enforce;
|
||||
};
|
||||
|
|
@ -63,7 +63,7 @@ let
|
|||
# This option is only used by netns-isolation
|
||||
internal = true;
|
||||
default = cfg.btcpayserver.enable;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
nbxplorer is always enabled when btcpayserver is enabled.
|
||||
'';
|
||||
};
|
||||
|
|
@ -71,32 +71,32 @@ let
|
|||
type = types.package;
|
||||
default = config.nix-bitcoin.pkgs.nbxplorer;
|
||||
defaultText = "config.nix-bitcoin.pkgs.nbxplorer";
|
||||
description = mdDoc "The package providing nbxplorer binaries.";
|
||||
description = "The package providing nbxplorer binaries.";
|
||||
};
|
||||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen on.";
|
||||
description = "Address to listen on.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 24444;
|
||||
description = mdDoc "Port to listen on.";
|
||||
description = "Port to listen on.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/nbxplorer";
|
||||
description = mdDoc "The data directory for nbxplorer.";
|
||||
description = "The data directory for nbxplorer.";
|
||||
};
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "nbxplorer";
|
||||
description = mdDoc "The user as which to run nbxplorer.";
|
||||
description = "The user as which to run nbxplorer.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.nbxplorer.user;
|
||||
description = mdDoc "The group as which to run nbxplorer.";
|
||||
description = "The group as which to run nbxplorer.";
|
||||
};
|
||||
tor.enforce = nbLib.tor.enforce;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -9,14 +9,14 @@ let
|
|||
type = listOf str;
|
||||
default = [];
|
||||
example = [ "--verbose" "--dry-run" ];
|
||||
description = mdDoc "Extra flags to pass to the charge-lnd command.";
|
||||
description = "Extra flags to pass to the charge-lnd command.";
|
||||
};
|
||||
|
||||
interval = mkOption {
|
||||
type = str;
|
||||
default = "*-*-* 04:00:00";
|
||||
example = "hourly";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Systemd calendar expression when to adjust fees.
|
||||
|
||||
See {man}`systemd.time(7)` for possible values.
|
||||
|
|
@ -28,7 +28,7 @@ let
|
|||
randomDelay = mkOption {
|
||||
type = str;
|
||||
default = "1h";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Random delay to add to scheduled time.
|
||||
'';
|
||||
};
|
||||
|
|
@ -54,7 +54,7 @@ let
|
|||
[default]
|
||||
strategy = ignore
|
||||
'';
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Policy definitions in INI format.
|
||||
|
||||
See https://github.com/accumulator/charge-lnd/blob/master/README.md#usage
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ let cfg = config.services.clightning.plugins.clboss; in
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Whether to enable CLBOSS (clightning plugin).
|
||||
See also: https://github.com/ZmnSCPxj/clboss#operating
|
||||
'';
|
||||
|
|
@ -15,7 +15,7 @@ let cfg = config.services.clightning.plugins.clboss; in
|
|||
min-onchain = mkOption {
|
||||
type = types.ints.positive;
|
||||
default = 30000;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Target amount (in satoshi) that CLBOSS will leave on-chain.
|
||||
clboss will only open new channels if the funds in your clightning wallet are
|
||||
larger than this amount.
|
||||
|
|
@ -24,17 +24,17 @@ let cfg = config.services.clightning.plugins.clboss; in
|
|||
min-channel = mkOption {
|
||||
type = types.ints.positive;
|
||||
default = 500000;
|
||||
description = mdDoc "The minimum size (in satoshi) of channels created by CLBOSS.";
|
||||
description = "The minimum size (in satoshi) of channels created by CLBOSS.";
|
||||
};
|
||||
max-channel = mkOption {
|
||||
type = types.ints.positive;
|
||||
default = 16777215;
|
||||
description = mdDoc "The maximum size (in satoshi) of channels created by CLBOSS.";
|
||||
description = "The maximum size (in satoshi) of channels created by CLBOSS.";
|
||||
};
|
||||
zerobasefee = mkOption {
|
||||
type = types.enum [ "require" "allow" "disallow" ];
|
||||
default = "allow";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
`require`: set `base_fee` to 0.
|
||||
`allow`: set `base_fee` according to the CLBOSS heuristics, which may include value 0.
|
||||
`disallow`: set `base_fee` to according to the CLBOSS heuristics, with a minimum value of 1.
|
||||
|
|
@ -44,7 +44,7 @@ let cfg = config.services.clightning.plugins.clboss; in
|
|||
type = types.package;
|
||||
default = config.nix-bitcoin.pkgs.clboss;
|
||||
defaultText = "config.nix-bitcoin.pkgs.clboss";
|
||||
description = mdDoc "The package providing clboss binaries.";
|
||||
description = "The package providing clboss binaries.";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Enable feeaduster (clightning plugin).
|
||||
This plugin auto-updates channel fees to keep channels balanced.
|
||||
|
||||
|
|
@ -18,17 +18,17 @@ let
|
|||
fuzz = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = mdDoc "Enable update threshold randomization and hysteresis.";
|
||||
description = "Enable update threshold randomization and hysteresis.";
|
||||
};
|
||||
adjustOnForward = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc "Automatically update fees on forward events.";
|
||||
description = "Automatically update fees on forward events.";
|
||||
};
|
||||
method = mkOption {
|
||||
type = types.enum [ "soft" "default" "hard" ];
|
||||
default = "default";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Adjustment method to calculate channel fees.
|
||||
`soft`: less difference when adjusting fees.
|
||||
`hard`: greater difference when adjusting fees.
|
||||
|
|
@ -37,7 +37,7 @@ let
|
|||
adjustDaily = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = mdDoc "Automatically update fees daily.";
|
||||
description = "Automatically update fees daily.";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -10,13 +10,13 @@ let cfg = config.services.clightning.plugins.trustedcoin; in
|
|||
type = types.package;
|
||||
default = config.nix-bitcoin.pkgs.trustedcoin;
|
||||
defaultText = "config.nix-bitcoin.pkgs.trustedcoin";
|
||||
description = mdDoc "The package providing trustedcoin binaries.";
|
||||
description = "The package providing trustedcoin binaries.";
|
||||
};
|
||||
|
||||
tor.proxy = mkOption {
|
||||
type = types.bool;
|
||||
default = config.services.clightning.tor.proxy;
|
||||
description = mdDoc "Whether to proxy outgoing connections with Tor.";
|
||||
description = "Whether to proxy outgoing connections with Tor.";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ let
|
|||
mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = mdDoc "Endpoint for ${name}";
|
||||
description = "Endpoint for ${name}";
|
||||
};
|
||||
|
||||
setEndpoint = ep:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Enable live replication of the clightning database.
|
||||
This prevents losing off-chain funds when the primary wallet file becomes
|
||||
inaccessible.
|
||||
|
|
@ -26,7 +26,7 @@ let
|
|||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "user@10.0.0.1:directory";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The SSH destination for which a SSHFS will be mounted.
|
||||
`directory` is relative to the home of `user`.
|
||||
|
||||
|
|
@ -40,12 +40,12 @@ let
|
|||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 22;
|
||||
description = mdDoc "SSH port of the remote server.";
|
||||
description = "SSH port of the remote server.";
|
||||
};
|
||||
sshOptions = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [ "reconnect" "ServerAliveInterval=50" ];
|
||||
description = mdDoc "SSH options used for mounting the SSHFS.";
|
||||
description = "SSH options used for mounting the SSHFS.";
|
||||
};
|
||||
};
|
||||
local = {
|
||||
|
|
@ -53,7 +53,7 @@ let
|
|||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
example = "/var/backup/clightning";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
This option can be specified instead of `sshfs.destination` to enable
|
||||
replication to a local directory.
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ let
|
|||
setupDirectory = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Create `local.directory` if it doesn't exist and set write permissions
|
||||
for the `clightning` user.
|
||||
'';
|
||||
|
|
@ -78,7 +78,7 @@ let
|
|||
encrypt = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Whether to encrypt the replicated database with gocryptfs.
|
||||
The encryption password is automatically generated and stored
|
||||
in file {file}`$secretsDir/clightning-replication-password`.
|
||||
|
|
|
|||
|
|
@ -7,17 +7,17 @@ let
|
|||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 3001;
|
||||
description = mdDoc "REST server port.";
|
||||
description = "REST server port.";
|
||||
};
|
||||
docPort = mkOption {
|
||||
type = types.port;
|
||||
default = 4001;
|
||||
description = mdDoc "Swagger API documentation server port.";
|
||||
description = "Swagger API documentation server port.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/clightning-rest";
|
||||
description = mdDoc "The data directory for clightning-rest.";
|
||||
description = "The data directory for clightning-rest.";
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = types.attrs;
|
||||
|
|
@ -25,7 +25,7 @@ let
|
|||
example = {
|
||||
DOMAIN = "mynode.org";
|
||||
};
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra config options.
|
||||
See: https://github.com/Ride-The-Lightning/c-lightning-REST#option-1-via-config-file-cl-rest-configjson
|
||||
'';
|
||||
|
|
@ -34,7 +34,7 @@ let
|
|||
group = mkOption {
|
||||
readOnly = true;
|
||||
default = clightning.group;
|
||||
description = mdDoc "The group under which clightning-rest is run.";
|
||||
description = "The group under which clightning-rest is run.";
|
||||
};
|
||||
# Rest server address.
|
||||
# Not configurable. The server always listens on all interfaces:
|
||||
|
|
|
|||
|
|
@ -7,24 +7,24 @@ let
|
|||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen for peer connections.";
|
||||
description = "Address to listen for peer connections.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 9735;
|
||||
description = mdDoc "Port to listen for peer connections.";
|
||||
description = "Port to listen for peer connections.";
|
||||
};
|
||||
proxy = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = if cfg.tor.proxy then config.nix-bitcoin.torClientAddressWithPort else null;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Socks proxy for connecting to Tor nodes (or for all connections if option always-use-proxy is set).
|
||||
'';
|
||||
};
|
||||
always-use-proxy = mkOption {
|
||||
type = types.bool;
|
||||
default = cfg.tor.proxy;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Always use the proxy, even to connect to normal IP addresses.
|
||||
You can still connect to Unix domain sockets manually.
|
||||
This also disables all DNS lookups, to avoid leaking address information.
|
||||
|
|
@ -33,18 +33,18 @@ let
|
|||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/clightning";
|
||||
description = mdDoc "The data directory for clightning.";
|
||||
description = "The data directory for clightning.";
|
||||
};
|
||||
networkDir = mkOption {
|
||||
readOnly = true;
|
||||
default = "${cfg.dataDir}/${network}";
|
||||
description = mdDoc "The network data directory.";
|
||||
description = "The network data directory.";
|
||||
};
|
||||
wallet = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "sqlite3:///var/lib/clightning/bitcoin/lightningd.sqlite3";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Wallet data scheme (sqlite3 or postgres) and location/connection
|
||||
parameters, as fully qualified data source name.
|
||||
'';
|
||||
|
|
@ -64,7 +64,7 @@ let
|
|||
example = ''
|
||||
alias=mynode
|
||||
'';
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra lines appended to the configuration file.
|
||||
|
||||
See all available options at
|
||||
|
|
@ -75,18 +75,18 @@ let
|
|||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "clightning";
|
||||
description = mdDoc "The user as which to run clightning.";
|
||||
description = "The user as which to run clightning.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = mdDoc "The group as which to run clightning.";
|
||||
description = "The group as which to run clightning.";
|
||||
};
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = nbPkgs.clightning;
|
||||
defaultText = "config.nix-bitcoin.pkgs.clightning";
|
||||
description = mdDoc "The package providing clightning binaries.";
|
||||
description = "The package providing clightning binaries.";
|
||||
};
|
||||
cli = mkOption {
|
||||
readOnly = true;
|
||||
|
|
@ -94,12 +94,12 @@ let
|
|||
${cfg.package}/bin/lightning-cli --lightning-dir='${cfg.dataDir}' "$@"
|
||||
'';
|
||||
defaultText = "(See source)";
|
||||
description = mdDoc "Binary to connect with the clightning instance.";
|
||||
description = "Binary to connect with the clightning instance.";
|
||||
};
|
||||
getPublicAddressCmd = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Bash expression which outputs the public service address to announce to peers.
|
||||
If left empty, no address is announced.
|
||||
'';
|
||||
|
|
|
|||
|
|
@ -7,37 +7,37 @@ let
|
|||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen for RPC connections.";
|
||||
description = "Address to listen for RPC connections.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 50001;
|
||||
description = mdDoc "Port to listen for RPC connections.";
|
||||
description = "Port to listen for RPC connections.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/electrs";
|
||||
description = mdDoc "The data directory for electrs.";
|
||||
description = "The data directory for electrs.";
|
||||
};
|
||||
monitoringPort = mkOption {
|
||||
type = types.port;
|
||||
default = 4224;
|
||||
description = mdDoc "Prometheus monitoring port.";
|
||||
description = "Prometheus monitoring port.";
|
||||
};
|
||||
extraArgs = mkOption {
|
||||
type = types.separatedString " ";
|
||||
default = "";
|
||||
description = mdDoc "Extra command line arguments passed to electrs.";
|
||||
description = "Extra command line arguments passed to electrs.";
|
||||
};
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "electrs";
|
||||
description = mdDoc "The user as which to run electrs.";
|
||||
description = "The user as which to run electrs.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = mdDoc "The group as which to run electrs.";
|
||||
description = "The group as which to run electrs.";
|
||||
};
|
||||
tor.enforce = nbLib.tor.enforce;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Enable fulcrum, an Electrum server implemented in C++.
|
||||
|
||||
Compared to electrs, fulcrum has a 3x larger database size but
|
||||
|
|
@ -23,17 +23,17 @@ let
|
|||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen for RPC connections.";
|
||||
description = "Address to listen for RPC connections.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 50001;
|
||||
description = mdDoc "Port to listen for RPC connections.";
|
||||
description = "Port to listen for RPC connections.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/fulcrum";
|
||||
description = mdDoc "The data directory for fulcrum.";
|
||||
description = "The data directory for fulcrum.";
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
|
|
@ -41,7 +41,7 @@ let
|
|||
example = ''
|
||||
peering = true
|
||||
'';
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra lines appended to the configuration file.
|
||||
|
||||
See all available options at
|
||||
|
|
@ -51,12 +51,12 @@ let
|
|||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "fulcrum";
|
||||
description = mdDoc "The user as which to run fulcrum.";
|
||||
description = "The user as which to run fulcrum.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = mdDoc "The group as which to run fulcrum.";
|
||||
description = "The group as which to run fulcrum.";
|
||||
};
|
||||
tor.enforce = nbLib.tor.enforce;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,21 +6,21 @@ let
|
|||
ledger = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
If enabled, the ledger udev rules will be installed.
|
||||
'';
|
||||
};
|
||||
trezor = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
If enabled, the trezor udev rules will be installed.
|
||||
'';
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "hardware-wallets";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Group the hardware wallet udev rules apply to.
|
||||
'';
|
||||
};
|
||||
|
|
|
|||
|
|
@ -7,27 +7,27 @@ let
|
|||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "HTTP server address.";
|
||||
description = "HTTP server address.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 62601;
|
||||
description = mdDoc "HTTP server port.";
|
||||
description = "HTTP server port.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
readOnly = true;
|
||||
default = "/var/lib/joinmarket-ob-watcher";
|
||||
description = mdDoc "The data directory for JoinMarket orderbook watcher.";
|
||||
description = "The data directory for JoinMarket orderbook watcher.";
|
||||
};
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "joinmarket-ob-watcher";
|
||||
description = mdDoc "The user as which to run JoinMarket.";
|
||||
description = "The user as which to run JoinMarket.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = mdDoc "The group as which to run JoinMarket.";
|
||||
description = "The group as which to run JoinMarket.";
|
||||
};
|
||||
# This option is only used by netns-isolation.
|
||||
# Tor is always enabled.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ let
|
|||
payjoinAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The address where payjoin onion connections are forwarded to.
|
||||
This address is never used directly, it only serves as the internal endpoint
|
||||
for the payjoin onion service.
|
||||
|
|
@ -18,12 +18,12 @@ let
|
|||
payjoinPort = mkOption {
|
||||
type = types.port;
|
||||
default = 64180; # A random private port
|
||||
description = mdDoc "The port corresponding to option {option}`payjoinAddress`.";
|
||||
description = "The port corresponding to option {option}`payjoinAddress`.";
|
||||
};
|
||||
messagingAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The address where messaging onion connections are forwarded to.
|
||||
This address is never used directly, it only serves as the internal endpoint
|
||||
for the messaging onion service.
|
||||
|
|
@ -33,29 +33,29 @@ let
|
|||
messagingPort = mkOption {
|
||||
type = types.port;
|
||||
default = 64181; # payjoinPort + 1
|
||||
description = mdDoc "The port corresponding to option {option}`messagingAddress`.";
|
||||
description = "The port corresponding to option {option}`messagingAddress`.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/joinmarket";
|
||||
description = mdDoc "The data directory for JoinMarket.";
|
||||
description = "The data directory for JoinMarket.";
|
||||
};
|
||||
rpcWalletFile = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = "jm_wallet";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Name of the watch-only bitcoind wallet the JoinMarket addresses are imported to.
|
||||
'';
|
||||
};
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "joinmarket";
|
||||
description = mdDoc "The user as which to run JoinMarket.";
|
||||
description = "The user as which to run JoinMarket.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = mdDoc "The group as which to run JoinMarket.";
|
||||
description = "The group as which to run JoinMarket.";
|
||||
};
|
||||
cli = mkOption {
|
||||
default = cli;
|
||||
|
|
@ -77,56 +77,56 @@ let
|
|||
ordertype = mkOption {
|
||||
type = types.enum [ "reloffer" "absoffer" ];
|
||||
default = "reloffer";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Which fee type to actually use.
|
||||
'';
|
||||
};
|
||||
cjfee_a = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
default = 500;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Absolute offer fee you wish to receive for coinjoins (cj) in Satoshis.
|
||||
'';
|
||||
};
|
||||
cjfee_r = mkOption {
|
||||
type = types.float;
|
||||
default = 0.00002;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Relative offer fee you wish to receive based on a cj's amount.
|
||||
'';
|
||||
};
|
||||
cjfee_factor = mkOption {
|
||||
type = types.float;
|
||||
default = 0.1;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Variance around the average cj fee.
|
||||
'';
|
||||
};
|
||||
txfee = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
default = 100;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The average transaction fee you're adding to coinjoin transactions.
|
||||
'';
|
||||
};
|
||||
txfee_contribution_factor = mkOption {
|
||||
type = types.float;
|
||||
default = 0.3;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Variance around the average tx fee.
|
||||
'';
|
||||
};
|
||||
minsize = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
default = 100000;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Minimum size of your cj offer in Satoshis. Lower cj amounts will be disregarded.
|
||||
'';
|
||||
};
|
||||
size_factor = mkOption {
|
||||
type = types.float;
|
||||
default = 0.1;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Variance around all offer sizes.
|
||||
'';
|
||||
};
|
||||
|
|
|
|||
|
|
@ -7,45 +7,45 @@ let
|
|||
rpcAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen for gRPC connections.";
|
||||
description = "Address to listen for gRPC connections.";
|
||||
};
|
||||
rpcPort = mkOption {
|
||||
type = types.port;
|
||||
default = 11010;
|
||||
description = mdDoc "Port to listen for gRPC connections.";
|
||||
description = "Port to listen for gRPC connections.";
|
||||
};
|
||||
restAddress = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.rpcAddress;
|
||||
description = mdDoc "Address to listen for REST connections.";
|
||||
description = "Address to listen for REST connections.";
|
||||
};
|
||||
restPort = mkOption {
|
||||
type = types.port;
|
||||
default = 8081;
|
||||
description = mdDoc "Port to listen for REST connections.";
|
||||
description = "Port to listen for REST connections.";
|
||||
};
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = config.nix-bitcoin.pkgs.lightning-loop;
|
||||
defaultText = "config.nix-bitcoin.pkgs.lightning-loop";
|
||||
description = mdDoc "The package providing lightning-loop binaries.";
|
||||
description = "The package providing lightning-loop binaries.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/lightning-loop";
|
||||
description = mdDoc "The data directory for lightning-loop.";
|
||||
description = "The data directory for lightning-loop.";
|
||||
};
|
||||
proxy = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = if cfg.tor.proxy then config.nix-bitcoin.torClientAddressWithPort else null;
|
||||
description = mdDoc "`host:port` of SOCKS5 proxy for connnecting to the loop server.";
|
||||
description = "`host:port` of SOCKS5 proxy for connnecting to the loop server.";
|
||||
};
|
||||
certificate = {
|
||||
extraIPs = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [];
|
||||
example = [ "60.100.0.1" ];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra `subjectAltName` IPs added to the certificate.
|
||||
This works the same as loop option {option}`tlsextraip`.
|
||||
'';
|
||||
|
|
@ -54,7 +54,7 @@ let
|
|||
type = with types; listOf str;
|
||||
default = [];
|
||||
example = [ "example.com" ];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra `subjectAltName` domain names added to the certificate.
|
||||
This works the same as loop option {option}`tlsextradomain`.
|
||||
'';
|
||||
|
|
@ -66,7 +66,7 @@ let
|
|||
example = ''
|
||||
debuglevel=trace
|
||||
'';
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra lines appended to the configuration file.
|
||||
See here for all available options:
|
||||
https://github.com/lightninglabs/loop/blob/11ab596080e9d36f1df43edbeba0702b25aa7457/loopd/config.go#L119
|
||||
|
|
@ -80,7 +80,7 @@ let
|
|||
--tlscertpath '${secretsDir}/loop-cert' "$@"
|
||||
'';
|
||||
defaultText = "(See source)";
|
||||
description = mdDoc "Binary to connect with the lightning-loop instance.";
|
||||
description = "Binary to connect with the lightning-loop instance.";
|
||||
};
|
||||
tor = nbLib.tor;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -7,38 +7,38 @@ let
|
|||
rpcAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen for gRPC connections.";
|
||||
description = "Address to listen for gRPC connections.";
|
||||
};
|
||||
rpcPort = mkOption {
|
||||
type = types.port;
|
||||
default = 12010;
|
||||
description = mdDoc "Port to listen for gRPC connections.";
|
||||
description = "Port to listen for gRPC connections.";
|
||||
};
|
||||
restAddress = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.rpcAddress;
|
||||
description = mdDoc "Address to listen for REST connections.";
|
||||
description = "Address to listen for REST connections.";
|
||||
};
|
||||
restPort = mkOption {
|
||||
type = types.port;
|
||||
default = 8281;
|
||||
description = mdDoc "Port to listen for REST connections.";
|
||||
description = "Port to listen for REST connections.";
|
||||
};
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = config.nix-bitcoin.pkgs.lightning-pool;
|
||||
defaultText = "config.nix-bitcoin.pkgs.lightning-pool";
|
||||
description = mdDoc "The package providing lightning-pool binaries.";
|
||||
description = "The package providing lightning-pool binaries.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/lightning-pool";
|
||||
description = mdDoc "The data directory for lightning-pool.";
|
||||
description = "The data directory for lightning-pool.";
|
||||
};
|
||||
proxy = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = if cfg.tor.proxy then config.nix-bitcoin.torClientAddressWithPort else null;
|
||||
description = mdDoc "host:port of SOCKS5 proxy for connnecting to the pool auction server.";
|
||||
description = "host:port of SOCKS5 proxy for connnecting to the pool auction server.";
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
|
|
@ -46,7 +46,7 @@ let
|
|||
example = ''
|
||||
debuglevel=trace
|
||||
'';
|
||||
description = mdDoc "Extra lines appended to the configuration file.";
|
||||
description = "Extra lines appended to the configuration file.";
|
||||
};
|
||||
cli = mkOption {
|
||||
default = pkgs.writers.writeBashBin "pool" ''
|
||||
|
|
@ -56,7 +56,7 @@ let
|
|||
--basedir '${cfg.dataDir}' "$@"
|
||||
'';
|
||||
defaultText = "(See source)";
|
||||
description = mdDoc "Binary to connect with the lightning-pool instance.";
|
||||
description = "Binary to connect with the lightning-pool instance.";
|
||||
};
|
||||
tor = nbLib.tor;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -8,19 +8,19 @@ let
|
|||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen for peer connections.";
|
||||
description = "Address to listen for peer connections.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 7042;
|
||||
description = mdDoc "Override the default port on which to listen for connections.";
|
||||
description = "Override the default port on which to listen for connections.";
|
||||
};
|
||||
onionPort = mkOption {
|
||||
type = types.nullOr types.port;
|
||||
# When the liquidd onion service is enabled, add an onion-tagged socket
|
||||
# to distinguish local connections from Tor connections
|
||||
default = if (config.nix-bitcoin.onionServices.liquidd.enable or false) then 7043 else null;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Port to listen for Tor peer connections.
|
||||
If set, inbound connections to this port are tagged as onion peers.
|
||||
'';
|
||||
|
|
@ -28,7 +28,7 @@ let
|
|||
listen = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Listen for peer connections at `address:port`
|
||||
and `address:onionPort` (if {option}`onionPort` is set).
|
||||
'';
|
||||
|
|
@ -36,7 +36,7 @@ let
|
|||
listenWhitelisted = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Listen for peer connections at `address:whitelistedPort`.
|
||||
Peers connected through this socket are automatically whitelisted.
|
||||
'';
|
||||
|
|
@ -44,7 +44,7 @@ let
|
|||
whitelistedPort = mkOption {
|
||||
type = types.port;
|
||||
default = 7044;
|
||||
description = mdDoc "See {option}`listenWhitelisted`.";
|
||||
description = "See {option}`listenWhitelisted`.";
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
|
|
@ -54,23 +54,23 @@ let
|
|||
rpcthreads=16
|
||||
logips=1
|
||||
'';
|
||||
description = mdDoc "Extra lines appended to {file}`elements.conf`.";
|
||||
description = "Extra lines appended to {file}`elements.conf`.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/liquidd";
|
||||
description = mdDoc "The data directory for liquidd.";
|
||||
description = "The data directory for liquidd.";
|
||||
};
|
||||
rpc = {
|
||||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen for JSON-RPC connections.";
|
||||
description = "Address to listen for JSON-RPC connections.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 7041;
|
||||
description = mdDoc "Port to listen for JSON-RPC connections.";
|
||||
description = "Port to listen for JSON-RPC connections.";
|
||||
};
|
||||
users = mkOption {
|
||||
default = {};
|
||||
|
|
@ -79,7 +79,7 @@ let
|
|||
bob.passwordHMAC = "b2dd077cb54591a2f3139e69a897ac$4e71f08d48b4347cf8eff3815c0e25ae2e9a4340474079f55705f40574f4ec99";
|
||||
};
|
||||
type = with types; attrsOf (submodule rpcUserOpts);
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
RPC user information for JSON-RPC connections.
|
||||
'';
|
||||
};
|
||||
|
|
@ -87,25 +87,25 @@ let
|
|||
rpcallowip = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ "127.0.0.1" ];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Allow JSON-RPC connections from specified source.
|
||||
'';
|
||||
};
|
||||
rpcuser = mkOption {
|
||||
type = types.str;
|
||||
default = "liquidrpc";
|
||||
description = mdDoc "Username for JSON-RPC connections";
|
||||
description = "Username for JSON-RPC connections";
|
||||
};
|
||||
proxy = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = if cfg.tor.proxy then config.nix-bitcoin.torClientAddressWithPort else null;
|
||||
description = mdDoc "Connect through SOCKS5 proxy";
|
||||
description = "Connect through SOCKS5 proxy";
|
||||
};
|
||||
dbCache = mkOption {
|
||||
type = types.nullOr (types.ints.between 4 16384);
|
||||
default = null;
|
||||
example = 4000;
|
||||
description = mdDoc "Override the default database cache size in megabytes.";
|
||||
description = "Override the default database cache size in megabytes.";
|
||||
};
|
||||
prune = mkOption {
|
||||
type = types.nullOr (types.coercedTo
|
||||
|
|
@ -115,7 +115,7 @@ let
|
|||
);
|
||||
default = null;
|
||||
example = 10000;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Reduce storage requirements by enabling pruning (deleting) of old
|
||||
blocks. This allows the pruneblockchain RPC to be called to delete
|
||||
specific blocks, and enables automatic pruning of old blocks if a
|
||||
|
|
@ -129,19 +129,19 @@ let
|
|||
validatepegin = mkOption {
|
||||
type = types.nullOr types.bool;
|
||||
default = null;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Validate pegin claims. All functionaries must run this.
|
||||
'';
|
||||
};
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "liquid";
|
||||
description = mdDoc "The user as which to run liquidd.";
|
||||
description = "The user as which to run liquidd.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = mdDoc "The group as which to run liquidd.";
|
||||
description = "The group as which to run liquidd.";
|
||||
};
|
||||
cli = mkOption {
|
||||
readOnly = true;
|
||||
|
|
@ -149,14 +149,14 @@ let
|
|||
${nbPkgs.elementsd}/bin/elements-cli -datadir='${cfg.dataDir}' "$@"
|
||||
'';
|
||||
defaultText = "(See source)";
|
||||
description = mdDoc "Binary to connect with the liquidd instance.";
|
||||
description = "Binary to connect with the liquidd instance.";
|
||||
};
|
||||
swapCli = mkOption {
|
||||
default = pkgs.writers.writeBashBin "liquidswap-cli" ''
|
||||
${nbPkgs.liquid-swap}/bin/liquidswap-cli -c '${cfg.dataDir}/elements.conf' "$@"
|
||||
'';
|
||||
defaultText = "(See source)";
|
||||
description = mdDoc "Binary for managing liquid swaps.";
|
||||
description = "Binary for managing liquid swaps.";
|
||||
};
|
||||
tor = nbLib.tor;
|
||||
};
|
||||
|
|
@ -215,14 +215,14 @@ let
|
|||
name = mkOption {
|
||||
type = types.str;
|
||||
example = "alice";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Username for JSON-RPC connections.
|
||||
'';
|
||||
};
|
||||
passwordHMAC = mkOption {
|
||||
type = with types; uniq (strMatching "[0-9a-f]+\\$[0-9a-f]{64}");
|
||||
example = "f7efda5c189b999524f151318c0c86$d5b51b3beffbc02b724e5d095828e0bc8b2456e9ac8757ae3211a5d9b16a22ae";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Password HMAC-SHA-256 for JSON-RPC connections. Must be a string of the
|
||||
format `<SALT-HEX>$<HMAC-HEX>`.
|
||||
'';
|
||||
|
|
|
|||
|
|
@ -7,47 +7,47 @@ let
|
|||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen for peer connections";
|
||||
description = "Address to listen for peer connections";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 9735;
|
||||
description = mdDoc "Port to listen for peer connections";
|
||||
description = "Port to listen for peer connections";
|
||||
};
|
||||
rpcAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen for RPC connections.";
|
||||
description = "Address to listen for RPC connections.";
|
||||
};
|
||||
rpcPort = mkOption {
|
||||
type = types.port;
|
||||
default = 10009;
|
||||
description = mdDoc "Port to listen for gRPC connections.";
|
||||
description = "Port to listen for gRPC connections.";
|
||||
};
|
||||
restAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Address to listen for REST connections.";
|
||||
description = "Address to listen for REST connections.";
|
||||
};
|
||||
restPort = mkOption {
|
||||
type = types.port;
|
||||
default = 8080;
|
||||
description = mdDoc "Port to listen for REST connections.";
|
||||
description = "Port to listen for REST connections.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/lnd";
|
||||
description = mdDoc "The data directory for LND.";
|
||||
description = "The data directory for LND.";
|
||||
};
|
||||
networkDir = mkOption {
|
||||
readOnly = true;
|
||||
default = "${cfg.dataDir}/chain/bitcoin/${bitcoind.network}";
|
||||
description = mdDoc "The network data directory.";
|
||||
description = "The network data directory.";
|
||||
};
|
||||
tor-socks = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = if cfg.tor.proxy then config.nix-bitcoin.torClientAddressWithPort else null;
|
||||
description = mdDoc "Socks proxy for connecting to Tor nodes";
|
||||
description = "Socks proxy for connecting to Tor nodes";
|
||||
};
|
||||
macaroons = mkOption {
|
||||
default = {};
|
||||
|
|
@ -55,18 +55,18 @@ let
|
|||
options = {
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
description = mdDoc "User who owns the macaroon.";
|
||||
description = "User who owns the macaroon.";
|
||||
};
|
||||
permissions = mkOption {
|
||||
type = types.str;
|
||||
example = ''
|
||||
{"entity":"info","action":"read"},{"entity":"onchain","action":"read"}
|
||||
'';
|
||||
description = mdDoc "List of granted macaroon permissions.";
|
||||
description = "List of granted macaroon permissions.";
|
||||
};
|
||||
};
|
||||
});
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra macaroon definitions.
|
||||
'';
|
||||
};
|
||||
|
|
@ -75,7 +75,7 @@ let
|
|||
type = with types; listOf str;
|
||||
default = [];
|
||||
example = [ "60.100.0.1" ];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra `subjectAltName` IPs added to the certificate.
|
||||
This works the same as lnd option {option}`tlsextraip`.
|
||||
'';
|
||||
|
|
@ -84,7 +84,7 @@ let
|
|||
type = with types; listOf str;
|
||||
default = [];
|
||||
example = [ "example.com" ];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra `subjectAltName` domain names added to the certificate.
|
||||
This works the same as lnd option {option}`tlsextradomain`.
|
||||
'';
|
||||
|
|
@ -96,7 +96,7 @@ let
|
|||
example = ''
|
||||
autopilot.active=1
|
||||
'';
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra lines appended to {file}`lnd.conf`.
|
||||
See here for all available options:
|
||||
https://github.com/lightningnetwork/lnd/blob/master/sample-lnd.conf
|
||||
|
|
@ -106,7 +106,7 @@ let
|
|||
type = types.package;
|
||||
default = config.nix-bitcoin.pkgs.lnd;
|
||||
defaultText = "config.nix-bitcoin.pkgs.lnd";
|
||||
description = mdDoc "The package providing lnd binaries.";
|
||||
description = "The package providing lnd binaries.";
|
||||
};
|
||||
cli = mkOption {
|
||||
default = pkgs.writers.writeBashBin "lncli"
|
||||
|
|
@ -118,12 +118,12 @@ let
|
|||
--macaroonpath '${networkDir}/admin.macaroon' "$@"
|
||||
'';
|
||||
defaultText = "(See source)";
|
||||
description = mdDoc "Binary to connect with the lnd instance.";
|
||||
description = "Binary to connect with the lnd instance.";
|
||||
};
|
||||
getPublicAddressCmd = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Bash expression which outputs the public service address to announce to peers.
|
||||
If left empty, no address is announced.
|
||||
'';
|
||||
|
|
@ -131,17 +131,17 @@ let
|
|||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "lnd";
|
||||
description = mdDoc "The user as which to run LND.";
|
||||
description = "The user as which to run LND.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = mdDoc "The group as which to run LND.";
|
||||
description = "The group as which to run LND.";
|
||||
};
|
||||
certPath = mkOption {
|
||||
readOnly = true;
|
||||
default = "${secretsDir}/lnd-cert";
|
||||
description = mdDoc "LND TLS certificate path.";
|
||||
description = "LND TLS certificate path.";
|
||||
};
|
||||
tor = nbLib.tor;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Add a `lndconnect` binary to the system environment which prints
|
||||
connection info for lnd clients.
|
||||
See: https://github.com/LN-Zap/lndconnect
|
||||
|
|
@ -25,7 +25,7 @@ let
|
|||
onion = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Create an onion service for the lnd REST server,
|
||||
which is used by lndconnect.
|
||||
'';
|
||||
|
|
@ -37,7 +37,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Add a `lndconnect-clightning` binary to the system environment which prints
|
||||
connection info for clightning clients.
|
||||
See: https://github.com/LN-Zap/lndconnect
|
||||
|
|
@ -55,7 +55,7 @@ let
|
|||
onion = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Create an onion service for the clightning REST server,
|
||||
which is used by lndconnect.
|
||||
'';
|
||||
|
|
@ -65,7 +65,7 @@ let
|
|||
nix-bitcoin.mkLndconnect = mkOption {
|
||||
readOnly = true;
|
||||
default = mkLndconnect;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
A function to create a lndconnect binary.
|
||||
See the source for further details.
|
||||
'';
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Enable Mempool, a fully featured Bitcoin visualizer, explorer, and API service.
|
||||
|
||||
Note: Mempool enables `txindex` in bitcoind (this is a requirement).
|
||||
|
|
@ -25,7 +25,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = cfg.enable;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Enable the mempool frontend (web interface).
|
||||
This starts a simple nginx instance, configured for local usage with
|
||||
settings similar to the `mempool/frontend` Docker image.
|
||||
|
|
@ -43,18 +43,18 @@ let
|
|||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "HTTP server address.";
|
||||
description = "HTTP server address.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 60845; # A random private port
|
||||
description = mdDoc "HTTP server port.";
|
||||
description = "HTTP server port.";
|
||||
};
|
||||
staticContentRoot = mkOption {
|
||||
type = types.path;
|
||||
default = nbPkgs.mempool-frontend;
|
||||
defaultText = "config.nix-bitcoin.pkgs.mempool-frontend";
|
||||
description = mdDoc "
|
||||
description = "
|
||||
Path of the static frontend content root.
|
||||
";
|
||||
};
|
||||
|
|
@ -62,7 +62,7 @@ let
|
|||
readOnly = true;
|
||||
default = frontend.nginxConfig;
|
||||
defaultText = "(See source)";
|
||||
description = mdDoc "
|
||||
description = "
|
||||
An attrset of nginx config snippets for assembling a custom
|
||||
mempool nginx config.
|
||||
For details, see the source comments at the point of definition.
|
||||
|
|
@ -73,17 +73,17 @@ let
|
|||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Mempool backend address.";
|
||||
description = "Mempool backend address.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 8999;
|
||||
description = mdDoc "Mempool backend port.";
|
||||
description = "Mempool backend port.";
|
||||
};
|
||||
electrumServer = mkOption {
|
||||
type = types.enum [ "electrs" "fulcrum" ];
|
||||
default = "electrs";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The Electrum server to use for fetching address information.
|
||||
|
||||
Possible options:
|
||||
|
|
@ -104,7 +104,7 @@ let
|
|||
CLEARNET_URL = "https://myserver.org/prices";
|
||||
};
|
||||
};
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Mempool backend settings.
|
||||
See here for possible options:
|
||||
https://github.com/mempool/mempool/blob/master/backend/src/config.ts
|
||||
|
|
@ -114,24 +114,24 @@ let
|
|||
name = mkOption {
|
||||
type = types.str;
|
||||
default = "mempool";
|
||||
description = mdDoc "Database name.";
|
||||
description = "Database name.";
|
||||
};
|
||||
};
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = nbPkgs.mempool-backend;
|
||||
defaultText = "config.nix-bitcoin.pkgs.mempool-backend";
|
||||
description = mdDoc "The package providing mempool binaries.";
|
||||
description = "The package providing mempool binaries.";
|
||||
};
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "mempool";
|
||||
description = mdDoc "The user as which to run Mempool.";
|
||||
description = "The user as which to run Mempool.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = mdDoc "The group as which to run Mempool.";
|
||||
description = "The group as which to run Mempool.";
|
||||
};
|
||||
tor = nbLib.tor;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ let
|
|||
addressblock = mkOption {
|
||||
type = types.ints.u8;
|
||||
default = 1;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The address block N in 169.254.N.0/24, used as the prefix for netns addresses.
|
||||
'';
|
||||
};
|
||||
|
|
@ -20,7 +20,7 @@ let
|
|||
id = mkOption {
|
||||
# TODO: Assert uniqueness
|
||||
type = types.ints.between 11 255;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
id for the netns, used for the IP address host part and
|
||||
for naming the interfaces. Must be unique. Must be greater than 10.
|
||||
'';
|
||||
|
|
@ -35,7 +35,7 @@ let
|
|||
|
||||
allowedUser = mkOption {
|
||||
type = types.str;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
User that is allowed to execute commands in the service network namespaces.
|
||||
The user's group is also authorized.
|
||||
'';
|
||||
|
|
@ -45,13 +45,13 @@ let
|
|||
netns = mkOption {
|
||||
readOnly = true;
|
||||
default = netns;
|
||||
description = mdDoc "Exposes netns parameters.";
|
||||
description = "Exposes netns parameters.";
|
||||
};
|
||||
|
||||
bridgeIp = mkOption {
|
||||
readOnly = true;
|
||||
default = bridgeIp;
|
||||
description = mdDoc "IP of the netns bridge interface.";
|
||||
description = "IP of the netns bridge interface.";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ let
|
|||
type = types.attrs;
|
||||
default = {};
|
||||
defaultText = "(See source)";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Nodeinfo service definitions.
|
||||
'';
|
||||
};
|
||||
|
|
@ -27,7 +27,7 @@ let
|
|||
readOnly = true;
|
||||
default = nodeinfoLib;
|
||||
defaultText = "(See source)";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Helper functions for defining nodeinfo services.
|
||||
'';
|
||||
};
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ let
|
|||
access = mkOption {
|
||||
type = with types; attrsOf (listOf str);
|
||||
default = {};
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
This option controls who is allowed to access onion addresses.
|
||||
For example, the following allows user 'myuser' to access bitcoind
|
||||
and clightning onion addresses:
|
||||
|
|
@ -28,7 +28,7 @@ let
|
|||
services = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Services that can access their onion address via file
|
||||
{file}`/var/lib/onion-addresses/<service>`
|
||||
The file is readable only by the service user.
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = config.public;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Create an onion service for the given service.
|
||||
The service must define options {option}`address` and {option}`onionPort` (or `port`).
|
||||
'';
|
||||
|
|
@ -24,7 +24,7 @@ let
|
|||
public = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Make the onion address accessible to the service.
|
||||
If enabled, the onion service is automatically enabled.
|
||||
Only available for services that define option {option}`getPublicAddressCmd`.
|
||||
|
|
@ -33,7 +33,7 @@ let
|
|||
externalPort = mkOption {
|
||||
type = types.nullOr types.port;
|
||||
default = null;
|
||||
description = mdDoc "Override the external port of the onion service.";
|
||||
description = "Override the external port of the onion service.";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Whether to define a user named `operator` for convenient interactive access
|
||||
to nix-bitcoin features (like `bitcoin-cli`).
|
||||
|
||||
|
|
@ -18,17 +18,17 @@ let
|
|||
name = mkOption {
|
||||
type = types.str;
|
||||
default = "operator";
|
||||
description = mdDoc "Name of the operator user.";
|
||||
description = "Name of the operator user.";
|
||||
};
|
||||
groups = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [];
|
||||
description = mdDoc "Extra groups of the operatur user.";
|
||||
description = "Extra groups of the operatur user.";
|
||||
};
|
||||
allowRunAsUsers = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [];
|
||||
description = mdDoc "Users as which the operator is allowed to run commands.";
|
||||
description = "Users as which the operator is allowed to run commands.";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -17,12 +17,12 @@ let
|
|||
subnet = mkOption {
|
||||
type = types.str;
|
||||
default = "10.10.0";
|
||||
description = mdDoc "The /24 subnet of the wireguard network.";
|
||||
description = "The /24 subnet of the wireguard network.";
|
||||
};
|
||||
restrictPeer = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Prevent the peer from connecting to any addresses except for the WireGuard server address.
|
||||
'';
|
||||
};
|
||||
|
|
|
|||
|
|
@ -7,24 +7,24 @@ let
|
|||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "HTTP server address.";
|
||||
description = "HTTP server address.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 3000;
|
||||
description = mdDoc "HTTP server port.";
|
||||
description = "HTTP server port.";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/rtl";
|
||||
description = mdDoc "The data directory for RTL.";
|
||||
description = "The data directory for RTL.";
|
||||
};
|
||||
nodes = {
|
||||
clightning = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc "Enable the clightning node interface.";
|
||||
description = "Enable the clightning node interface.";
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = with types; attrsOf anything;
|
||||
|
|
@ -33,7 +33,7 @@ let
|
|||
Settings.userPersona = "MERCHANT";
|
||||
Settings.logLevel = "DEBUG";
|
||||
};
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra clightning node configuration.
|
||||
See here for all available options:
|
||||
https://github.com/Ride-The-Lightning/RTL/blob/master/.github/docs/Application_configurations.md
|
||||
|
|
@ -44,12 +44,12 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc "Enable the lnd node interface.";
|
||||
description = "Enable the lnd node interface.";
|
||||
};
|
||||
loop = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc "Enable swaps with lightning-loop.";
|
||||
description = "Enable swaps with lightning-loop.";
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = with types; attrsOf anything;
|
||||
|
|
@ -58,7 +58,7 @@ let
|
|||
Settings.userPersona = "MERCHANT";
|
||||
Settings.logLevel = "DEBUG";
|
||||
};
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra lnd node configuration.
|
||||
See here for all available options:
|
||||
https://github.com/Ride-The-Lightning/RTL/blob/master/.github/docs/Application_configurations.md
|
||||
|
|
@ -68,7 +68,7 @@ let
|
|||
reverseOrder = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Reverse the order of nodes shown in the UI.
|
||||
By default, clightning is shown before lnd.
|
||||
'';
|
||||
|
|
@ -77,13 +77,13 @@ let
|
|||
nightTheme = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc "Enable the Night UI Theme.";
|
||||
description = "Enable the Night UI Theme.";
|
||||
};
|
||||
extraCurrency = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
example = "USD";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Currency code (ISO 4217) of the extra currency used for displaying balances.
|
||||
When set, this option enables online currency rate fetching.
|
||||
Warning: Rate fetching requires outgoing clearnet connections, so option
|
||||
|
|
@ -93,12 +93,12 @@ let
|
|||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "rtl";
|
||||
description = mdDoc "The user as which to run RTL.";
|
||||
description = "The user as which to run RTL.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = cfg.user;
|
||||
description = mdDoc "The group as which to run RTL.";
|
||||
description = "The group as which to run RTL.";
|
||||
};
|
||||
tor.enforce = nbLib.tor.enforce;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@ let
|
|||
secretsDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/etc/nix-bitcoin-secrets";
|
||||
description = mdDoc "Directory to store secrets";
|
||||
description = "Directory to store secrets";
|
||||
};
|
||||
|
||||
setupSecrets = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Set permissions for existing secrets in {option}`nix-bitcoin.secretsDir`
|
||||
before services are started.
|
||||
'';
|
||||
|
|
@ -21,7 +21,7 @@ let
|
|||
generateSecrets = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Automatically generate all required secrets before services are started.
|
||||
Note: Make sure to create a backup of the generated secrets.
|
||||
'';
|
||||
|
|
@ -30,7 +30,7 @@ let
|
|||
generateSecretsCmds = mkOption {
|
||||
type = types.attrsOf types.lines;
|
||||
default = {};
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Bash expressions for generating secrets.
|
||||
'';
|
||||
};
|
||||
|
|
@ -38,7 +38,7 @@ let
|
|||
# Currently, this is used only by ../deployment/nixops.nix
|
||||
deployment.secretsDir = mkOption {
|
||||
type = types.path;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Directory of local secrets that are transferred to the nix-bitcoin node on deployment
|
||||
'';
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ with lib;
|
|||
nix-bitcoin.security.dbusHideProcessInformation = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Only allow users with group `proc` to retrieve systemd unit information like
|
||||
cgroup paths (i.e. (sub)process command lines) via D-Bus.
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ let
|
|||
type = with types; nullOr str;
|
||||
default = null;
|
||||
example = "0.0.92";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The nix-bitcoin release version that your config is compatible with.
|
||||
|
||||
When upgrading to a backwards-incompatible release, nix-bitcoin will throw an
|
||||
|
|
|
|||
|
|
@ -2,23 +2,23 @@
|
|||
pkgs: pkgsUnstable:
|
||||
{
|
||||
inherit (pkgs)
|
||||
charge-lnd
|
||||
extra-container
|
||||
lightning-loop
|
||||
lightning-pool
|
||||
lndconnect;
|
||||
|
||||
inherit (pkgsUnstable)
|
||||
bitcoin
|
||||
bitcoind
|
||||
btcpayserver
|
||||
charge-lnd
|
||||
clightning
|
||||
electrs
|
||||
elementsd
|
||||
fulcrum
|
||||
extra-container
|
||||
hwi
|
||||
lnd
|
||||
lightning-loop
|
||||
lightning-pool
|
||||
lndconnect
|
||||
nbxplorer;
|
||||
|
||||
inherit (pkgsUnstable)
|
||||
fulcrum
|
||||
lnd;
|
||||
|
||||
inherit pkgs pkgsUnstable;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{ lib, buildPythonPackageWithDepsCheck, fetchurl, cython, pytest, coverage }:
|
||||
{ lib, buildPythonPackage, fetchurl, cython, pytest, coverage }:
|
||||
|
||||
buildPythonPackageWithDepsCheck rec {
|
||||
buildPythonPackage rec {
|
||||
pname = "bencoder.pyx";
|
||||
version = "3.0.1";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{ lib, buildPythonPackageWithDepsCheck, fetchFromGitHub, colorama, future, six }:
|
||||
buildPythonPackageWithDepsCheck rec {
|
||||
{ lib, buildPythonPackage, fetchFromGitHub, colorama, future, six }:
|
||||
buildPythonPackage rec {
|
||||
pname = "chromalog";
|
||||
version = "1.0.5";
|
||||
|
||||
|
|
|
|||
|
|
@ -25,17 +25,6 @@ rec {
|
|||
|
||||
# autobahn 20.12.3, required by joinmarketclient
|
||||
autobahn = callPackage ./specific-versions/autobahn.nix {};
|
||||
|
||||
# A version of `buildPythonPackage` which checks that Python package
|
||||
# requirements are met.
|
||||
# This was the case for NixOS <= 23.05.
|
||||
# TODO-EXTERNAL: Remove when this is resolved:
|
||||
# https://github.com/NixOS/nixpkgs/issues/253131
|
||||
buildPythonPackageWithDepsCheck = attrs:
|
||||
self.buildPythonPackage (attrs // {
|
||||
dontUsePypaInstall = true;
|
||||
nativeBuildInputs = (attrs.nativeBuildInputs or []) ++ [ self.pipInstallHook ];
|
||||
});
|
||||
};
|
||||
|
||||
nbPython3Packages = (python3.override {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{ version
|
||||
, src
|
||||
, lib
|
||||
, buildPythonPackageWithDepsCheck
|
||||
, buildPythonPackage
|
||||
, pythonOlder
|
||||
, pythonAtLeast
|
||||
, pytestCheckHook
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
, pyopenssl
|
||||
}:
|
||||
|
||||
buildPythonPackageWithDepsCheck rec {
|
||||
buildPythonPackage rec {
|
||||
pname = "joinmarket";
|
||||
inherit version src;
|
||||
format = "pyproject";
|
||||
|
|
@ -62,12 +62,22 @@ buildPythonPackageWithDepsCheck rec {
|
|||
pyopenssl
|
||||
];
|
||||
|
||||
# TODO-EXTERNAL:
|
||||
# Remove this when fixed upstream.
|
||||
#
|
||||
# Fix the following error during checkPhase:
|
||||
# File "/nix/store/...-python3.11-pytest-8.1.1/lib/python3.11/site-packages/_pytest/config/argparsing.py", line 133, in _getparser
|
||||
# arggroup.add_argument(*n, **a)
|
||||
# File "/nix/store/...-python3-3.11.9/lib/python3.11/argparse.py", line 1460, in add_argument
|
||||
# raise ValueError('%r is not callable' % (type_func,))
|
||||
# ValueError: 'int' is not callable
|
||||
patches = [ ./fix-conftest-arg-type-error.patch ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail 'txtorcon==23.11.0' 'txtorcon==23.5.0' \
|
||||
--replace-fail 'twisted==23.10.0' 'twisted==23.8.0' \
|
||||
--replace-fail 'service-identity==21.1.0' 'service-identity==23.1.0' \
|
||||
--replace-fail 'cryptography==41.0.6' 'cryptography==41.0.3'
|
||||
--replace-fail 'twisted==23.10.0' 'twisted==24.3.0' \
|
||||
--replace-fail 'service-identity==21.1.0' 'service-identity==24.1.0' \
|
||||
--replace-fail 'cryptography==41.0.6' 'cryptography==42.0.5'
|
||||
|
||||
# Modify pyproject.toml to include only specific modules. Do not include 'jmqtui'.
|
||||
sed -i '/^\[tool.setuptools.packages.find\]/a include = ["jmbase", "jmbitcoin", "jmclient", "jmdaemon"]' pyproject.toml
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
diff --git a/conftest.py b/conftest.py
|
||||
index 1cc56d5..54b0a4c 100644
|
||||
--- a/conftest.py
|
||||
+++ b/conftest.py
|
||||
@@ -74,12 +74,6 @@ def pytest_addoption(parser: Any) -> None:
|
||||
action="store",
|
||||
default='bitcoinrpc',
|
||||
help="the RPC username for your test bitcoin instance (default=bitcoinrpc)")
|
||||
- parser.addoption("--nirc",
|
||||
- type="int",
|
||||
- action="store",
|
||||
- default=1,
|
||||
- help="the number of local miniircd instances")
|
||||
-
|
||||
|
||||
@pytest.fixture(scope="session", autouse=True)
|
||||
def setup_early_if_needed(request) -> None:
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{ buildPythonPackageWithDepsCheck, clightning, pyln-client }:
|
||||
{ buildPythonPackage, clightning, pyln-client }:
|
||||
|
||||
buildPythonPackageWithDepsCheck rec {
|
||||
buildPythonPackage rec {
|
||||
pname = "pylightning";
|
||||
version = "0.10.1"; # defined in ${src}/contrib/pyln-client/pyln/client/__init__.py
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{ buildPythonPackageWithDepsCheck, poetry-core, pytestCheckHook, clightning, pyln-proto }:
|
||||
{ buildPythonPackage, poetry-core, pytestCheckHook, clightning, pyln-proto }:
|
||||
|
||||
buildPythonPackageWithDepsCheck rec {
|
||||
buildPythonPackage rec {
|
||||
pname = "pyln-bolt7";
|
||||
# The version is defined here:
|
||||
# https://github.com/ElementsProject/lightning/blob/master/contrib/pyln-spec/bolt7/pyproject.toml
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{ buildPythonPackageWithDepsCheck, poetry-core, pytestCheckHook, clightning, pyln-bolt7, pyln-proto }:
|
||||
{ buildPythonPackage, poetry-core, pytestCheckHook, clightning, pyln-bolt7, pyln-proto }:
|
||||
|
||||
buildPythonPackageWithDepsCheck rec {
|
||||
buildPythonPackage rec {
|
||||
pname = "pyln-client";
|
||||
version = clightning.version;
|
||||
format = "pyproject";
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ buildPythonPackageWithDepsCheck
|
||||
{ buildPythonPackage
|
||||
, clightning
|
||||
, poetry-core
|
||||
, pytestCheckHook
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
, pysocks
|
||||
}:
|
||||
|
||||
buildPythonPackageWithDepsCheck rec {
|
||||
buildPythonPackage rec {
|
||||
pname = "pyln-proto";
|
||||
version = clightning.version;
|
||||
format = "pyproject";
|
||||
|
|
@ -29,4 +29,10 @@ buildPythonPackageWithDepsCheck rec {
|
|||
checkInputs = [ pytestCheckHook ];
|
||||
|
||||
postUnpack = "sourceRoot=$sourceRoot/contrib/pyln-proto";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail 'coincurve = "^18"' 'coincurve = "^19"' \
|
||||
--replace-fail 'cryptography = "^41"' 'cryptography = "^42"' \
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{ lib, buildPythonPackageWithDepsCheck, fetchFromGitHub, secp256k1 }:
|
||||
{ lib, buildPythonPackage, fetchFromGitHub, secp256k1 }:
|
||||
|
||||
buildPythonPackageWithDepsCheck rec {
|
||||
buildPythonPackage rec {
|
||||
pname = "python-bitcointx";
|
||||
version = "1.1.5";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{ sha256, lib, buildPythonPackageWithDepsCheck, fetchFromGitHub }:
|
||||
{ sha256, lib, buildPythonPackage, fetchFromGitHub }:
|
||||
|
||||
buildPythonPackageWithDepsCheck {
|
||||
buildPythonPackage {
|
||||
pname = "runes";
|
||||
version = "0.4.0";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{ lib, buildPythonPackageWithDepsCheck, fetchFromGitHub, cython }:
|
||||
{ lib, buildPythonPackage, fetchFromGitHub, cython }:
|
||||
|
||||
buildPythonPackageWithDepsCheck rec {
|
||||
buildPythonPackage rec {
|
||||
pname = "sha256";
|
||||
version = builtins.substring 0 8 src.rev;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
, fetchNodeModules
|
||||
, fetchpatch
|
||||
, fetchurl
|
||||
, applyPatches
|
||||
, makeWrapper
|
||||
}:
|
||||
let self = stdenvNoCC.mkDerivation {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Whether to shellcheck services during system build time.
|
||||
'';
|
||||
};
|
||||
|
|
@ -13,14 +13,14 @@ let
|
|||
sourcePrefix = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The definition source path prefix of services to include in the shellcheck.
|
||||
'';
|
||||
};
|
||||
|
||||
runShellcheck = mkOption {
|
||||
readOnly = true;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
A derivation that runs shellcheck on all bash scripts included
|
||||
in nix-bitcoin services.
|
||||
'';
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ with lib;
|
|||
noConnections = mkOption {
|
||||
type = types.bool;
|
||||
default = !config.test.container.enableWAN;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Whether services should be configured to not connect to external hosts.
|
||||
This can silence some warnings while running the test in an offline environment.
|
||||
'';
|
||||
|
|
@ -18,7 +18,7 @@ with lib;
|
|||
data = mkOption {
|
||||
type = types.attrs;
|
||||
default = {};
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Attrs that are available in the Python test script under the global
|
||||
dictionary variable {var}`test_data`. The data is exported via JSON.
|
||||
'';
|
||||
|
|
|
|||
|
|
@ -3,17 +3,19 @@ set -euo pipefail
|
|||
|
||||
cd "${BASH_SOURCE[0]%/*}"
|
||||
|
||||
nbFlake=$(realpath ../..)
|
||||
|
||||
# Use cachix to cache the `flake-info` build
|
||||
cachixCache=nix-bitcoin
|
||||
|
||||
nix run .#cachix -- use "$cachixCache"
|
||||
|
||||
# We're running in a basic, unprivileged container that doesn't support sandboxing.
|
||||
# Sandboxing is unnneeded because we're only building the 3rd-party `flake-info` tool.
|
||||
echo "sandbox = false" >> /etc/nix/nix.conf
|
||||
|
||||
# shellcheck disable=SC2016
|
||||
PATH=$(nix shell -L .#flake-info .#cachix -c sh -c 'echo $PATH')
|
||||
PATH=$(nix shell -L .#{flake-info,cachix,jq} -c sh -c 'echo $PATH')
|
||||
|
||||
# flake-info uses `nixpkgs` from NIX_PATH
|
||||
NIX_PATH="nixpkgs=$(nix flake metadata --json --inputs-from "$nbFlake" nixpkgs | jq -r .path)"
|
||||
export NIX_PATH
|
||||
|
||||
if [[ ${CACHIX_SIGNING_KEY:-} ]]; then
|
||||
cachix push "$cachixCache" "$(type -P flake-info)";
|
||||
|
|
|
|||
|
|
@ -13,7 +13,11 @@ cd "${BASH_SOURCE[0]%/*}"
|
|||
nbFlake=$(realpath ../..)
|
||||
|
||||
# shellcheck disable=SC2016
|
||||
PATH=$(nix shell -L .#{flake-info,bubblewrap} -c sh -c 'echo $PATH')
|
||||
PATH=$(nix shell -L .#{flake-info,bubblewrap,jq} -c sh -c 'echo $PATH')
|
||||
|
||||
# flake-info uses `nixpkgs` from NIX_PATH
|
||||
NIX_PATH="nixpkgs=$(nix flake metadata --json --inputs-from "$nbFlake" nixpkgs | jq -r .path)"
|
||||
export NIX_PATH
|
||||
|
||||
tmpDir=$(mktemp -d /tmp/nix-bitcoin-flake-info.XXX)
|
||||
trap 'rm -rf $tmpDir' EXIT
|
||||
|
|
|
|||
18
test/nixos-search/flake.lock
generated
18
test/nixos-search/flake.lock
generated
|
|
@ -21,11 +21,11 @@
|
|||
"nixos-infra": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1719778568,
|
||||
"narHash": "sha256-W9SPjBPAOGGzCU7SxhQ4VaQvm30GjEJfx+augFPwlEA=",
|
||||
"lastModified": 1720869490,
|
||||
"narHash": "sha256-Cj5h2zSCGTuIlbEWasB4aIBl8IEhdxq/JZX+vQmyffk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "infra",
|
||||
"rev": "dd2613701333234c5d1b84c7bc9cab907b712e77",
|
||||
"rev": "0e4ddbf7943699b9d61bc6eaae9b2ef536ffeb5a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -43,11 +43,11 @@
|
|||
"npmlock2nix": "npmlock2nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719923111,
|
||||
"narHash": "sha256-4MhPR5FP6Jj+OoMek/RWpFUzvgTuUtYi8QRPK3GtVnw=",
|
||||
"lastModified": 1721050729,
|
||||
"narHash": "sha256-TTYT7WengNKlRWkQJMKuccB/MgYvNU0c59cpJEy6NOY=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-search",
|
||||
"rev": "6c6f9f5effdd20d1aa7bc6b9a01e20800d02a7bc",
|
||||
"rev": "f46a52abf356365277c70268098772c6de5381b3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -58,11 +58,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1719506693,
|
||||
"narHash": "sha256-C8e9S7RzshSdHB7L+v9I51af1gDM5unhJ2xO1ywxNH8=",
|
||||
"lastModified": 1720768451,
|
||||
"narHash": "sha256-EYekUHJE2gxeo2pM/zM9Wlqw1Uw2XTJXOSAO79ksc4Y=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b2852eb9365c6de48ffb0dc2c9562591f652242a",
|
||||
"rev": "7e7c39ea35c5cdd002cd4588b03a3fb9ece6fad9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
|||
|
|
@ -4,8 +4,24 @@
|
|||
{
|
||||
inputs.nixos-search.url = "github:nixos/nixos-search";
|
||||
|
||||
outputs = { self, nixos-search }: {
|
||||
inherit (nixos-search) packages;
|
||||
outputs = { self, nixos-search }: let
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
];
|
||||
inherit (nixos-search.inputs.nixpkgs) lib;
|
||||
in {
|
||||
packages = lib.genAttrs systems (system: {
|
||||
# In flake-info, Rust calls into Nix code which uses `nixpkgs` from NIX_PATH.
|
||||
# Don't set `nixpkgs` to a tarball URL, use the default value from the environment instead.
|
||||
# This allows running flake-info in an offline environment (./flake-info-sandboxed.sh).
|
||||
flake-info = nixos-search.packages.${system}.flake-info.overrideAttrs (old: {
|
||||
postPatch = (old.postPatch or "") + ''
|
||||
substituteInPlace src/commands/nix_flake_attrs.rs --replace-fail \
|
||||
'command.add_arg_pair("-I", "nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz");' ""
|
||||
'';
|
||||
});
|
||||
});
|
||||
|
||||
# Used by ./ci-test.sh
|
||||
inherit (nixos-search.inputs.nixpkgs) legacyPackages;
|
||||
|
|
|
|||
|
|
@ -263,7 +263,7 @@ isNixVersionGreaterEqual_2_15() {
|
|||
}
|
||||
|
||||
flake() {
|
||||
nix flake check "$scriptDir/.."
|
||||
nix flake check --all-systems "$scriptDir/.."
|
||||
}
|
||||
|
||||
# Test generating module documentation for search.nixos.org
|
||||
|
|
|
|||
|
|
@ -355,7 +355,7 @@ def _():
|
|||
# Files in backup and /var/lib should be identical
|
||||
assert_matches(
|
||||
f"{run_duplicity} verify --archive-dir /var/lib/duplicity file:///var/lib/localBackups /var/lib",
|
||||
"0 differences found",
|
||||
"no sync needed",
|
||||
)
|
||||
# Backup should include important files
|
||||
files = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue