2020-12-24 13:29:14 +03:00
|
|
|
Examples
|
|
|
|
---
|
|
|
|
|
|
|
|
The easiest way to try out nix-bitcoin is to use one of the provided examples.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
git clone https://github.com/fort-nix/nix-bitcoin
|
|
|
|
cd nix-bitcoin/examples/
|
|
|
|
nix-shell
|
|
|
|
```
|
|
|
|
|
|
|
|
The following example scripts set up a nix-bitcoin node according to [`configuration.nix`](configuration.nix) and then
|
|
|
|
shut down immediately. They leave no traces (outside of `/nix/store`) on the host system.\
|
2021-01-14 15:24:24 +03:00
|
|
|
By default, [`configuration.nix`](configuration.nix) enables `bitcoind` and `clightning`.
|
2020-12-24 13:29:14 +03:00
|
|
|
|
|
|
|
- [`./deploy-container.sh`](deploy-container.sh) creates a [NixOS container](https://github.com/erikarvstedt/extra-container).\
|
|
|
|
This is the fastest way to set up a node.\
|
|
|
|
Requires: [Nix](https://nixos.org/), a systemd-based Linux distro and root privileges
|
|
|
|
|
|
|
|
- [`./deploy-qemu-vm.sh`](deploy-qemu-vm.sh) creates a QEMU VM.\
|
|
|
|
Requires: [Nix](https://nixos.org/nix/)
|
|
|
|
|
2021-03-10 16:08:40 +03:00
|
|
|
- [`./deploy-krops.sh`](deploy-krops.sh) creates a QEMU VM and deploys a
|
|
|
|
nix-bitcoin configuration to it using [krops](https://github.com/krebs/krops).\
|
|
|
|
Requires: [Nix](https://nixos.org/nix/)
|
|
|
|
|
2020-12-24 13:29:14 +03:00
|
|
|
- [`./deploy-container-minimal.sh`](deploy-container-minimal.sh) creates a
|
|
|
|
container defined by [minimal-configuration.nix](minimal-configuration.nix) that
|
|
|
|
doesn't use the [secure-node.nix](../modules/presets/secure-node.nix) preset.
|
|
|
|
Also shows how to use nix-bitcoin in an existing NixOS config.\
|
|
|
|
Requires: [Nix](https://nixos.org/), a systemd-based Linux distro and root privileges
|
|
|
|
|
|
|
|
Run the examples with option `--interactive` or `-i` to start a shell for interacting with
|
|
|
|
the node:
|
|
|
|
```bash
|
|
|
|
./deploy-qemu-vm.sh -i
|
|
|
|
```
|
|
|
|
|
|
|
|
### Tests
|
|
|
|
The internal test suite is also useful for exploring features.\
|
|
|
|
The following `run-tests.sh` commands leave no traces (outside of `/nix/store`) on
|
|
|
|
the host system.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
git clone https://github.com/fort-nix/nix-bitcoin
|
|
|
|
cd nix-bitcoin/test
|
|
|
|
|
2021-03-27 01:23:22 +03:00
|
|
|
# Run a node in a VM. No tests are executed.
|
|
|
|
./run-tests.sh vm
|
|
|
|
systemctl status bitcoind
|
|
|
|
|
2020-12-24 13:29:14 +03:00
|
|
|
# Run a Python test shell inside a VM node
|
|
|
|
./run-tests.sh debug
|
|
|
|
print(succeed("systemctl status bitcoind"))
|
2021-03-27 01:23:22 +03:00
|
|
|
run_test("bitcoind")
|
2020-12-24 13:29:14 +03:00
|
|
|
|
|
|
|
# Run a node in a container. Requires systemd and root privileges.
|
|
|
|
./run-tests.sh container
|
|
|
|
c systemctl status bitcoind
|
|
|
|
|
|
|
|
# Explore a single feature
|
|
|
|
./run-tests.sh --scenario electrs container
|
2021-01-30 12:47:01 +03:00
|
|
|
|
|
|
|
# Run a command in a container
|
|
|
|
./run-tests.sh --scenario '{
|
|
|
|
services.clightning.enable = true;
|
|
|
|
nix-bitcoin.nodeinfo.enable = true;
|
|
|
|
}' container --run c nodeinfo
|
2020-12-24 13:29:14 +03:00
|
|
|
```
|
|
|
|
See [`run-tests.sh`](../test/run-tests.sh) for a complete documentation.
|