This test requires `electrs` to be enabled. Also, by using `electrs` instead of `clightning` we avoid the bug where clightning hangs at startup when internet access is unavailable. Due to technical limititations, internet access is available in NixOS containers only after the container has started.
70 lines
2.4 KiB
Nix
70 lines
2.4 KiB
Nix
# See how this flake is used in ./usage.sh
|
|
|
|
# See also:
|
|
# https://github.com/erikarvstedt/extra-container
|
|
# https://github.com/erikarvstedt/extra-container/blob/master/examples/flake
|
|
# Container-related NixOS options
|
|
# https://search.nixos.org/options?channel=unstable&query=containers.%3Cname%3E
|
|
|
|
{
|
|
description = "A basic nix-bitcoin container node";
|
|
|
|
inputs = {
|
|
nix-bitcoin.url = "github:fort-nix/nix-bitcoin/release";
|
|
# You can also use a version branch to track a specific NixOS release
|
|
# nix-bitcoin.url = "github:fort-nix/nix-bitcoin/nixos-23.05";
|
|
|
|
nixpkgs.follows = "nix-bitcoin/nixpkgs";
|
|
nixpkgs-unstable.follows = "nix-bitcoin/nixpkgs-unstable";
|
|
extra-container.follows = "nix-bitcoin/extra-container";
|
|
};
|
|
|
|
outputs = { nixpkgs, nix-bitcoin, extra-container, ... }:
|
|
extra-container.lib.eachSupportedSystem (system: {
|
|
packages.default = extra-container.lib.buildContainers {
|
|
inherit system;
|
|
|
|
# The container uses the nixpkgs from `nix-bitcoin.inputs.nixpkgs` by default
|
|
|
|
# Only set this if the `system.stateVersion` of your container
|
|
# host is < 22.05
|
|
# legacyInstallDirs = true;
|
|
|
|
config = {
|
|
containers.mynode = {
|
|
# Always start container along with the container host
|
|
autoStart = true;
|
|
|
|
# This assigns the following addresses:
|
|
# Host IP: 10.250.0.1
|
|
# Container IP: 10.250.0.2
|
|
extra.addressPrefix = "10.250.0";
|
|
|
|
# Enable internet access for the container
|
|
extra.enableWAN = true;
|
|
|
|
# Map `/my/host/dir` to `/my/mount` in the container
|
|
# bindMounts."/my/mount" = { hostPath = "/my/host/dir"; isReadOnly = false; };
|
|
|
|
# Setup port forwarding
|
|
# forwardPorts = [ { containerPort = 80; hostPort = 8080; protocol = "tcp";} ];
|
|
|
|
config = { config, pkgs, ... }: {
|
|
imports = [
|
|
nix-bitcoin.nixosModules.default
|
|
];
|
|
|
|
# Automatically generate all secrets required by services.
|
|
# The secrets are stored in /etc/nix-bitcoin-secrets in the container
|
|
nix-bitcoin.generateSecrets = true;
|
|
|
|
# Enable some services.
|
|
# See ../configuration.nix for all available features.
|
|
services.bitcoind.enable = true;
|
|
services.electrs.enable = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
});
|
|
}
|