129 lines
4.5 KiB
Bash
129 lines
4.5 KiB
Bash
|
#―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
|
||
|
# Access nix-bitcoin flake packages
|
||
|
|
||
|
function nb() {
|
||
|
nix build --no-link --print-out-paths --print-build-logs "$@"
|
||
|
}
|
||
|
|
||
|
# A package defined by nix-bitcoin
|
||
|
nb .#joinmarket
|
||
|
# Equivalent
|
||
|
nb .#modulesPkgs.joinmarket
|
||
|
|
||
|
# A nix-bitcoin python package
|
||
|
nb .#nbPython3Packages.pyln-client
|
||
|
|
||
|
# A pinned package from nixpkgs(-unstable)
|
||
|
nb .#pinned.electrs
|
||
|
# Equivalent
|
||
|
nb .#modulesPkgs.electrs
|
||
|
|
||
|
## Eval packages
|
||
|
# Check version
|
||
|
nix eval .#joinmarket.version
|
||
|
|
||
|
# Eval derivation. --raw is needed due to a Nix bug (https://github.com/NixOS/nix/issues/5731)
|
||
|
nix eval --raw .#joinmarket; echo
|
||
|
|
||
|
# Check the version of a package in the nixpkgs(-unstable) inputs of the nix-bitcoin flake
|
||
|
nix eval --inputs-from . nixpkgs#electrs.version
|
||
|
nix eval --inputs-from . nixpkgs-unstable#electrs.version
|
||
|
|
||
|
#―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
|
||
|
# Inspect test systems
|
||
|
|
||
|
# Build a test system
|
||
|
nix build -o /tmp/system --print-build-logs "$(nix eval --raw .#tests.default --apply '
|
||
|
test: test.nodes.machine.system.build.toplevel.drvPath
|
||
|
')"
|
||
|
readlink /tmp/system
|
||
|
# Inspect system files
|
||
|
cat /tmp/system/activate
|
||
|
cat /tmp/system/etc/system/bitcoind.service
|
||
|
|
||
|
# Evaluate a config value
|
||
|
nix eval .#tests.default --apply '
|
||
|
test: test.nodes.machine.services.bitcoind.rpc.port
|
||
|
'
|
||
|
|
||
|
# Evaluate a config value in a custom test
|
||
|
nix eval .#makeTest --apply '
|
||
|
makeTest: let
|
||
|
config = (makeTest {
|
||
|
config = {
|
||
|
services.electrs.port = 10000;
|
||
|
};
|
||
|
}).nodes.machine;
|
||
|
in
|
||
|
config.services.electrs.port
|
||
|
'
|
||
|
|
||
|
# Evaluate a config value in a scenario defined in a file
|
||
|
nix eval --impure .#getTest --apply '
|
||
|
getTest: let
|
||
|
config = (getTest {
|
||
|
name = "default";
|
||
|
extraScenariosFile = builtins.getEnv("root") + "/scenarios.nix";
|
||
|
}).nodes.machine;
|
||
|
in
|
||
|
config.services.bitcoind.port
|
||
|
'
|
||
|
|
||
|
#―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
|
||
|
# Manually run a nix-bitcoin container, without the test framework.
|
||
|
# This allows sharing directories with the container host via option `bindMounts.`
|
||
|
|
||
|
read -rd '' src <<'EOF' || :
|
||
|
let
|
||
|
nix-bitcoin = builtins.getFlake "git+file://${toString ../.}";
|
||
|
in
|
||
|
nix-bitcoin.inputs.extra-container.lib.buildContainers {
|
||
|
system = "x86_64-linux";
|
||
|
inherit (nix-bitcoin.inputs) nixpkgs;
|
||
|
# legacyInstallDirs = true;
|
||
|
config = {
|
||
|
containers.nb-adhoc = {
|
||
|
# bindMounts."/shared" = { hostPath = "/my/hostpath"; isReadOnly = false; };
|
||
|
extra.addressPrefix = "10.200.255";
|
||
|
config = {
|
||
|
imports = [ nix-bitcoin.nixosModules.default ];
|
||
|
services.bitcoind.enable = true;
|
||
|
nix-bitcoin.generateSecrets = true;
|
||
|
nix-bitcoin.nodeinfo.enable = true;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|
||
|
EOF
|
||
|
nix run --impure --expr "$src"
|
||
|
|
||
|
# Run command in container
|
||
|
nix shell --impure --expr "$src" -c container --run c nodeinfo
|
||
|
# TODO-EXTERNAL: Use this instead when https://github.com/NixOS/nix/issues/7444 is fixed
|
||
|
# nix run --impure --expr "$src" -- --run c nodeinfo
|
||
|
|
||
|
#―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
|
||
|
# Show build logs from a CI test run
|
||
|
#
|
||
|
# If a specific test derivation was already built successfully, the test is not rerun
|
||
|
# and the CI logs don't show the test output.
|
||
|
|
||
|
# To view the test output:
|
||
|
# 1. Get the test store path at the end of the CI logs
|
||
|
# 2.
|
||
|
fetch_build_log() {
|
||
|
local log=$1
|
||
|
nix cat-store --store https://nix-bitcoin.cachix.org "$log/output.xml" |
|
||
|
nix shell --inputs-from . nixpkgs#html-tidy -c tidy -xml -i - > /tmp/build-output.xml
|
||
|
echo
|
||
|
echo "Fetched log to /tmp/build-output.xml"
|
||
|
}
|
||
|
# Set this to your store path
|
||
|
fetch_build_log /nix/store/0cdjhvg84jsp47f3357812zjmj2wmz94-vm-test-run-nix-bitcoin-default
|
||
|
|
||
|
# Show runtime
|
||
|
grep "script finished in" /tmp/build-output.xml
|
||
|
|
||
|
# View XML with node folding
|
||
|
firefox /tmp/build-output.xml
|