these 2 derivations will be built: /nix/store/6yjf9fk4jqb71pq581rwcgnh1lw2y0g6-python3-3.13.15-env.drv /nix/store/g28nhwyzv7rv11yn051w1iclmw3vbbyj-zerotier-tools-pytest.drv building '/nix/store/6yjf9fk4jqb71pq581rwcgnh1lw2y0g6-python3-3.13.15-env.drv' on 'ssh-ng://builder@build01.clan.lol' warning: SQLite database '/nix/var/nix/db/db.sqlite' is busy building '/nix/store/6yjf9fk4jqb71pq581rwcgnh1lw2y0g6-python3-3.13.15-env.drv' python3-3.13.15-env> structuredAttrs is enabled python3-3.13.15-env> created 240 symlinks in user environment building '/nix/store/g28nhwyzv7rv11yn051w1iclmw3vbbyj-zerotier-tools-pytest.drv' on 'ssh-ng://builder@build01.clan.lol' building '/nix/store/g28nhwyzv7rv11yn051w1iclmw3vbbyj-zerotier-tools-pytest.drv' zerotier-tools-pytest> Running pytest... zerotier-tools-pytest> ============================= test session starts ============================== zerotier-tools-pytest> platform linux -- Python 3.13.15, pytest-9.0.3, pluggy-1.6.0 -- /nix/store/z10106lv3n8qvh1zrnhai8d042xh1p2a-python3-3.13.15-env/bin/python zerotier-tools-pytest> cachedir: .pytest_cache zerotier-tools-pytest> rootdir: /build/src zerotier-tools-pytest> configfile: pyproject.toml zerotier-tools-pytest> collected 24 items zerotier-tools-pytest> zerotier-tools-pytest> tests/test_generate.py::TestIdentity::test_from_secret_file_parses_node_id PASSED [ 4%] zerotier-tools-pytest> tests/test_generate.py::TestIdentity::test_from_secret_file_preserves_private PASSED [ 8%] zerotier-tools-pytest> tests/test_generate.py::TestIdentity::test_from_secret_file_agrees_with_directory_constructor PASSED [ 12%] zerotier-tools-pytest> tests/test_generate.py::TestComputeZerotierIp::test_golden_values PASSED [ 16%] zerotier-tools-pytest> tests/test_generate.py::TestComputeZerotierIp::test_different_networks_yield_different_ips PASSED [ 20%] zerotier-tools-pytest> tests/test_generate.py::TestComputeZerotierIp::test_embeds_network_and_node PASSED [ 25%] zerotier-tools-pytest> tests/test_generate.py::TestComputeZerotierIp::test_rejects_short_network_id PASSED [ 29%] zerotier-tools-pytest> tests/test_generate.py::TestComputeZerotierIp::test_rejects_long_network_id PASSED [ 33%] zerotier-tools-pytest> tests/test_generate.py::TestCreateNetworkId::test_format PASSED [ 37%] zerotier-tools-pytest> tests/test_generate.py::TestCreateNetworkId::test_unique PASSED [ 41%] zerotier-tools-pytest> tests/test_generate.py::TestCreateNetworkId::test_rejects_zero_suffix PASSED [ 45%] zerotier-tools-pytest> tests/test_generate.py::TestCliNetworkMode::test_generates_identity_network_and_ip PASSED [ 50%] zerotier-tools-pytest> tests/test_generate.py::TestCliIdentityMode::test_generates_identity_and_derives_ip PASSED [ 54%] zerotier-tools-pytest> tests/test_generate.py::TestCliIdentityMode::test_fails_without_network_id_file PASSED [ 58%] zerotier-tools-pytest> tests/test_generate.py::TestCliComputeIpMode::test_writes_correct_output PASSED [ 62%] zerotier-tools-pytest> tests/test_generate.py::TestCliComputeIpMode::test_does_not_overwrite_identity PASSED [ 66%] zerotier-tools-pytest> tests/test_generate.py::TestCliComputeIpMode::test_fails_without_network_id_file PASSED [ 70%] zerotier-tools-pytest> tests/test_generate.py::TestCliIdentityOnlyMode::test_generates_identity_without_ip PASSED [ 75%] zerotier-tools-pytest> tests/test_generate.py::TestCliIdentityOnlyMode::test_does_not_require_ip PASSED [ 79%] zerotier-tools-pytest> tests/test_generate.py::TestCliIdentityOnlyMode::test_fails_without_identity_secret PASSED [ 83%] zerotier-tools-pytest> tests/test_generate.py::TestCliNetworkIdMode::test_derives_network_id_from_identity PASSED [ 87%] zerotier-tools-pytest> tests/test_generate.py::TestCliNetworkIdMode::test_does_not_require_ip PASSED [ 91%] zerotier-tools-pytest> tests/test_generate.py::TestCliNetworkIdMode::test_fails_without_identity_secret_file PASSED [ 95%] zerotier-tools-pytest> tests/test_generate.py::TestCliNetworkIdMode::test_fails_without_network_id PASSED [100%] zerotier-tools-pytest> zerotier-tools-pytest> ============================== 24 passed in 2.03s ============================== post-build step Upload to niks3: ok time=2026-09-06T05:07:21.707Z level=INFO msg="Uploading 0 paths to niks3.clan.lol (1 already cached)" time=2026-09-06T05:07:22.098Z level=INFO msg="Uploading 1 narinfos" time=2026-09-06T05:07:22.494Z level=INFO msg="Upload complete. (852ms)"