don't know how to build these paths: /nix/store/q9li5rgrq1scj047aw15p7k7fsxncldz-container-test-run-llm.drv warning: ignoring the client-specified setting 'store', because it is a restricted setting and you are not a trusted user building '/nix/store/83ihjdkhyyddqfmwz495hvbvwgyq7wjf-etc-ssh-ssh_config.drv' on nix-store.geninf.io:50051 etc-ssh-ssh_config> gi-build-x86-01: building 83ihjdkhyyddqfmwz495hvbvwgyq7wjf-etc-ssh-ssh_config.drv building '/nix/store/68xgjdpqb7l387qcfa0lkahl9a3qc770-unit-backdoor.service-disabled.drv' on nix-store.geninf.io:50051 unit-backdoor.service-disabled> gi-build-x86-01: building 68xgjdpqb7l387qcfa0lkahl9a3qc770-unit-backdoor.service-disabled.drv building '/nix/store/gs9hys8hiss18a04p9mkvp5ywj0wl4pb-python3-3.13.7-env.drv' on nix-store.geninf.io:50051 python3-3.13.7-env> attached to the build already running on this worker building '/nix/store/s6blpsqq55w5y4jyd8ww031b7qxp3xrl-unit-script-linger-users-start.drv' on nix-store.geninf.io:50051 unit-script-linger-users-start> gi-build-x86-01: building s6blpsqq55w5y4jyd8ww031b7qxp3xrl-unit-script-linger-users-start.drv building '/nix/store/343sh8jvlqbh1riq17fjr6l5kspz07mr-nixpkgs.drv' on nix-store.geninf.io:50051 nixpkgs> attached to the build already running on this worker nixpkgs> gi-build-x86-02: building 343sh8jvlqbh1riq17fjr6l5kspz07mr-nixpkgs.drv nixpkgs> warning: you don't have Internet access; disabling some network-dependent features building '/nix/store/0lbqqq78jx2b3i0fkr5rg40n54niscki-stage-2-init.sh.drv' on nix-store.geninf.io:50051 building '/nix/store/0mvs265zhpjnykya0avc0whx7a9g4dsk-4b-instruct.drv' on nix-store.geninf.io:50051 stage-2-init.sh> gi-build-x86-01: building 0lbqqq78jx2b3i0fkr5rg40n54niscki-stage-2-init.sh.drv 4b-instruct> gi-build-x86-01: building 0mvs265zhpjnykya0avc0whx7a9g4dsk-4b-instruct.drv building '/nix/store/z80j7f4k6fkdxbmpb8i0ckj3f0h3078l-sha256-85e4a5b7b8ef0e48af0e8658f5aaab9c2324c76c1641493f4d1e25fce54b18b9.drv' on nix-store.geninf.io:50051 building '/nix/store/ifjj7hnd32dzhmwdib2ghvavs5mqvarf-sha256-eade0a07cac7712787bbce23d12f9306adb4781d873d1df6e16f7840fa37afec.drv' on nix-store.geninf.io:50051 sha256-85e4a5b7b8ef0e48af0e8658f5aaab9c2324c76c1641493f4d1e25fce54b18b9> gi-build-x86-01: building z80j7f4k6fkdxbmpb8i0ckj3f0h3078l-sha256-85e4a5b7b8ef0e48af0e8658f5aaab9c2324c76c1641493f4d1e25fce54b18b9.drv sha256-eade0a07cac7712787bbce23d12f9306adb4781d873d1df6e16f7840fa37afec> gi-build-x86-01: building ifjj7hnd32dzhmwdib2ghvavs5mqvarf-sha256-eade0a07cac7712787bbce23d12f9306adb4781d873d1df6e16f7840fa37afec.drv stage-2-init.sh> Running phase: patchPhase stage-2-init.sh> Running phase: updateAutotoolsGnuConfigScriptsPhase stage-2-init.sh> Running phase: configurePhase stage-2-init.sh> no configure script, doing nothing stage-2-init.sh> Running phase: buildPhase stage-2-init.sh> Running phase: checkPhase stage-2-init.sh> Running phase: installPhase stage-2-init.sh> no Makefile or custom installPhase, doing nothing stage-2-init.sh> Running phase: fixupPhase stage-2-init.sh> shrinking RPATHs of ELF executables and libraries in /nix/store/4qhihddh34njdjikaxf5abym2nw9sfh9-stage-2-init.sh stage-2-init.sh> checking for references to /build/ in /nix/store/4qhihddh34njdjikaxf5abym2nw9sfh9-stage-2-init.sh... stage-2-init.sh> patching script interpreter paths in /nix/store/4qhihddh34njdjikaxf5abym2nw9sfh9-stage-2-init.sh building '/nix/store/s0br1zwll222kl90mk1h9i8sir9y52iv-unit-linger-users.service.drv' on nix-store.geninf.io:50051 unit-linger-users.service> gi-build-x86-01: building s0br1zwll222kl90mk1h9i8sir9y52iv-unit-linger-users.service.drv 4b-instruct> sha256-eade0a07cac7712787bbce23d12f9306adb4781d873d1df6e16f7840fa37afec> 4b-instruct> trying https://registry.ollama.ai/v2/library/qwen3/manifests/4b-instruct sha256-eade0a07cac7712787bbce23d12f9306adb4781d873d1df6e16f7840fa37afec> trying https://registry.ollama.ai/v2/library/qwen3/blobs/sha256:eade0a07cac7712787bbce23d12f9306adb4781d873d1df6e16f7840fa37afec sha256-eade0a07cac7712787bbce23d12f9306adb4781d873d1df6e16f7840fa37afec> % Total % Received % Xferd Average Speed Time Time Time Current 4b-instruct> % Total % Received % Xferd Average Speed Time Time Time Current sha256-eade0a07cac7712787bbce23d12f9306adb4781d873d1df6e16f7840fa37afec> Dload Upload Total Spent Left Speed 4b-instruct> Dload Upload Total Spent Left Speed sha256-85e4a5b7b8ef0e48af0e8658f5aaab9c2324c76c1641493f4d1e25fce54b18b9> sha256-85e4a5b7b8ef0e48af0e8658f5aaab9c2324c76c1641493f4d1e25fce54b18b9> trying https://registry.ollama.ai/v2/library/qwen3/blobs/sha256:85e4a5b7b8ef0e48af0e8658f5aaab9c2324c76c1641493f4d1e25fce54b18b9 sha256-85e4a5b7b8ef0e48af0e8658f5aaab9c2324c76c1641493f4d1e25fce54b18b9> % Total % Received % Xferd Average Speed Time Time Time Current sha256-85e4a5b7b8ef0e48af0e8658f5aaab9c2324c76c1641493f4d1e25fce54b18b9> Dload Upload Total Spent Left Speed sha256-85e4a5b7b8ef0e48af0e8658f5aaab9c2324c76c1641493f4d1e25fce54b18b9> 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 sha256-eade0a07cac7712787bbce23d12f9306adb4781d873d1df6e16f7840fa37afec> 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 4b-instruct> 100 859 100 859 0 0 2373 0 --:--:-- --:--:-- --:--:-- 2372 sha256-eade0a07cac7712787bbce23d12f9306adb4781d873d1df6e16f7840fa37afec> 100 1379 100 1379 0 0 2952 0 --:--:-- --:--:-- --:--:-- 2952 nixpkgs> warning: creating lock file '"/nix/store/h76jxwqlc6wbzdki54kqif0mw1dd3mj1-nixpkgs/flake.lock"': nixpkgs> • Added input 'nixpkgs': nixpkgs> 'path:/nix/store/flb1gnwdximcqhjq9wsg01dn1w0rs8yk-source?lastModified=0&narHash=sha256-yDxtm0PESdgNetiJN5%2BMFxgubBcLDTiuSjjrJiyvsvM%3D' (1970-01-01) nixpkgs> building '/nix/store/iwnbq3qmfz04gzfdj058ly0wjjliy337-etc-fstab.drv' on nix-store.geninf.io:50051 etc-fstab> build-x86-01: building iwnbq3qmfz04gzfdj058ly0wjjliy337-etc-fstab.drv building '/nix/store/hk3w9vi65g3bsqkry9kl1iw1gq3x7a00-unit-resolvconf.service-disabled.drv' on nix-store.geninf.io:50051 unit-resolvconf.service-disabled> gi-build-x86-02: building hk3w9vi65g3bsqkry9kl1iw1gq3x7a00-unit-resolvconf.service-disabled.drv python3-3.13.7-env> gi-build-x86-02: building gs9hys8hiss18a04p9mkvp5ywj0wl4pb-python3-3.13.7-env.drv python3-3.13.7-env> created 223 symlinks in user environment building '/nix/store/zvzhilvnmkxjp3kc8018rqgd3qaidm9y-etc-sysctl.d-60-nixos.conf.drv' on nix-store.geninf.io:50051 etc-sysctl.d-60-nixos.conf> build-x86-01: building zvzhilvnmkxjp3kc8018rqgd3qaidm9y-etc-sysctl.d-60-nixos.conf.drv building '/nix/store/p4nscrdy2vbf3pgk67c1ddlfa6l42p4b-sha256-d18a5cc71b84bc4af394a31116bd3932b42241de70c77d2b76d69a314ec8aa12.drv' on nix-store.geninf.io:50051 sha256-d18a5cc71b84bc4af394a31116bd3932b42241de70c77d2b76d69a314ec8aa12> build-x86-01: building p4nscrdy2vbf3pgk67c1ddlfa6l42p4b-sha256-d18a5cc71b84bc4af394a31116bd3932b42241de70c77d2b76d69a314ec8aa12.drv building '/nix/store/xch18dlg8hgpbm4xfm8wbiw7zk8jyvw7-users-groups.json.drv' on nix-store.geninf.io:50051 users-groups.json> gi-build-x86-02: building xch18dlg8hgpbm4xfm8wbiw7zk8jyvw7-users-groups.json.drv sha256-d18a5cc71b84bc4af394a31116bd3932b42241de70c77d2b76d69a314ec8aa12> sha256-d18a5cc71b84bc4af394a31116bd3932b42241de70c77d2b76d69a314ec8aa12> trying https://registry.ollama.ai/v2/library/qwen3/blobs/sha256:d18a5cc71b84bc4af394a31116bd3932b42241de70c77d2b76d69a314ec8aa12 sha256-d18a5cc71b84bc4af394a31116bd3932b42241de70c77d2b76d69a314ec8aa12> % Total % Received % Xferd Average Speed Time Time Time Current sha256-d18a5cc71b84bc4af394a31116bd3932b42241de70c77d2b76d69a314ec8aa12> Dload Upload Total Spent Left Speed sha256-d18a5cc71b84bc4af394a31116bd3932b42241de70c77d2b76d69a314ec8aa12> 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 sha256-d18a5cc71b84bc4af394a31116bd3932b42241de70c77d2b76d69a314ec8aa12> 100 11338 100 11338 0 0 24741 0 --:--:-- --:--:-- --:--:-- 24741 building '/nix/store/5fzz3kvkvnrzwh412ihn66zfwnwdrvdq-X-Restart-Triggers-systemd-sysctl.drv' on nix-store.geninf.io:50051 X-Restart-Triggers-systemd-sysctl> build-x86-01: building 5fzz3kvkvnrzwh412ihn66zfwnwdrvdq-X-Restart-Triggers-systemd-sysctl.drv building '/nix/store/6mkzrf4pznldhpj4hbsw9ss2wmzs6mfv-test-driver-0.0.1.drv' on nix-store.geninf.io:50051 test-driver-0.0.1> build-x86-01: building 6mkzrf4pznldhpj4hbsw9ss2wmzs6mfv-test-driver-0.0.1.drv test-driver-0.0.1> Sourcing python-remove-tests-dir-hook test-driver-0.0.1> Sourcing python-catch-conflicts-hook.sh test-driver-0.0.1> Sourcing python-remove-bin-bytecode-hook.sh test-driver-0.0.1> Sourcing pypa-build-hook test-driver-0.0.1> Using pypaBuildPhase test-driver-0.0.1> Sourcing python-runtime-deps-check-hook test-driver-0.0.1> Using pythonRuntimeDepsCheckHook test-driver-0.0.1> Sourcing pypa-install-hook test-driver-0.0.1> Using pypaInstallPhase test-driver-0.0.1> Sourcing python-imports-check-hook.sh test-driver-0.0.1> Using pythonImportsCheckPhase test-driver-0.0.1> Sourcing python-namespaces-hook test-driver-0.0.1> Sourcing python-catch-conflicts-hook.sh test-driver-0.0.1> Running phase: unpackPhase test-driver-0.0.1> unpacking source archive /nix/store/6rl4z3k59k9h4kpxg5a6cdgpaj1h5pl4-container-test-driver building '/nix/store/avvwic10p483jk8xr757ny6pfaim9pg3-unit-systemd-sysctl.service.drv' on nix-store.geninf.io:50051 unit-systemd-sysctl.service> build-x86-01: building avvwic10p483jk8xr757ny6pfaim9pg3-unit-systemd-sysctl.service.drv test-driver-0.0.1> source root is container-test-driver test-driver-0.0.1> setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "container-test-driver/test_driver/py.typed" test-driver-0.0.1> Running phase: patchPhase test-driver-0.0.1> Running phase: updateAutotoolsGnuConfigScriptsPhase test-driver-0.0.1> Running phase: configurePhase test-driver-0.0.1> no configure script, doing nothing test-driver-0.0.1> Running phase: buildPhase test-driver-0.0.1> Executing pypaBuildPhase test-driver-0.0.1> Creating a wheel... test-driver-0.0.1> pypa build flags: --no-isolation --outdir dist/ --wheel test-driver-0.0.1> * Getting build dependencies for wheel... test-driver-0.0.1> running egg_info test-driver-0.0.1> creating nixos_test_driver.egg-info test-driver-0.0.1> writing nixos_test_driver.egg-info/PKG-INFO test-driver-0.0.1> writing dependency_links to nixos_test_driver.egg-info/dependency_links.txt test-driver-0.0.1> writing entry points to nixos_test_driver.egg-info/entry_points.txt test-driver-0.0.1> writing top-level names to nixos_test_driver.egg-info/top_level.txt test-driver-0.0.1> writing manifest file 'nixos_test_driver.egg-info/SOURCES.txt' test-driver-0.0.1> reading manifest file 'nixos_test_driver.egg-info/SOURCES.txt' test-driver-0.0.1> writing manifest file 'nixos_test_driver.egg-info/SOURCES.txt' test-driver-0.0.1> * Building wheel... test-driver-0.0.1> running bdist_wheel test-driver-0.0.1> running build test-driver-0.0.1> running build_py test-driver-0.0.1> creating build/lib/test_driver test-driver-0.0.1> copying test_driver/logger.py -> build/lib/test_driver test-driver-0.0.1> copying test_driver/__init__.py -> build/lib/test_driver test-driver-0.0.1> running egg_info test-driver-0.0.1> writing nixos_test_driver.egg-info/PKG-INFO test-driver-0.0.1> writing dependency_links to nixos_test_driver.egg-info/dependency_links.txt test-driver-0.0.1> writing entry points to nixos_test_driver.egg-info/entry_points.txt test-driver-0.0.1> writing top-level names to nixos_test_driver.egg-info/top_level.txt test-driver-0.0.1> reading manifest file 'nixos_test_driver.egg-info/SOURCES.txt' test-driver-0.0.1> writing manifest file 'nixos_test_driver.egg-info/SOURCES.txt' test-driver-0.0.1> copying test_driver/py.typed -> build/lib/test_driver test-driver-0.0.1> installing to build/bdist.linux-x86_64/wheel test-driver-0.0.1> running install test-driver-0.0.1> running install_lib test-driver-0.0.1> creating build/bdist.linux-x86_64/wheel test-driver-0.0.1> creating build/bdist.linux-x86_64/wheel/test_driver test-driver-0.0.1> copying build/lib/test_driver/logger.py -> build/bdist.linux-x86_64/wheel/./test_driver test-driver-0.0.1> copying build/lib/test_driver/py.typed -> build/bdist.linux-x86_64/wheel/./test_driver test-driver-0.0.1> copying build/lib/test_driver/__init__.py -> build/bdist.linux-x86_64/wheel/./test_driver test-driver-0.0.1> running install_egg_info test-driver-0.0.1> Copying nixos_test_driver.egg-info to build/bdist.linux-x86_64/wheel/./nixos_test_driver-0.0.0-py3.13.egg-info test-driver-0.0.1> running install_scripts test-driver-0.0.1> creating build/bdist.linux-x86_64/wheel/nixos_test_driver-0.0.0.dist-info/WHEEL test-driver-0.0.1> creating '/build/container-test-driver/dist/.tmp-t2ug6zn_/nixos_test_driver-0.0.0-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it test-driver-0.0.1> adding 'test_driver/__init__.py' test-driver-0.0.1> adding 'test_driver/logger.py' test-driver-0.0.1> adding 'test_driver/py.typed' test-driver-0.0.1> adding 'nixos_test_driver-0.0.0.dist-info/METADATA' test-driver-0.0.1> adding 'nixos_test_driver-0.0.0.dist-info/WHEEL' test-driver-0.0.1> adding 'nixos_test_driver-0.0.0.dist-info/entry_points.txt' test-driver-0.0.1> adding 'nixos_test_driver-0.0.0.dist-info/top_level.txt' test-driver-0.0.1> adding 'nixos_test_driver-0.0.0.dist-info/RECORD' test-driver-0.0.1> removing build/bdist.linux-x86_64/wheel test-driver-0.0.1> Successfully built nixos_test_driver-0.0.0-py3-none-any.whl test-driver-0.0.1> Finished creating a wheel... test-driver-0.0.1> Finished executing pypaBuildPhase test-driver-0.0.1> Running phase: pythonRuntimeDepsCheckHook test-driver-0.0.1> Executing pythonRuntimeDepsCheck test-driver-0.0.1> Checking runtime dependencies for nixos_test_driver-0.0.0-py3-none-any.whl test-driver-0.0.1> Finished executing pythonRuntimeDepsCheck test-driver-0.0.1> Running phase: installPhase test-driver-0.0.1> Executing pypaInstallPhase test-driver-0.0.1> Successfully installed nixos_test_driver-0.0.0-py3-none-any.whl test-driver-0.0.1> Finished executing pypaInstallPhase test-driver-0.0.1> Running phase: pythonOutputDistPhase test-driver-0.0.1> Executing pythonOutputDistPhase test-driver-0.0.1> Finished executing pythonOutputDistPhase test-driver-0.0.1> Running phase: fixupPhase test-driver-0.0.1> shrinking RPATHs of ELF executables and libraries in /nix/store/mfcd5wzj3l94hnrrhsl8i717q02pdf90-test-driver-0.0.1 test-driver-0.0.1> checking for references to /build/ in /nix/store/mfcd5wzj3l94hnrrhsl8i717q02pdf90-test-driver-0.0.1... test-driver-0.0.1> patching script interpreter paths in /nix/store/mfcd5wzj3l94hnrrhsl8i717q02pdf90-test-driver-0.0.1 test-driver-0.0.1> stripping (with command strip and flags -S -p) in /nix/store/mfcd5wzj3l94hnrrhsl8i717q02pdf90-test-driver-0.0.1/lib /nix/store/mfcd5wzj3l94hnrrhsl8i717q02pdf90-test-driver-0.0.1/bin test-driver-0.0.1> shrinking RPATHs of ELF executables and libraries in /nix/store/1dqaqkpnrkryazb1pa782c3a5pkjpk5p-test-driver-0.0.1-dist test-driver-0.0.1> checking for references to /build/ in /nix/store/1dqaqkpnrkryazb1pa782c3a5pkjpk5p-test-driver-0.0.1-dist... test-driver-0.0.1> patching script interpreter paths in /nix/store/1dqaqkpnrkryazb1pa782c3a5pkjpk5p-test-driver-0.0.1-dist test-driver-0.0.1> Rewriting #!/nix/store/829wb290i87wngxlh404klwxql5v18p4-python3-3.13.7/bin/python3.13 to #!/nix/store/829wb290i87wngxlh404klwxql5v18p4-python3-3.13.7 test-driver-0.0.1> wrapping `/nix/store/mfcd5wzj3l94hnrrhsl8i717q02pdf90-test-driver-0.0.1/bin/nixos-test-driver'... test-driver-0.0.1> Executing pythonRemoveTestsDir test-driver-0.0.1> Finished executing pythonRemoveTestsDir test-driver-0.0.1> Running phase: installCheckPhase test-driver-0.0.1> no Makefile or custom installCheckPhase, doing nothing test-driver-0.0.1> Running phase: pythonCatchConflictsPhase test-driver-0.0.1> Running phase: pythonRemoveBinBytecodePhase test-driver-0.0.1> Running phase: pythonImportsCheckPhase test-driver-0.0.1> Executing pythonImportsCheckPhase building '/nix/store/c3124989vkdkwfx9c96w31l007jx9z20-unit-nix-daemon.service.drv' on nix-store.geninf.io:50051 unit-nix-daemon.service> gi-build-x86-02: building c3124989vkdkwfx9c96w31l007jx9z20-unit-nix-daemon.service.drv building '/nix/store/zyjr0fvkigrhk2d0ir5ap9mhydq0pr3i-unit-suid-sgid-wrappers.service-disabled.drv' on nix-store.geninf.io:50051 unit-suid-sgid-wrappers.service-disabled> web01: building zyjr0fvkigrhk2d0ir5ap9mhydq0pr3i-unit-suid-sgid-wrappers.service-disabled.drv building '/nix/store/nm9a79vlvifsad3w53yp7zyyrrl19h22-sha256-b72accf9724e93698c57cbd3b1af2d3341b3d05ec2089d86d273d97964853cd2.drv' on nix-store.geninf.io:50051 sha256-b72accf9724e93698c57cbd3b1af2d3341b3d05ec2089d86d273d97964853cd2> web01: building nm9a79vlvifsad3w53yp7zyyrrl19h22-sha256-b72accf9724e93698c57cbd3b1af2d3341b3d05ec2089d86d273d97964853cd2.drv building '/nix/store/d8j2j2za92sldvlsah9mmpkvwcvrh7z9-systemd-user.pam.drv' on nix-store.geninf.io:50051 systemd-user.pam> web01: building d8j2j2za92sldvlsah9mmpkvwcvrh7z9-systemd-user.pam.drv building '/nix/store/sv8w0536gpvvadbbjpqkqxmiz02imhx7-sha256-0914c7781e001948488d937994217538375b4fd8c1466c5e7a625221abd3ea7a.drv' on nix-store.geninf.io:50051 sha256-0914c7781e001948488d937994217538375b4fd8c1466c5e7a625221abd3ea7a> web01: building sv8w0536gpvvadbbjpqkqxmiz02imhx7-sha256-0914c7781e001948488d937994217538375b4fd8c1466c5e7a625221abd3ea7a.drv sha256-b72accf9724e93698c57cbd3b1af2d3341b3d05ec2089d86d273d97964853cd2> sha256-b72accf9724e93698c57cbd3b1af2d3341b3d05ec2089d86d273d97964853cd2> trying https://registry.ollama.ai/v2/library/qwen3/blobs/sha256:b72accf9724e93698c57cbd3b1af2d3341b3d05ec2089d86d273d97964853cd2 sha256-b72accf9724e93698c57cbd3b1af2d3341b3d05ec2089d86d273d97964853cd2> % Total % Received % Xferd Average Speed Time Time Time Current sha256-b72accf9724e93698c57cbd3b1af2d3341b3d05ec2089d86d273d97964853cd2> Dload Upload Total Spent Left Speed sha256-b72accf9724e93698c57cbd3b1af2d3341b3d05ec2089d86d273d97964853cd2> 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 sha256-0914c7781e001948488d937994217538375b4fd8c1466c5e7a625221abd3ea7a> sha256-0914c7781e001948488d937994217538375b4fd8c1466c5e7a625221abd3ea7a> trying https://registry.ollama.ai/v2/library/qwen3/blobs/sha256:0914c7781e001948488d937994217538375b4fd8c1466c5e7a625221abd3ea7a sha256-0914c7781e001948488d937994217538375b4fd8c1466c5e7a625221abd3ea7a> % Total % Received % Xferd Average Speed Time Time Time Current sha256-0914c7781e001948488d937994217538375b4fd8c1466c5e7a625221abd3ea7a> Dload Upload Total Spent Left Speed sha256-b72accf9724e93698c57cbd3b1af2d3341b3d05ec2089d86d273d97964853cd2> 100 487 100 487 0 0 1261 0 --:--:-- --:--:-- --:--:-- 1261 sha256-0914c7781e001948488d937994217538375b4fd8c1466c5e7a625221abd3ea7a> 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 sha256-0914c7781e001948488d937994217538375b4fd8c1466c5e7a625221abd3ea7a> 100 119 100 119 0 0 207 0 --:--:-- --:--:-- --:--:-- 207 sha256-85e4a5b7b8ef0e48af0e8658f5aaab9c2324c76c1641493f4d1e25fce54b18b9> 100 2381M 100 2381M 0 0 81.7M 0 0:00:29 0:00:29 --:--:-- 103M building '/nix/store/bxkybv1npy7jmn1dfmzalafbqwid0gmg-clan-cli-source.drv' on nix-store.geninf.io:50051 clan-cli-source> build-x86-01: building bxkybv1npy7jmn1dfmzalafbqwid0gmg-clan-cli-source.drv building '/nix/store/xynisxvrs9425q9r7h5njahdnajd9isk-clan-cli-source.drv' on nix-store.geninf.io:50051 clan-cli-source> build-x86-01: building xynisxvrs9425q9r7h5njahdnajd9isk-clan-cli-source.drv building '/nix/store/pllmd3315cyd6ildk0hxbgwi2nn76962-clan-cli-source-with-llm.drv' on nix-store.geninf.io:50051 clan-cli-source-with-llm> build-x86-01: building pllmd3315cyd6ildk0hxbgwi2nn76962-clan-cli-source-with-llm.drv building '/nix/store/yyrsn80vdixgm3kby2cl5k3snbsq5lfy-testScript.drv' on nix-store.geninf.io:50051 testScript> build-x86-01: building yyrsn80vdixgm3kby2cl5k3snbsq5lfy-testScript.drv building '/nix/store/sfxizn1wsms69fhfm9vn9l9fxrhsmwxa-python3.13-nixos-test-lib-1.0.0.drv' on nix-store.geninf.io:50051 python3.13-nixos-test-lib-1.0.0> gi-build-x86-02: building sfxizn1wsms69fhfm9vn9l9fxrhsmwxa-python3.13-nixos-test-lib-1.0.0.drv python3.13-nixos-test-lib-1.0.0> Sourcing python-remove-tests-dir-hook python3.13-nixos-test-lib-1.0.0> Sourcing python-catch-conflicts-hook.sh python3.13-nixos-test-lib-1.0.0> Sourcing python-remove-bin-bytecode-hook.sh python3.13-nixos-test-lib-1.0.0> Sourcing pypa-build-hook python3.13-nixos-test-lib-1.0.0> Using pypaBuildPhase python3.13-nixos-test-lib-1.0.0> Sourcing python-runtime-deps-check-hook python3.13-nixos-test-lib-1.0.0> Using pythonRuntimeDepsCheckHook python3.13-nixos-test-lib-1.0.0> Sourcing pypa-install-hook python3.13-nixos-test-lib-1.0.0> Using pypaInstallPhase python3.13-nixos-test-lib-1.0.0> Sourcing python-imports-check-hook.sh python3.13-nixos-test-lib-1.0.0> Using pythonImportsCheckPhase python3.13-nixos-test-lib-1.0.0> Sourcing python-namespaces-hook python3.13-nixos-test-lib-1.0.0> Sourcing python-catch-conflicts-hook.sh python3.13-nixos-test-lib-1.0.0> Running phase: unpackPhase python3.13-nixos-test-lib-1.0.0> unpacking source archive /nix/store/wrpvbvfzwhxyq1ll73li70s5ngmrr7r1-source python3.13-nixos-test-lib-1.0.0> source root is source python3.13-nixos-test-lib-1.0.0> setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "source/pyproject.toml" python3.13-nixos-test-lib-1.0.0> Running phase: patchPhase python3.13-nixos-test-lib-1.0.0> substituteStream() in derivation python3.13-nixos-test-lib-1.0.0: WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. (file 'nixos_test_lib/nix_setup.py') python3.13-nixos-test-lib-1.0.0> Running phase: updateAutotoolsGnuConfigScriptsPhase python3.13-nixos-test-lib-1.0.0> Running phase: configurePhase python3.13-nixos-test-lib-1.0.0> no configure script, doing nothing python3.13-nixos-test-lib-1.0.0> Running phase: buildPhase python3.13-nixos-test-lib-1.0.0> Executing pypaBuildPhase python3.13-nixos-test-lib-1.0.0> Creating a wheel... python3.13-nixos-test-lib-1.0.0> pypa build flags: --no-isolation --outdir dist/ --wheel python3.13-nixos-test-lib-1.0.0> * Getting build dependencies for wheel... python3.13-nixos-test-lib-1.0.0> running egg_info python3.13-nixos-test-lib-1.0.0> creating nixos_test_lib.egg-info python3.13-nixos-test-lib-1.0.0> writing nixos_test_lib.egg-info/PKG-INFO python3.13-nixos-test-lib-1.0.0> writing dependency_links to nixos_test_lib.egg-info/dependency_links.txt python3.13-nixos-test-lib-1.0.0> writing requirements to nixos_test_lib.egg-info/requires.txt python3.13-nixos-test-lib-1.0.0> writing top-level names to nixos_test_lib.egg-info/top_level.txt python3.13-nixos-test-lib-1.0.0> writing manifest file 'nixos_test_lib.egg-info/SOURCES.txt' python3.13-nixos-test-lib-1.0.0> reading manifest file 'nixos_test_lib.egg-info/SOURCES.txt' python3.13-nixos-test-lib-1.0.0> writing manifest file 'nixos_test_lib.egg-info/SOURCES.txt' python3.13-nixos-test-lib-1.0.0> * Building wheel... python3.13-nixos-test-lib-1.0.0> running bdist_wheel python3.13-nixos-test-lib-1.0.0> running build python3.13-nixos-test-lib-1.0.0> running build_py python3.13-nixos-test-lib-1.0.0> creating build/lib/nixos_test_lib python3.13-nixos-test-lib-1.0.0> copying nixos_test_lib/ssh.py -> build/lib/nixos_test_lib python3.13-nixos-test-lib-1.0.0> copying nixos_test_lib/__init__.py -> build/lib/nixos_test_lib python3.13-nixos-test-lib-1.0.0> copying nixos_test_lib/port.py -> build/lib/nixos_test_lib python3.13-nixos-test-lib-1.0.0> copying nixos_test_lib/nix_setup.py -> build/lib/nixos_test_lib python3.13-nixos-test-lib-1.0.0> running egg_info python3.13-nixos-test-lib-1.0.0> writing nixos_test_lib.egg-info/PKG-INFO python3.13-nixos-test-lib-1.0.0> writing dependency_links to nixos_test_lib.egg-info/dependency_links.txt python3.13-nixos-test-lib-1.0.0> writing requirements to nixos_test_lib.egg-info/requires.txt python3.13-nixos-test-lib-1.0.0> writing top-level names to nixos_test_lib.egg-info/top_level.txt python3.13-nixos-test-lib-1.0.0> reading manifest file 'nixos_test_lib.egg-info/SOURCES.txt' python3.13-nixos-test-lib-1.0.0> writing manifest file 'nixos_test_lib.egg-info/SOURCES.txt' python3.13-nixos-test-lib-1.0.0> copying nixos_test_lib/py.typed -> build/lib/nixos_test_lib python3.13-nixos-test-lib-1.0.0> installing to build/bdist.linux-x86_64/wheel python3.13-nixos-test-lib-1.0.0> running install python3.13-nixos-test-lib-1.0.0> running install_lib python3.13-nixos-test-lib-1.0.0> creating build/bdist.linux-x86_64/wheel python3.13-nixos-test-lib-1.0.0> creating build/bdist.linux-x86_64/wheel/nixos_test_lib python3.13-nixos-test-lib-1.0.0> copying build/lib/nixos_test_lib/nix_setup.py -> build/bdist.linux-x86_64/wheel/./nixos_test_lib python3.13-nixos-test-lib-1.0.0> copying build/lib/nixos_test_lib/py.typed -> build/bdist.linux-x86_64/wheel/./nixos_test_lib python3.13-nixos-test-lib-1.0.0> copying build/lib/nixos_test_lib/__init__.py -> build/bdist.linux-x86_64/wheel/./nixos_test_lib python3.13-nixos-test-lib-1.0.0> copying build/lib/nixos_test_lib/ssh.py -> build/bdist.linux-x86_64/wheel/./nixos_test_lib python3.13-nixos-test-lib-1.0.0> copying build/lib/nixos_test_lib/port.py -> build/bdist.linux-x86_64/wheel/./nixos_test_lib python3.13-nixos-test-lib-1.0.0> running install_egg_info python3.13-nixos-test-lib-1.0.0> Copying nixos_test_lib.egg-info to build/bdist.linux-x86_64/wheel/./nixos_test_lib-1.0.0-py3.13.egg-info python3.13-nixos-test-lib-1.0.0> running install_scripts python3.13-nixos-test-lib-1.0.0> creating build/bdist.linux-x86_64/wheel/nixos_test_lib-1.0.0.dist-info/WHEEL python3.13-nixos-test-lib-1.0.0> creating '/build/source/dist/.tmp-jlz1e40r/nixos_test_lib-1.0.0-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it python3.13-nixos-test-lib-1.0.0> adding 'nixos_test_lib/__init__.py' python3.13-nixos-test-lib-1.0.0> adding 'nixos_test_lib/nix_setup.py' python3.13-nixos-test-lib-1.0.0> adding 'nixos_test_lib/port.py' python3.13-nixos-test-lib-1.0.0> adding 'nixos_test_lib/py.typed' python3.13-nixos-test-lib-1.0.0> adding 'nixos_test_lib/ssh.py' python3.13-nixos-test-lib-1.0.0> adding 'nixos_test_lib-1.0.0.dist-info/METADATA' python3.13-nixos-test-lib-1.0.0> adding 'nixos_test_lib-1.0.0.dist-info/WHEEL' python3.13-nixos-test-lib-1.0.0> adding 'nixos_test_lib-1.0.0.dist-info/top_level.txt' python3.13-nixos-test-lib-1.0.0> adding 'nixos_test_lib-1.0.0.dist-info/RECORD' python3.13-nixos-test-lib-1.0.0> removing build/bdist.linux-x86_64/wheel python3.13-nixos-test-lib-1.0.0> Successfully built nixos_test_lib-1.0.0-py3-none-any.whl python3.13-nixos-test-lib-1.0.0> Finished creating a wheel... python3.13-nixos-test-lib-1.0.0> Finished executing pypaBuildPhase python3.13-nixos-test-lib-1.0.0> Running phase: pythonRuntimeDepsCheckHook python3.13-nixos-test-lib-1.0.0> Executing pythonRuntimeDepsCheck python3.13-nixos-test-lib-1.0.0> Checking runtime dependencies for nixos_test_lib-1.0.0-py3-none-any.whl python3.13-nixos-test-lib-1.0.0> Finished executing pythonRuntimeDepsCheck python3.13-nixos-test-lib-1.0.0> Running phase: installPhase python3.13-nixos-test-lib-1.0.0> Executing pypaInstallPhase python3.13-nixos-test-lib-1.0.0> Successfully installed nixos_test_lib-1.0.0-py3-none-any.whl python3.13-nixos-test-lib-1.0.0> Finished executing pypaInstallPhase python3.13-nixos-test-lib-1.0.0> Running phase: pythonOutputDistPhase python3.13-nixos-test-lib-1.0.0> Executing pythonOutputDistPhase python3.13-nixos-test-lib-1.0.0> Finished executing pythonOutputDistPhase python3.13-nixos-test-lib-1.0.0> Running phase: fixupPhase python3.13-nixos-test-lib-1.0.0> shrinking RPATHs of ELF executables and libraries in /nix/store/v5s27l1fqi5bany83yvdakdr29bylls6-python3.13-nixos-test-lib-1.0.0 python3.13-nixos-test-lib-1.0.0> checking for references to /build/ in /nix/store/v5s27l1fqi5bany83yvdakdr29bylls6-python3.13-nixos-test-lib-1.0.0... python3.13-nixos-test-lib-1.0.0> patching script interpreter paths in /nix/store/v5s27l1fqi5bany83yvdakdr29bylls6-python3.13-nixos-test-lib-1.0.0 python3.13-nixos-test-lib-1.0.0> stripping (with command strip and flags -S -p) in /nix/store/v5s27l1fqi5bany83yvdakdr29bylls6-python3.13-nixos-test-lib-1.0.0/lib python3.13-nixos-test-lib-1.0.0> shrinking RPATHs of ELF executables and libraries in /nix/store/w6rpqn2098yzdlp2xrx26b56cjvqpfj2-python3.13-nixos-test-lib-1.0.0-dist python3.13-nixos-test-lib-1.0.0> checking for references to /build/ in /nix/store/w6rpqn2098yzdlp2xrx26b56cjvqpfj2-python3.13-nixos-test-lib-1.0.0-dist... python3.13-nixos-test-lib-1.0.0> patching script interpreter paths in /nix/store/w6rpqn2098yzdlp2xrx26b56cjvqpfj2-python3.13-nixos-test-lib-1.0.0-dist python3.13-nixos-test-lib-1.0.0> Executing pythonRemoveTestsDir python3.13-nixos-test-lib-1.0.0> Finished executing pythonRemoveTestsDir python3.13-nixos-test-lib-1.0.0> Running phase: pythonCatchConflictsPhase python3.13-nixos-test-lib-1.0.0> Running phase: pythonRemoveBinBytecodePhase python3.13-nixos-test-lib-1.0.0> Running phase: pythonImportsCheckPhase python3.13-nixos-test-lib-1.0.0> Executing pythonImportsCheckPhase building '/nix/store/s1gp5chsrcf69sczw2nzcphk564dhcsz-ollama-qwen3-4b-instruct-1.0.drv' on nix-store.geninf.io:50051 ollama-qwen3-4b-instruct-1.0> gi-build-x86-01: building s1gp5chsrcf69sczw2nzcphk564dhcsz-ollama-qwen3-4b-instruct-1.0.drv ollama-qwen3-4b-instruct-1.0> Running phase: patchPhase ollama-qwen3-4b-instruct-1.0> Running phase: updateAutotoolsGnuConfigScriptsPhase ollama-qwen3-4b-instruct-1.0> Running phase: configurePhase ollama-qwen3-4b-instruct-1.0> no configure script, doing nothing ollama-qwen3-4b-instruct-1.0> Running phase: buildPhase ollama-qwen3-4b-instruct-1.0> Running phase: installPhase ollama-qwen3-4b-instruct-1.0> Running phase: fixupPhase ollama-qwen3-4b-instruct-1.0> shrinking RPATHs of ELF executables and libraries in /nix/store/71nmiysv78qly2ah7pnafgmpl1il2kw4-ollama-qwen3-4b-instruct-1.0 ollama-qwen3-4b-instruct-1.0> checking for references to /build/ in /nix/store/71nmiysv78qly2ah7pnafgmpl1il2kw4-ollama-qwen3-4b-instruct-1.0... ollama-qwen3-4b-instruct-1.0> patching script interpreter paths in /nix/store/71nmiysv78qly2ah7pnafgmpl1il2kw4-ollama-qwen3-4b-instruct-1.0 building '/nix/store/qny0gqw9vzcv08457bsixlb9qy012v2z-set-environment.drv' on nix-store.geninf.io:50051 set-environment> gi-build-x86-01: building qny0gqw9vzcv08457bsixlb9qy012v2z-set-environment.drv building '/nix/store/k1wfa4ggknvwm7xnjra2fpk75v0sbp3h-clan-cli.drv' on nix-store.geninf.io:50051 clan-cli> build-x86-01: building k1wfa4ggknvwm7xnjra2fpk75v0sbp3h-clan-cli.drv clan-cli> Sourcing python-remove-tests-dir-hook clan-cli> Sourcing python-catch-conflicts-hook.sh clan-cli> Sourcing python-remove-bin-bytecode-hook.sh clan-cli> Sourcing pypa-build-hook clan-cli> Using pypaBuildPhase clan-cli> Sourcing python-runtime-deps-check-hook clan-cli> Using pythonRuntimeDepsCheckHook clan-cli> Sourcing pypa-install-hook clan-cli> Using pypaInstallPhase clan-cli> Sourcing python-imports-check-hook.sh clan-cli> Using pythonImportsCheckPhase clan-cli> Sourcing python-namespaces-hook clan-cli> Sourcing python-catch-conflicts-hook.sh clan-cli> Running phase: unpackPhase clan-cli> unpacking source archive /nix/store/qzpays3qxzdb7qv10nbabb30zg8yzll2-clan-cli-source clan-cli> source root is clan-cli-source clan-cli> setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "clan-cli-source/shell.nix" clan-cli> Running phase: patchPhase clan-cli> Running phase: updateAutotoolsGnuConfigScriptsPhase clan-cli> Running phase: configurePhase clan-cli> no configure script, doing nothing clan-cli> Running phase: buildPhase clan-cli> Executing pypaBuildPhase clan-cli> Creating a wheel... clan-cli> pypa build flags: --no-isolation --outdir dist/ --wheel clan-cli> * Getting build dependencies for wheel... clan-cli> /nix/store/nf0av6mk9w9sx1pn88ymhws2y5ciq6kk-python3-3.13.7-env/lib/python3.13/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated clan-cli> !! clan-cli> clan-cli> ******************************************************************************** clan-cli> Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). clan-cli> clan-cli> This deprecation is overdue, please update your project and remove deprecated clan-cli> calls to avoid build errors in the future. clan-cli> clan-cli> See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. clan-cli> ******************************************************************************** clan-cli> clan-cli> !! clan-cli> corresp(dist, value, root_dir) clan-cli> running egg_info clan-cli> creating clan.egg-info clan-cli> writing clan.egg-info/PKG-INFO clan-cli> writing dependency_links to clan.egg-info/dependency_links.txt clan-cli> writing entry points to clan.egg-info/entry_points.txt clan-cli> writing top-level names to clan.egg-info/top_level.txt clan-cli> writing manifest file 'clan.egg-info/SOURCES.txt' clan-cli> reading manifest file 'clan.egg-info/SOURCES.txt' clan-cli> writing manifest file 'clan.egg-info/SOURCES.txt' clan-cli> * Building wheel... clan-cli> /nix/store/nf0av6mk9w9sx1pn88ymhws2y5ciq6kk-python3-3.13.7-env/lib/python3.13/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated clan-cli> !! clan-cli> clan-cli> ******************************************************************************** clan-cli> Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). clan-cli> clan-cli> This deprecation is overdue, please update your project and remove deprecated clan-cli> calls to avoid build errors in the future. clan-cli> clan-cli> See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. clan-cli> ******************************************************************************** clan-cli> clan-cli> !! clan-cli> corresp(dist, value, root_dir) clan-cli> running bdist_wheel clan-cli> running build clan-cli> running build_py clan-cli> creating build/lib/clan_lib clan-cli> copying clan_lib/__init__.py -> build/lib/clan_lib clan-cli> copying clan_lib/conftest.py -> build/lib/clan_lib clan-cli> creating build/lib/clan_cli clan-cli> copying clan_cli/select.py -> build/lib/clan_cli clan-cli> copying clan_cli/completions.py -> build/lib/clan_cli clan-cli> copying clan_cli/__main__.py -> build/lib/clan_cli clan-cli> copying clan_cli/__init__.py -> build/lib/clan_cli clan-cli> copying clan_cli/hyperlink.py -> build/lib/clan_cli clan-cli> copying clan_cli/cli.py -> build/lib/clan_cli clan-cli> copying clan_cli/completions_test.py -> build/lib/clan_cli clan-cli> copying clan_cli/arg_actions.py -> build/lib/clan_cli clan-cli> copying clan_cli/conftest.py -> build/lib/clan_cli clan-cli> copying clan_cli/profiler.py -> build/lib/clan_cli clan-cli> creating build/lib/clan_lib/dirs clan-cli> copying clan_lib/dirs/__init__.py -> build/lib/clan_lib/dirs clan-cli> copying clan_lib/dirs/dirs_test.py -> build/lib/clan_lib/dirs clan-cli> creating build/lib/clan_lib/bwrap clan-cli> copying clan_lib/bwrap/__init__.py -> build/lib/clan_lib/bwrap clan-cli> creating build/lib/clan_lib/sandbox_exec clan-cli> copying clan_lib/sandbox_exec/__init__.py -> build/lib/clan_lib/sandbox_exec clan-cli> creating build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/delete.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/machines.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/generations.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/actions.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/update.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/test_suggestions.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/morph.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/list.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/suggestions.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/hardware.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/actions_test.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/install.py -> build/lib/clan_lib/machines clan-cli> copying clan_lib/machines/__init__.py -> build/lib/clan_lib/machines clan-cli> creating build/lib/clan_lib/templates clan-cli> copying clan_lib/templates/template_url.py -> build/lib/clan_lib/templates clan-cli> copying clan_lib/templates/filesystem.py -> build/lib/clan_lib/templates clan-cli> copying clan_lib/templates/__init__.py -> build/lib/clan_lib/templates clan-cli> copying clan_lib/templates/handler.py -> build/lib/clan_lib/templates clan-cli> copying clan_lib/templates/disk.py -> build/lib/clan_lib/templates clan-cli> copying clan_lib/templates/template_url_test.py -> build/lib/clan_lib/templates clan-cli> creating build/lib/clan_lib/nix_models clan-cli> copying clan_lib/nix_models/clan.py -> build/lib/clan_lib/nix_models clan-cli> creating build/lib/clan_lib/errors clan-cli> copying clan_lib/errors/__init__.py -> build/lib/clan_lib/errors clan-cli> creating build/lib/clan_lib/backups clan-cli> copying clan_lib/backups/list.py -> build/lib/clan_lib/backups clan-cli> copying clan_lib/backups/__init__.py -> build/lib/clan_lib/backups clan-cli> copying clan_lib/backups/create.py -> build/lib/clan_lib/backups clan-cli> copying clan_lib/backups/restore.py -> build/lib/clan_lib/backups clan-cli> creating build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/remote.py -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/host_key.py -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/localhost.py -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/create_test.py -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/socks_wrapper.py -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/upload.py -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/localhost_test.py -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/remote_test.py -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/__init__.py -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/host.py -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/create.py -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/ssh/sudo_askpass_proxy.py -> build/lib/clan_lib/ssh clan-cli> creating build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/utils.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/schemas.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/container_test.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/prompts.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/endpoints.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/phases.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/llm_types.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/test_process_chat_turn.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/service.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/llm_test.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/__init__.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/trace.py -> build/lib/clan_lib/llm clan-cli> copying clan_lib/llm/orchestrator.py -> build/lib/clan_lib/llm clan-cli> creating build/lib/clan_lib/cmd clan-cli> copying clan_lib/cmd/__init__.py -> build/lib/clan_lib/cmd clan-cli> creating build/lib/clan_lib/services clan-cli> copying clan_lib/services/modules.py -> build/lib/clan_lib/services clan-cli> copying clan_lib/services/modules_test.py -> build/lib/clan_lib/services clan-cli> creating build/lib/clan_lib/flash clan-cli> copying clan_lib/flash/test_list.py -> build/lib/clan_lib/flash clan-cli> copying clan_lib/flash/list.py -> build/lib/clan_lib/flash clan-cli> copying clan_lib/flash/automount.py -> build/lib/clan_lib/flash clan-cli> copying clan_lib/flash/__init__.py -> build/lib/clan_lib/flash clan-cli> copying clan_lib/flash/flash.py -> build/lib/clan_lib/flash clan-cli> creating build/lib/clan_lib/metrics clan-cli> copying clan_lib/metrics/version.py -> build/lib/clan_lib/metrics clan-cli> copying clan_lib/metrics/telegraf.py -> build/lib/clan_lib/metrics clan-cli> copying clan_lib/metrics/__init__.py -> build/lib/clan_lib/metrics clan-cli> creating build/lib/clan_lib/validator clan-cli> copying clan_lib/validator/hostname.py -> build/lib/clan_lib/validator clan-cli> creating build/lib/clan_lib/tags clan-cli> copying clan_lib/tags/list_test.py -> build/lib/clan_lib/tags clan-cli> copying clan_lib/tags/list.py -> build/lib/clan_lib/tags clan-cli> copying clan_lib/tags/__init__.py -> build/lib/clan_lib/tags clan-cli> creating build/lib/clan_lib/network clan-cli> copying clan_lib/network/network_test.py -> build/lib/clan_lib/network clan-cli> copying clan_lib/network/check.py -> build/lib/clan_lib/network clan-cli> copying clan_lib/network/network.py -> build/lib/clan_lib/network clan-cli> copying clan_lib/network/direct.py -> build/lib/clan_lib/network clan-cli> copying clan_lib/network/__init__.py -> build/lib/clan_lib/network clan-cli> copying clan_lib/network/qr_code.py -> build/lib/clan_lib/network clan-cli> creating build/lib/clan_lib/tests clan-cli> copying clan_lib/tests/test_create.py -> build/lib/clan_lib/tests clan-cli> copying clan_lib/tests/__init__.py -> build/lib/clan_lib/tests clan-cli> creating build/lib/clan_lib/locked_open clan-cli> copying clan_lib/locked_open/__init__.py -> build/lib/clan_lib/locked_open clan-cli> creating build/lib/clan_lib/async_run clan-cli> copying clan_lib/async_run/__init__.py -> build/lib/clan_lib/async_run clan-cli> creating build/lib/clan_lib/nix clan-cli> copying clan_lib/nix/__init__.py -> build/lib/clan_lib/nix clan-cli> creating build/lib/clan_lib/api clan-cli> copying clan_lib/api/directory_test.py -> build/lib/clan_lib/api clan-cli> copying clan_lib/api/type_to_jsonschema.py -> build/lib/clan_lib/api clan-cli> copying clan_lib/api/__init__.py -> build/lib/clan_lib/api clan-cli> copying clan_lib/api/tasks.py -> build/lib/clan_lib/api clan-cli> copying clan_lib/api/cli.py -> build/lib/clan_lib/api clan-cli> copying clan_lib/api/directory.py -> build/lib/clan_lib/api clan-cli> copying clan_lib/api/mdns_discovery.py -> build/lib/clan_lib/api clan-cli> copying clan_lib/api/serde.py -> build/lib/clan_lib/api clan-cli> copying clan_lib/api/serde_serialize_test.py -> build/lib/clan_lib/api clan-cli> copying clan_lib/api/type_to_jsonschema_test.py -> build/lib/clan_lib/api clan-cli> copying clan_lib/api/serde_deserialize_test.py -> build/lib/clan_lib/api clan-cli> creating build/lib/clan_lib/log_manager clan-cli> copying clan_lib/log_manager/api.py -> build/lib/clan_lib/log_manager clan-cli> copying clan_lib/log_manager/test_log_manager.py -> build/lib/clan_lib/log_manager clan-cli> copying clan_lib/log_manager/test_url_encoding.py -> build/lib/clan_lib/log_manager clan-cli> copying clan_lib/log_manager/__init__.py -> build/lib/clan_lib/log_manager clan-cli> creating build/lib/clan_lib/persist clan-cli> copying clan_lib/persist/validate.py -> build/lib/clan_lib/persist clan-cli> copying clan_lib/persist/path_utils_test.py -> build/lib/clan_lib/persist clan-cli> copying clan_lib/persist/write_rules.py -> build/lib/clan_lib/persist clan-cli> copying clan_lib/persist/inventory_store_test.py -> build/lib/clan_lib/persist clan-cli> copying clan_lib/persist/introspection.py -> build/lib/clan_lib/persist clan-cli> copying clan_lib/persist/path_utils.py -> build/lib/clan_lib/persist clan-cli> copying clan_lib/persist/inventory_store.py -> build/lib/clan_lib/persist clan-cli> copying clan_lib/persist/patch_engine.py -> build/lib/clan_lib/persist clan-cli> copying clan_lib/persist/patch_engine_test.py -> build/lib/clan_lib/persist clan-cli> copying clan_lib/persist/__init__.py -> build/lib/clan_lib/persist clan-cli> copying clan_lib/persist/write_rules_test.py -> build/lib/clan_lib/persist clan-cli> creating build/lib/clan_lib/jsonrpc clan-cli> copying clan_lib/jsonrpc/__init__.py -> build/lib/clan_lib/jsonrpc clan-cli> creating build/lib/clan_lib/import_utils clan-cli> copying clan_lib/import_utils/import_utils_test.py -> build/lib/clan_lib/import_utils clan-cli> copying clan_lib/import_utils/__init__.py -> build/lib/clan_lib/import_utils clan-cli> creating build/lib/clan_lib/colors clan-cli> copying clan_lib/colors/__init__.py -> build/lib/clan_lib/colors clan-cli> creating build/lib/clan_lib/vars clan-cli> copying clan_lib/vars/generate.py -> build/lib/clan_lib/vars clan-cli> copying clan_lib/vars/__init__.py -> build/lib/clan_lib/vars clan-cli> creating build/lib/clan_lib/custom_logger clan-cli> copying clan_lib/custom_logger/__init__.py -> build/lib/clan_lib/custom_logger clan-cli> creating build/lib/clan_lib/service_runner clan-cli> copying clan_lib/service_runner/container_test.py -> build/lib/clan_lib/service_runner clan-cli> copying clan_lib/service_runner/protocols.py -> build/lib/clan_lib/service_runner clan-cli> copying clan_lib/service_runner/__init__.py -> build/lib/clan_lib/service_runner clan-cli> copying clan_lib/service_runner/systemd_user.py -> build/lib/clan_lib/service_runner clan-cli> creating build/lib/clan_lib/fixtures clan-cli> copying clan_lib/fixtures/flake_hooks.py -> build/lib/clan_lib/fixtures clan-cli> creating build/lib/clan_lib/clan clan-cli> copying clan_lib/clan/check.py -> build/lib/clan_lib/clan clan-cli> copying clan_lib/clan/check_test.py -> build/lib/clan_lib/clan clan-cli> copying clan_lib/clan/update.py -> build/lib/clan_lib/clan clan-cli> copying clan_lib/clan/test_create.py -> build/lib/clan_lib/clan clan-cli> copying clan_lib/clan/get_test.py -> build/lib/clan_lib/clan clan-cli> copying clan_lib/clan/__init__.py -> build/lib/clan_lib/clan clan-cli> copying clan_lib/clan/get.py -> build/lib/clan_lib/clan clan-cli> copying clan_lib/clan/create.py -> build/lib/clan_lib/clan clan-cli> creating build/lib/clan_lib/flake clan-cli> copying clan_lib/flake/flake_test.py -> build/lib/clan_lib/flake clan-cli> copying clan_lib/flake/__init__.py -> build/lib/clan_lib/flake clan-cli> copying clan_lib/flake/flake_cache_test.py -> build/lib/clan_lib/flake clan-cli> copying clan_lib/flake/flake.py -> build/lib/clan_lib/flake clan-cli> creating build/lib/clan_lib/git clan-cli> copying clan_lib/git/__init__.py -> build/lib/clan_lib/git clan-cli> creating build/lib/clan_lib/bwrap/tests clan-cli> copying clan_lib/bwrap/tests/test_bwrap.py -> build/lib/clan_lib/bwrap/tests clan-cli> creating build/lib/clan_lib/sandbox_exec/tests clan-cli> copying clan_lib/sandbox_exec/tests/test_sandbox_exec.py -> build/lib/clan_lib/sandbox_exec/tests clan-cli> creating build/lib/clan_lib/network/tor clan-cli> copying clan_lib/network/tor/lib.py -> build/lib/clan_lib/network/tor clan-cli> copying clan_lib/network/tor/__init__.py -> build/lib/clan_lib/network/tor clan-cli> creating build/lib/clan_lib/network/zerotier clan-cli> copying clan_lib/network/zerotier/lib.py -> build/lib/clan_lib/network/zerotier clan-cli> copying clan_lib/network/zerotier/__init__.py -> build/lib/clan_lib/network/zerotier clan-cli> creating build/lib/clan_lib/fixtures/flakes clan-cli> copying clan_lib/fixtures/flakes/flakes.py -> build/lib/clan_lib/fixtures/flakes clan-cli> creating build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/list_test.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/delete.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/generations.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/update.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/morph.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/list.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/machines_test.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/hardware.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/hardware_test.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/install.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/__init__.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/cli.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/create.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/update_test.py -> build/lib/clan_cli/machines clan-cli> copying clan_cli/machines/types.py -> build/lib/clan_cli/machines clan-cli> creating build/lib/clan_cli/templates clan-cli> copying clan_cli/templates/list_test.py -> build/lib/clan_cli/templates clan-cli> copying clan_cli/templates/apply.py -> build/lib/clan_cli/templates clan-cli> copying clan_cli/templates/list.py -> build/lib/clan_cli/templates clan-cli> copying clan_cli/templates/__init__.py -> build/lib/clan_cli/templates clan-cli> copying clan_cli/templates/apply_disk.py -> build/lib/clan_cli/templates clan-cli> copying clan_cli/templates/apply_machine.py -> build/lib/clan_cli/templates clan-cli> copying clan_cli/templates/apply_test.py -> build/lib/clan_cli/templates clan-cli> creating build/lib/clan_cli/facts clan-cli> copying clan_cli/facts/list_test.py -> build/lib/clan_cli/facts clan-cli> copying clan_cli/facts/check.py -> build/lib/clan_cli/facts clan-cli> copying clan_cli/facts/generate.py -> build/lib/clan_cli/facts clan-cli> copying clan_cli/facts/check_test.py -> build/lib/clan_cli/facts clan-cli> copying clan_cli/facts/list.py -> build/lib/clan_cli/facts clan-cli> copying clan_cli/facts/upload_test.py -> build/lib/clan_cli/facts clan-cli> copying clan_cli/facts/upload.py -> build/lib/clan_cli/facts clan-cli> copying clan_cli/facts/generate_test.py -> build/lib/clan_cli/facts clan-cli> copying clan_cli/facts/__init__.py -> build/lib/clan_cli/facts clan-cli> copying clan_cli/facts/cli.py -> build/lib/clan_cli/facts clan-cli> creating build/lib/clan_cli/backups clan-cli> copying clan_cli/backups/list_test.py -> build/lib/clan_cli/backups clan-cli> copying clan_cli/backups/list.py -> build/lib/clan_cli/backups clan-cli> copying clan_cli/backups/create_test.py -> build/lib/clan_cli/backups clan-cli> copying clan_cli/backups/restore_test.py -> build/lib/clan_cli/backups clan-cli> copying clan_cli/backups/__init__.py -> build/lib/clan_cli/backups clan-cli> copying clan_cli/backups/create.py -> build/lib/clan_cli/backups clan-cli> copying clan_cli/backups/restore.py -> build/lib/clan_cli/backups clan-cli> creating build/lib/clan_cli/ssh clan-cli> copying clan_cli/ssh/test_deploy_info.py -> build/lib/clan_cli/ssh clan-cli> copying clan_cli/ssh/deploy_info.py -> build/lib/clan_cli/ssh clan-cli> copying clan_cli/ssh/__init__.py -> build/lib/clan_cli/ssh clan-cli> creating build/lib/clan_cli/vms clan-cli> copying clan_cli/vms/waypipe.py -> build/lib/clan_cli/vms clan-cli> copying clan_cli/vms/virtiofsd.py -> build/lib/clan_cli/vms clan-cli> copying clan_cli/vms/run.py -> build/lib/clan_cli/vms clan-cli> copying clan_cli/vms/qemu.py -> build/lib/clan_cli/vms clan-cli> copying clan_cli/vms/__init__.py -> build/lib/clan_cli/vms clan-cli> copying clan_cli/vms/inspect.py -> build/lib/clan_cli/vms clan-cli> creating build/lib/clan_cli/secrets clan-cli> copying clan_cli/secrets/machines.py -> build/lib/clan_cli/secrets clan-cli> copying clan_cli/secrets/import_sops.py -> build/lib/clan_cli/secrets clan-cli> copying clan_cli/secrets/folders.py -> build/lib/clan_cli/secrets clan-cli> copying clan_cli/secrets/secrets.py -> build/lib/clan_cli/secrets clan-cli> copying clan_cli/secrets/groups.py -> build/lib/clan_cli/secrets clan-cli> copying clan_cli/secrets/__init__.py -> build/lib/clan_cli/secrets clan-cli> copying clan_cli/secrets/sops.py -> build/lib/clan_cli/secrets clan-cli> copying clan_cli/secrets/filters.py -> build/lib/clan_cli/secrets clan-cli> copying clan_cli/secrets/key.py -> build/lib/clan_cli/secrets clan-cli> copying clan_cli/secrets/types.py -> build/lib/clan_cli/secrets clan-cli> copying clan_cli/secrets/users.py -> build/lib/clan_cli/secrets clan-cli> creating build/lib/clan_cli/ai clan-cli> copying clan_cli/ai/workflow.py -> build/lib/clan_cli/ai clan-cli> copying clan_cli/ai/tui.py -> build/lib/clan_cli/ai clan-cli> copying clan_cli/ai/__init__.py -> build/lib/clan_cli/ai clan-cli> copying clan_cli/ai/cli.py -> build/lib/clan_cli/ai clan-cli> creating build/lib/clan_cli/flash clan-cli> copying clan_cli/flash/list_test.py -> build/lib/clan_cli/flash clan-cli> copying clan_cli/flash/list.py -> build/lib/clan_cli/flash clan-cli> copying clan_cli/flash/flash_cmd.py -> build/lib/clan_cli/flash clan-cli> copying clan_cli/flash/__init__.py -> build/lib/clan_cli/flash clan-cli> copying clan_cli/flash/cli.py -> build/lib/clan_cli/flash clan-cli> creating build/lib/clan_cli/network clan-cli> copying clan_cli/network/ping.py -> build/lib/clan_cli/network clan-cli> copying clan_cli/network/list.py -> build/lib/clan_cli/network clan-cli> copying clan_cli/network/overview.py -> build/lib/clan_cli/network clan-cli> copying clan_cli/network/cli.py -> build/lib/clan_cli/network clan-cli> creating build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/sshd.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/gpg_keys.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_flakes_cli.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_vars_deployment.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/ports.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_cli.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_vms_cli.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_machines_cli.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/fixture_error.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/fixtures_flakes.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_backups.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/root.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_api_dataclass_compat.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_inventory_serde.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/temporary_dir.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/runtime.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_import_sops_cli.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/age_keys.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_ssh_local.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_secrets_cli.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_vars.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_git.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_secrets_generate.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_upload_single_file.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/command.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_clan_nix_attrset.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/test_create_flake.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/hosts.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/stdout.py -> build/lib/clan_cli/tests clan-cli> copying clan_cli/tests/git_repo.py -> build/lib/clan_cli/tests clan-cli> creating build/lib/clan_cli/state clan-cli> copying clan_cli/state/list_test.py -> build/lib/clan_cli/state clan-cli> copying clan_cli/state/list.py -> build/lib/clan_cli/state clan-cli> copying clan_cli/state/__init__.py -> build/lib/clan_cli/state clan-cli> creating build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/list_test.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/fix_test.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/check.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/generate.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/check_test.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/keygen.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/_types.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/list.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/migration.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/var.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/upload_test.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/upload.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/generate_test.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/get_test.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/prompt.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/graph_test.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/generator.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/graph.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/cli.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/get.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/fix.py -> build/lib/clan_cli/vars clan-cli> copying clan_cli/vars/set.py -> build/lib/clan_cli/vars clan-cli> creating build/lib/clan_cli/qemu clan-cli> copying clan_cli/qemu/qmp.py -> build/lib/clan_cli/qemu clan-cli> copying clan_cli/qemu/qga.py -> build/lib/clan_cli/qemu clan-cli> copying clan_cli/qemu/__init__.py -> build/lib/clan_cli/qemu clan-cli> creating build/lib/clan_cli/generate_test_vars clan-cli> copying clan_cli/generate_test_vars/__init_.py -> build/lib/clan_cli/generate_test_vars clan-cli> copying clan_cli/generate_test_vars/cli.py -> build/lib/clan_cli/generate_test_vars clan-cli> copying clan_cli/generate_test_vars/test_generate_test_vars.py -> build/lib/clan_cli/generate_test_vars clan-cli> creating build/lib/clan_cli/clan clan-cli> copying clan_cli/clan/show_test.py -> build/lib/clan_cli/clan clan-cli> copying clan_cli/clan/show.py -> build/lib/clan_cli/clan clan-cli> copying clan_cli/clan/__init__.py -> build/lib/clan_cli/clan clan-cli> copying clan_cli/clan/inspect.py -> build/lib/clan_cli/clan clan-cli> copying clan_cli/clan/create.py -> build/lib/clan_cli/clan clan-cli> creating build/lib/clan_cli/facts/secret_modules clan-cli> copying clan_cli/facts/secret_modules/vm.py -> build/lib/clan_cli/facts/secret_modules clan-cli> copying clan_cli/facts/secret_modules/password_store.py -> build/lib/clan_cli/facts/secret_modules clan-cli> copying clan_cli/facts/secret_modules/__init__.py -> build/lib/clan_cli/facts/secret_modules clan-cli> copying clan_cli/facts/secret_modules/sops.py -> build/lib/clan_cli/facts/secret_modules clan-cli> creating build/lib/clan_cli/facts/public_modules clan-cli> copying clan_cli/facts/public_modules/vm.py -> build/lib/clan_cli/facts/public_modules clan-cli> copying clan_cli/facts/public_modules/__init__.py -> build/lib/clan_cli/facts/public_modules clan-cli> copying clan_cli/facts/public_modules/in_repo.py -> build/lib/clan_cli/facts/public_modules clan-cli> creating build/lib/clan_cli/tests/helpers clan-cli> copying clan_cli/tests/helpers/__init__.py -> build/lib/clan_cli/tests/helpers clan-cli> copying clan_cli/tests/helpers/cli.py -> build/lib/clan_cli/tests/helpers clan-cli> copying clan_cli/tests/helpers/validator.py -> build/lib/clan_cli/tests/helpers clan-cli> creating build/lib/clan_cli/vars/secret_modules clan-cli> copying clan_cli/vars/secret_modules/fs.py -> build/lib/clan_cli/vars/secret_modules clan-cli> copying clan_cli/vars/secret_modules/vm.py -> build/lib/clan_cli/vars/secret_modules clan-cli> copying clan_cli/vars/secret_modules/password_store.py -> build/lib/clan_cli/vars/secret_modules clan-cli> copying clan_cli/vars/secret_modules/__init__.py -> build/lib/clan_cli/vars/secret_modules clan-cli> copying clan_cli/vars/secret_modules/sops.py -> build/lib/clan_cli/vars/secret_modules clan-cli> creating build/lib/clan_cli/vars/public_modules clan-cli> copying clan_cli/vars/public_modules/vm.py -> build/lib/clan_cli/vars/public_modules clan-cli> copying clan_cli/vars/public_modules/__init__.py -> build/lib/clan_cli/vars/public_modules clan-cli> copying clan_cli/vars/public_modules/in_repo.py -> build/lib/clan_cli/vars/public_modules clan-cli> running egg_info clan-cli> writing clan.egg-info/PKG-INFO clan-cli> writing dependency_links to clan.egg-info/dependency_links.txt clan-cli> writing entry points to clan.egg-info/entry_points.txt clan-cli> writing top-level names to clan.egg-info/top_level.txt clan-cli> reading manifest file 'clan.egg-info/SOURCES.txt' clan-cli> writing manifest file 'clan.egg-info/SOURCES.txt' clan-cli> copying clan_lib/py.typed -> build/lib/clan_lib clan-cli> creating build/lib/clan_lib/clan_core_templates clan-cli> copying clan_lib/clan_core_templates/flake.nix -> build/lib/clan_lib/clan_core_templates clan-cli> copying clan_lib/clan_core_templates/flake-module.nix -> build/lib/clan_lib/clan_core_templates clan-cli> creating build/lib/clan_lib/clan_core_templates/machine/new-machine clan-cli> copying clan_lib/clan_core_templates/machine/new-machine/configuration.nix -> build/lib/clan_lib/clan_core_templates/machine/new-machine clan-cli> creating build/lib/clan_lib/clan_core_templates/machine/flash-installer clan-cli> copying clan_lib/clan_core_templates/machine/flash-installer/configuration.nix -> build/lib/clan_lib/clan_core_templates/machine/flash-installer clan-cli> copying clan_lib/clan_core_templates/machine/flash-installer/disko.nix -> build/lib/clan_lib/clan_core_templates/machine/flash-installer clan-cli> creating build/lib/clan_lib/clan_core_templates/disk/single-disk clan-cli> copying clan_lib/clan_core_templates/disk/single-disk/README.md -> build/lib/clan_lib/clan_core_templates/disk/single-disk clan-cli> copying clan_lib/clan_core_templates/disk/single-disk/default.nix -> build/lib/clan_lib/clan_core_templates/disk/single-disk clan-cli> creating build/lib/clan_lib/clan_core_templates/clan/minimal clan-cli> copying clan_lib/clan_core_templates/clan/minimal/flake.nix -> build/lib/clan_lib/clan_core_templates/clan/minimal clan-cli> creating build/lib/clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> copying clan_lib/clan_core_templates/clan/flake-parts-minimal/flake.nix -> build/lib/clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> copying clan_lib/clan_core_templates/clan/flake-parts-minimal/clan.nix -> build/lib/clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> copying clan_lib/clan_core_templates/clan/flake-parts-minimal/devshells.nix -> build/lib/clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> copying clan_lib/clan_core_templates/clan/flake-parts-minimal/checks.nix -> build/lib/clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> copying clan_lib/clan_core_templates/clan/flake-parts-minimal/formatter.nix -> build/lib/clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> creating build/lib/clan_lib/clan_core_templates/clan/default clan-cli> copying clan_lib/clan_core_templates/clan/default/flake.nix -> build/lib/clan_lib/clan_core_templates/clan/default clan-cli> copying clan_lib/clan_core_templates/clan/default/clan.nix -> build/lib/clan_lib/clan_core_templates/clan/default clan-cli> creating build/lib/clan_lib/clan_core_templates/clan/default/modules clan-cli> copying clan_lib/clan_core_templates/clan/default/modules/gnome.nix -> build/lib/clan_lib/clan_core_templates/clan/default/modules clan-cli> creating build/lib/clan_lib/clan_core_templates/clan/flake-parts clan-cli> copying clan_lib/clan_core_templates/clan/flake-parts/flake.nix -> build/lib/clan_lib/clan_core_templates/clan/flake-parts clan-cli> copying clan_lib/clan_core_templates/clan/flake-parts/clan.nix -> build/lib/clan_lib/clan_core_templates/clan/flake-parts clan-cli> creating build/lib/clan_lib/clan_core_templates/clan/flake-parts/modules clan-cli> copying clan_lib/clan_core_templates/clan/flake-parts/modules/gnome.nix -> build/lib/clan_lib/clan_core_templates/clan/flake-parts/modules clan-cli> copying clan_lib/nix/allowed-packages.json -> build/lib/clan_lib/nix clan-cli> copying clan_lib/ssh/sudo_askpass_proxy.sh -> build/lib/clan_lib/ssh clan-cli> copying clan_lib/flash/inhibit.sh -> build/lib/clan_lib/flash clan-cli> copying clan_cli/py.typed -> build/lib/clan_cli clan-cli> creating build/lib/clan_cli/vms/mimetypes/applications clan-cli> copying clan_cli/vms/mimetypes/applications/remote-viewer.desktop -> build/lib/clan_cli/vms/mimetypes/applications clan-cli> copying clan_cli/vms/mimetypes/applications/mimeapps.list -> build/lib/clan_cli/vms/mimetypes/applications clan-cli> installing to build/bdist.linux-x86_64/wheel clan-cli> running install clan-cli> running install_lib clan-cli> creating build/bdist.linux-x86_64/wheel clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/dirs clan-cli> copying build/lib/clan_lib/dirs/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/dirs clan-cli> copying build/lib/clan_lib/dirs/dirs_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/dirs clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/bwrap clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/bwrap/tests clan-cli> copying build/lib/clan_lib/bwrap/tests/test_bwrap.py -> build/bdist.linux-x86_64/wheel/./clan_lib/bwrap/tests clan-cli> copying build/lib/clan_lib/bwrap/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/bwrap clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/sandbox_exec clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/sandbox_exec/tests clan-cli> copying build/lib/clan_lib/sandbox_exec/tests/test_sandbox_exec.py -> build/bdist.linux-x86_64/wheel/./clan_lib/sandbox_exec/tests clan-cli> copying build/lib/clan_lib/sandbox_exec/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/sandbox_exec clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/delete.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/machines.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/generations.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/actions.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/update.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/test_suggestions.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/morph.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/list.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/suggestions.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/hardware.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/actions_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/install.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> copying build/lib/clan_lib/machines/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/machines clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/templates clan-cli> copying build/lib/clan_lib/templates/template_url.py -> build/bdist.linux-x86_64/wheel/./clan_lib/templates clan-cli> copying build/lib/clan_lib/templates/filesystem.py -> build/bdist.linux-x86_64/wheel/./clan_lib/templates clan-cli> copying build/lib/clan_lib/templates/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/templates clan-cli> copying build/lib/clan_lib/templates/handler.py -> build/bdist.linux-x86_64/wheel/./clan_lib/templates clan-cli> copying build/lib/clan_lib/templates/disk.py -> build/bdist.linux-x86_64/wheel/./clan_lib/templates clan-cli> copying build/lib/clan_lib/templates/template_url_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/templates clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/nix_models clan-cli> copying build/lib/clan_lib/nix_models/clan.py -> build/bdist.linux-x86_64/wheel/./clan_lib/nix_models clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/errors clan-cli> copying build/lib/clan_lib/errors/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/errors clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/backups clan-cli> copying build/lib/clan_lib/backups/list.py -> build/bdist.linux-x86_64/wheel/./clan_lib/backups clan-cli> copying build/lib/clan_lib/backups/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/backups clan-cli> copying build/lib/clan_lib/backups/create.py -> build/bdist.linux-x86_64/wheel/./clan_lib/backups clan-cli> copying build/lib/clan_lib/backups/restore.py -> build/bdist.linux-x86_64/wheel/./clan_lib/backups clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/remote.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/host_key.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/localhost.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/create_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/socks_wrapper.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/upload.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/localhost_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/sudo_askpass_proxy.sh -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/remote_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/host.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/create.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> copying build/lib/clan_lib/ssh/sudo_askpass_proxy.py -> build/bdist.linux-x86_64/wheel/./clan_lib/ssh clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/utils.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/schemas.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/container_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/prompts.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/endpoints.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/phases.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/llm_types.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/test_process_chat_turn.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/service.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/llm_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/trace.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> copying build/lib/clan_lib/llm/orchestrator.py -> build/bdist.linux-x86_64/wheel/./clan_lib/llm clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/cmd clan-cli> copying build/lib/clan_lib/cmd/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/cmd clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/services clan-cli> copying build/lib/clan_lib/services/modules.py -> build/bdist.linux-x86_64/wheel/./clan_lib/services clan-cli> copying build/lib/clan_lib/services/modules_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/services clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/flash clan-cli> copying build/lib/clan_lib/flash/test_list.py -> build/bdist.linux-x86_64/wheel/./clan_lib/flash clan-cli> copying build/lib/clan_lib/flash/list.py -> build/bdist.linux-x86_64/wheel/./clan_lib/flash clan-cli> copying build/lib/clan_lib/flash/automount.py -> build/bdist.linux-x86_64/wheel/./clan_lib/flash clan-cli> copying build/lib/clan_lib/flash/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/flash clan-cli> copying build/lib/clan_lib/flash/inhibit.sh -> build/bdist.linux-x86_64/wheel/./clan_lib/flash clan-cli> copying build/lib/clan_lib/flash/flash.py -> build/bdist.linux-x86_64/wheel/./clan_lib/flash clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/metrics clan-cli> copying build/lib/clan_lib/metrics/version.py -> build/bdist.linux-x86_64/wheel/./clan_lib/metrics clan-cli> copying build/lib/clan_lib/metrics/telegraf.py -> build/bdist.linux-x86_64/wheel/./clan_lib/metrics clan-cli> copying build/lib/clan_lib/metrics/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/metrics clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/validator clan-cli> copying build/lib/clan_lib/validator/hostname.py -> build/bdist.linux-x86_64/wheel/./clan_lib/validator clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/tags clan-cli> copying build/lib/clan_lib/tags/list_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/tags clan-cli> copying build/lib/clan_lib/tags/list.py -> build/bdist.linux-x86_64/wheel/./clan_lib/tags clan-cli> copying build/lib/clan_lib/tags/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/tags clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/network clan-cli> copying build/lib/clan_lib/network/network_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/network clan-cli> copying build/lib/clan_lib/network/check.py -> build/bdist.linux-x86_64/wheel/./clan_lib/network clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/network/tor clan-cli> copying build/lib/clan_lib/network/tor/lib.py -> build/bdist.linux-x86_64/wheel/./clan_lib/network/tor clan-cli> copying build/lib/clan_lib/network/tor/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/network/tor clan-cli> copying build/lib/clan_lib/network/network.py -> build/bdist.linux-x86_64/wheel/./clan_lib/network clan-cli> copying build/lib/clan_lib/network/direct.py -> build/bdist.linux-x86_64/wheel/./clan_lib/network clan-cli> copying build/lib/clan_lib/network/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/network clan-cli> copying build/lib/clan_lib/network/qr_code.py -> build/bdist.linux-x86_64/wheel/./clan_lib/network clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/network/zerotier clan-cli> copying build/lib/clan_lib/network/zerotier/lib.py -> build/bdist.linux-x86_64/wheel/./clan_lib/network/zerotier clan-cli> copying build/lib/clan_lib/network/zerotier/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/network/zerotier clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/tests clan-cli> copying build/lib/clan_lib/tests/test_create.py -> build/bdist.linux-x86_64/wheel/./clan_lib/tests clan-cli> copying build/lib/clan_lib/tests/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/tests clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/locked_open clan-cli> copying build/lib/clan_lib/locked_open/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/locked_open clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/async_run clan-cli> copying build/lib/clan_lib/async_run/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/async_run clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/nix clan-cli> copying build/lib/clan_lib/nix/allowed-packages.json -> build/bdist.linux-x86_64/wheel/./clan_lib/nix clan-cli> copying build/lib/clan_lib/nix/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/nix clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/api clan-cli> copying build/lib/clan_lib/api/directory_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/api clan-cli> copying build/lib/clan_lib/api/type_to_jsonschema.py -> build/bdist.linux-x86_64/wheel/./clan_lib/api clan-cli> copying build/lib/clan_lib/api/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/api clan-cli> copying build/lib/clan_lib/api/tasks.py -> build/bdist.linux-x86_64/wheel/./clan_lib/api clan-cli> copying build/lib/clan_lib/api/cli.py -> build/bdist.linux-x86_64/wheel/./clan_lib/api clan-cli> copying build/lib/clan_lib/api/directory.py -> build/bdist.linux-x86_64/wheel/./clan_lib/api clan-cli> copying build/lib/clan_lib/api/mdns_discovery.py -> build/bdist.linux-x86_64/wheel/./clan_lib/api clan-cli> copying build/lib/clan_lib/api/serde.py -> build/bdist.linux-x86_64/wheel/./clan_lib/api clan-cli> copying build/lib/clan_lib/api/serde_serialize_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/api clan-cli> copying build/lib/clan_lib/api/type_to_jsonschema_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/api clan-cli> copying build/lib/clan_lib/api/serde_deserialize_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/api clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/log_manager clan-cli> copying build/lib/clan_lib/log_manager/api.py -> build/bdist.linux-x86_64/wheel/./clan_lib/log_manager clan-cli> copying build/lib/clan_lib/log_manager/test_log_manager.py -> build/bdist.linux-x86_64/wheel/./clan_lib/log_manager clan-cli> copying build/lib/clan_lib/log_manager/test_url_encoding.py -> build/bdist.linux-x86_64/wheel/./clan_lib/log_manager clan-cli> copying build/lib/clan_lib/log_manager/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/log_manager clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/persist clan-cli> copying build/lib/clan_lib/persist/validate.py -> build/bdist.linux-x86_64/wheel/./clan_lib/persist clan-cli> copying build/lib/clan_lib/persist/path_utils_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/persist clan-cli> copying build/lib/clan_lib/persist/write_rules.py -> build/bdist.linux-x86_64/wheel/./clan_lib/persist clan-cli> copying build/lib/clan_lib/persist/inventory_store_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/persist clan-cli> copying build/lib/clan_lib/persist/introspection.py -> build/bdist.linux-x86_64/wheel/./clan_lib/persist clan-cli> copying build/lib/clan_lib/persist/path_utils.py -> build/bdist.linux-x86_64/wheel/./clan_lib/persist clan-cli> copying build/lib/clan_lib/persist/inventory_store.py -> build/bdist.linux-x86_64/wheel/./clan_lib/persist clan-cli> copying build/lib/clan_lib/persist/patch_engine.py -> build/bdist.linux-x86_64/wheel/./clan_lib/persist clan-cli> copying build/lib/clan_lib/persist/patch_engine_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/persist clan-cli> copying build/lib/clan_lib/persist/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/persist clan-cli> copying build/lib/clan_lib/persist/write_rules_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/persist clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/jsonrpc clan-cli> copying build/lib/clan_lib/jsonrpc/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/jsonrpc clan-cli> copying build/lib/clan_lib/py.typed -> build/bdist.linux-x86_64/wheel/./clan_lib clan-cli> copying build/lib/clan_lib/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/import_utils clan-cli> copying build/lib/clan_lib/import_utils/import_utils_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/import_utils clan-cli> copying build/lib/clan_lib/import_utils/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/import_utils clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/machine clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/machine/new-machine clan-cli> copying build/lib/clan_lib/clan_core_templates/machine/new-machine/configuration.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/machine/new-machine clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/machine/flash-installer clan-cli> copying build/lib/clan_lib/clan_core_templates/machine/flash-installer/configuration.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/machine/flash-installer clan-cli> copying build/lib/clan_lib/clan_core_templates/machine/flash-installer/disko.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/machine/flash-installer clan-cli> copying build/lib/clan_lib/clan_core_templates/flake.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/disk clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/disk/single-disk clan-cli> copying build/lib/clan_lib/clan_core_templates/disk/single-disk/README.md -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/disk/single-disk clan-cli> copying build/lib/clan_lib/clan_core_templates/disk/single-disk/default.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/disk/single-disk clan-cli> copying build/lib/clan_lib/clan_core_templates/flake-module.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/clan clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/clan/minimal clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/minimal/flake.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/minimal clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/flake-parts-minimal/flake.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/flake-parts-minimal/clan.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/flake-parts-minimal/devshells.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/flake-parts-minimal/checks.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/flake-parts-minimal/formatter.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/flake-parts-minimal clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/clan/default clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/default/flake.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/default clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/clan/default/modules clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/default/modules/gnome.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/default/modules clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/default/clan.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/default clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/clan/flake-parts clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/flake-parts/flake.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/flake-parts clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan_core_templates/clan/flake-parts/modules clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/flake-parts/modules/gnome.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/flake-parts/modules clan-cli> copying build/lib/clan_lib/clan_core_templates/clan/flake-parts/clan.nix -> build/bdist.linux-x86_64/wheel/./clan_lib/clan_core_templates/clan/flake-parts clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/colors clan-cli> copying build/lib/clan_lib/colors/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/colors clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/vars clan-cli> copying build/lib/clan_lib/vars/generate.py -> build/bdist.linux-x86_64/wheel/./clan_lib/vars clan-cli> copying build/lib/clan_lib/vars/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/vars clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/custom_logger clan-cli> copying build/lib/clan_lib/custom_logger/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/custom_logger clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/service_runner clan-cli> copying build/lib/clan_lib/service_runner/container_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/service_runner clan-cli> copying build/lib/clan_lib/service_runner/protocols.py -> build/bdist.linux-x86_64/wheel/./clan_lib/service_runner clan-cli> copying build/lib/clan_lib/service_runner/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/service_runner clan-cli> copying build/lib/clan_lib/service_runner/systemd_user.py -> build/bdist.linux-x86_64/wheel/./clan_lib/service_runner clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/fixtures clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/fixtures/flakes clan-cli> copying build/lib/clan_lib/fixtures/flakes/flakes.py -> build/bdist.linux-x86_64/wheel/./clan_lib/fixtures/flakes clan-cli> copying build/lib/clan_lib/fixtures/flake_hooks.py -> build/bdist.linux-x86_64/wheel/./clan_lib/fixtures clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/clan clan-cli> copying build/lib/clan_lib/clan/check.py -> build/bdist.linux-x86_64/wheel/./clan_lib/clan clan-cli> copying build/lib/clan_lib/clan/check_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/clan clan-cli> copying build/lib/clan_lib/clan/update.py -> build/bdist.linux-x86_64/wheel/./clan_lib/clan clan-cli> copying build/lib/clan_lib/clan/test_create.py -> build/bdist.linux-x86_64/wheel/./clan_lib/clan clan-cli> copying build/lib/clan_lib/clan/get_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/clan clan-cli> copying build/lib/clan_lib/clan/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/clan clan-cli> copying build/lib/clan_lib/clan/get.py -> build/bdist.linux-x86_64/wheel/./clan_lib/clan clan-cli> copying build/lib/clan_lib/clan/create.py -> build/bdist.linux-x86_64/wheel/./clan_lib/clan clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/flake clan-cli> copying build/lib/clan_lib/flake/flake_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/flake clan-cli> copying build/lib/clan_lib/flake/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/flake clan-cli> copying build/lib/clan_lib/flake/flake_cache_test.py -> build/bdist.linux-x86_64/wheel/./clan_lib/flake clan-cli> copying build/lib/clan_lib/flake/flake.py -> build/bdist.linux-x86_64/wheel/./clan_lib/flake clan-cli> copying build/lib/clan_lib/conftest.py -> build/bdist.linux-x86_64/wheel/./clan_lib clan-cli> creating build/bdist.linux-x86_64/wheel/clan_lib/git clan-cli> copying build/lib/clan_lib/git/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_lib/git clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli clan-cli> copying build/lib/clan_cli/select.py -> build/bdist.linux-x86_64/wheel/./clan_cli clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/list_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/delete.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/generations.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/update.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/morph.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/list.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/machines_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/hardware.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/hardware_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/install.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/create.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/update_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> copying build/lib/clan_cli/machines/types.py -> build/bdist.linux-x86_64/wheel/./clan_cli/machines clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/templates clan-cli> copying build/lib/clan_cli/templates/list_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/templates clan-cli> copying build/lib/clan_cli/templates/apply.py -> build/bdist.linux-x86_64/wheel/./clan_cli/templates clan-cli> copying build/lib/clan_cli/templates/list.py -> build/bdist.linux-x86_64/wheel/./clan_cli/templates clan-cli> copying build/lib/clan_cli/templates/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/templates clan-cli> copying build/lib/clan_cli/templates/apply_disk.py -> build/bdist.linux-x86_64/wheel/./clan_cli/templates clan-cli> copying build/lib/clan_cli/templates/apply_machine.py -> build/bdist.linux-x86_64/wheel/./clan_cli/templates clan-cli> copying build/lib/clan_cli/templates/apply_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/templates clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/facts clan-cli> copying build/lib/clan_cli/facts/list_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts clan-cli> copying build/lib/clan_cli/facts/check.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts clan-cli> copying build/lib/clan_cli/facts/generate.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts clan-cli> copying build/lib/clan_cli/facts/check_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts clan-cli> copying build/lib/clan_cli/facts/list.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts clan-cli> copying build/lib/clan_cli/facts/upload_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts clan-cli> copying build/lib/clan_cli/facts/upload.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts clan-cli> copying build/lib/clan_cli/facts/generate_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/facts/secret_modules clan-cli> copying build/lib/clan_cli/facts/secret_modules/vm.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts/secret_modules clan-cli> copying build/lib/clan_cli/facts/secret_modules/password_store.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts/secret_modules clan-cli> copying build/lib/clan_cli/facts/secret_modules/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts/secret_modules clan-cli> copying build/lib/clan_cli/facts/secret_modules/sops.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts/secret_modules clan-cli> copying build/lib/clan_cli/facts/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts clan-cli> copying build/lib/clan_cli/facts/cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/facts/public_modules clan-cli> copying build/lib/clan_cli/facts/public_modules/vm.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts/public_modules clan-cli> copying build/lib/clan_cli/facts/public_modules/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts/public_modules clan-cli> copying build/lib/clan_cli/facts/public_modules/in_repo.py -> build/bdist.linux-x86_64/wheel/./clan_cli/facts/public_modules clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/backups clan-cli> copying build/lib/clan_cli/backups/list_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/backups clan-cli> copying build/lib/clan_cli/backups/list.py -> build/bdist.linux-x86_64/wheel/./clan_cli/backups clan-cli> copying build/lib/clan_cli/backups/create_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/backups clan-cli> copying build/lib/clan_cli/backups/restore_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/backups clan-cli> copying build/lib/clan_cli/backups/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/backups clan-cli> copying build/lib/clan_cli/backups/create.py -> build/bdist.linux-x86_64/wheel/./clan_cli/backups clan-cli> copying build/lib/clan_cli/backups/restore.py -> build/bdist.linux-x86_64/wheel/./clan_cli/backups clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/ssh clan-cli> copying build/lib/clan_cli/ssh/test_deploy_info.py -> build/bdist.linux-x86_64/wheel/./clan_cli/ssh clan-cli> copying build/lib/clan_cli/ssh/deploy_info.py -> build/bdist.linux-x86_64/wheel/./clan_cli/ssh clan-cli> copying build/lib/clan_cli/ssh/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/ssh clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/vms clan-cli> copying build/lib/clan_cli/vms/waypipe.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vms clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/vms/mimetypes clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/vms/mimetypes/applications clan-cli> copying build/lib/clan_cli/vms/mimetypes/applications/remote-viewer.desktop -> build/bdist.linux-x86_64/wheel/./clan_cli/vms/mimetypes/applications clan-cli> copying build/lib/clan_cli/vms/mimetypes/applications/mimeapps.list -> build/bdist.linux-x86_64/wheel/./clan_cli/vms/mimetypes/applications clan-cli> copying build/lib/clan_cli/vms/virtiofsd.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vms clan-cli> copying build/lib/clan_cli/vms/run.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vms clan-cli> copying build/lib/clan_cli/vms/qemu.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vms clan-cli> copying build/lib/clan_cli/vms/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vms clan-cli> copying build/lib/clan_cli/vms/inspect.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vms clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/secrets clan-cli> copying build/lib/clan_cli/secrets/machines.py -> build/bdist.linux-x86_64/wheel/./clan_cli/secrets clan-cli> copying build/lib/clan_cli/secrets/import_sops.py -> build/bdist.linux-x86_64/wheel/./clan_cli/secrets clan-cli> copying build/lib/clan_cli/secrets/folders.py -> build/bdist.linux-x86_64/wheel/./clan_cli/secrets clan-cli> copying build/lib/clan_cli/secrets/secrets.py -> build/bdist.linux-x86_64/wheel/./clan_cli/secrets clan-cli> copying build/lib/clan_cli/secrets/groups.py -> build/bdist.linux-x86_64/wheel/./clan_cli/secrets clan-cli> copying build/lib/clan_cli/secrets/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/secrets clan-cli> copying build/lib/clan_cli/secrets/sops.py -> build/bdist.linux-x86_64/wheel/./clan_cli/secrets clan-cli> copying build/lib/clan_cli/secrets/filters.py -> build/bdist.linux-x86_64/wheel/./clan_cli/secrets clan-cli> copying build/lib/clan_cli/secrets/key.py -> build/bdist.linux-x86_64/wheel/./clan_cli/secrets clan-cli> copying build/lib/clan_cli/secrets/types.py -> build/bdist.linux-x86_64/wheel/./clan_cli/secrets clan-cli> copying build/lib/clan_cli/secrets/users.py -> build/bdist.linux-x86_64/wheel/./clan_cli/secrets clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/ai clan-cli> copying build/lib/clan_cli/ai/workflow.py -> build/bdist.linux-x86_64/wheel/./clan_cli/ai clan-cli> copying build/lib/clan_cli/ai/tui.py -> build/bdist.linux-x86_64/wheel/./clan_cli/ai clan-cli> copying build/lib/clan_cli/ai/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/ai clan-cli> copying build/lib/clan_cli/ai/cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/ai clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/flash clan-cli> copying build/lib/clan_cli/flash/list_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/flash clan-cli> copying build/lib/clan_cli/flash/list.py -> build/bdist.linux-x86_64/wheel/./clan_cli/flash clan-cli> copying build/lib/clan_cli/flash/flash_cmd.py -> build/bdist.linux-x86_64/wheel/./clan_cli/flash clan-cli> copying build/lib/clan_cli/flash/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/flash clan-cli> copying build/lib/clan_cli/flash/cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/flash clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/network clan-cli> copying build/lib/clan_cli/network/ping.py -> build/bdist.linux-x86_64/wheel/./clan_cli/network clan-cli> copying build/lib/clan_cli/network/list.py -> build/bdist.linux-x86_64/wheel/./clan_cli/network clan-cli> copying build/lib/clan_cli/network/overview.py -> build/bdist.linux-x86_64/wheel/./clan_cli/network clan-cli> copying build/lib/clan_cli/network/cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/network clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/sshd.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/gpg_keys.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_flakes_cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_vars_deployment.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/ports.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_vms_cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_machines_cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/fixture_error.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/fixtures_flakes.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_backups.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/root.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_api_dataclass_compat.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_inventory_serde.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/temporary_dir.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/runtime.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_import_sops_cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/age_keys.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_ssh_local.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_secrets_cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_vars.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_git.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_secrets_generate.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_upload_single_file.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/command.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_clan_nix_attrset.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/test_create_flake.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/hosts.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/tests/stdout.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/tests/helpers clan-cli> copying build/lib/clan_cli/tests/helpers/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests/helpers clan-cli> copying build/lib/clan_cli/tests/helpers/cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests/helpers clan-cli> copying build/lib/clan_cli/tests/helpers/validator.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests/helpers clan-cli> copying build/lib/clan_cli/tests/git_repo.py -> build/bdist.linux-x86_64/wheel/./clan_cli/tests clan-cli> copying build/lib/clan_cli/completions.py -> build/bdist.linux-x86_64/wheel/./clan_cli clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/state clan-cli> copying build/lib/clan_cli/state/list_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/state clan-cli> copying build/lib/clan_cli/state/list.py -> build/bdist.linux-x86_64/wheel/./clan_cli/state clan-cli> copying build/lib/clan_cli/state/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/state clan-cli> copying build/lib/clan_cli/py.typed -> build/bdist.linux-x86_64/wheel/./clan_cli clan-cli> copying build/lib/clan_cli/__main__.py -> build/bdist.linux-x86_64/wheel/./clan_cli clan-cli> copying build/lib/clan_cli/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli clan-cli> copying build/lib/clan_cli/hyperlink.py -> build/bdist.linux-x86_64/wheel/./clan_cli clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/list_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/fix_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/check.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/generate.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/check_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/keygen.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/_types.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/list.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/migration.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/var.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/upload_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/upload.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/generate_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/get_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/prompt.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/graph_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/vars/secret_modules clan-cli> copying build/lib/clan_cli/vars/secret_modules/fs.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars/secret_modules clan-cli> copying build/lib/clan_cli/vars/secret_modules/vm.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars/secret_modules clan-cli> copying build/lib/clan_cli/vars/secret_modules/password_store.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars/secret_modules clan-cli> copying build/lib/clan_cli/vars/secret_modules/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars/secret_modules clan-cli> copying build/lib/clan_cli/vars/secret_modules/sops.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars/secret_modules clan-cli> copying build/lib/clan_cli/vars/generator.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/graph.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/get.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/vars/public_modules clan-cli> copying build/lib/clan_cli/vars/public_modules/vm.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars/public_modules clan-cli> copying build/lib/clan_cli/vars/public_modules/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars/public_modules clan-cli> copying build/lib/clan_cli/vars/public_modules/in_repo.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars/public_modules clan-cli> copying build/lib/clan_cli/vars/fix.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> copying build/lib/clan_cli/vars/set.py -> build/bdist.linux-x86_64/wheel/./clan_cli/vars clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/qemu clan-cli> copying build/lib/clan_cli/qemu/qmp.py -> build/bdist.linux-x86_64/wheel/./clan_cli/qemu clan-cli> copying build/lib/clan_cli/qemu/qga.py -> build/bdist.linux-x86_64/wheel/./clan_cli/qemu clan-cli> copying build/lib/clan_cli/qemu/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/qemu clan-cli> copying build/lib/clan_cli/cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/generate_test_vars clan-cli> copying build/lib/clan_cli/generate_test_vars/__init_.py -> build/bdist.linux-x86_64/wheel/./clan_cli/generate_test_vars clan-cli> copying build/lib/clan_cli/generate_test_vars/cli.py -> build/bdist.linux-x86_64/wheel/./clan_cli/generate_test_vars clan-cli> copying build/lib/clan_cli/generate_test_vars/test_generate_test_vars.py -> build/bdist.linux-x86_64/wheel/./clan_cli/generate_test_vars clan-cli> copying build/lib/clan_cli/completions_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli clan-cli> creating build/bdist.linux-x86_64/wheel/clan_cli/clan clan-cli> copying build/lib/clan_cli/clan/show_test.py -> build/bdist.linux-x86_64/wheel/./clan_cli/clan clan-cli> copying build/lib/clan_cli/clan/show.py -> build/bdist.linux-x86_64/wheel/./clan_cli/clan clan-cli> copying build/lib/clan_cli/clan/__init__.py -> build/bdist.linux-x86_64/wheel/./clan_cli/clan clan-cli> copying build/lib/clan_cli/clan/inspect.py -> build/bdist.linux-x86_64/wheel/./clan_cli/clan clan-cli> copying build/lib/clan_cli/clan/create.py -> build/bdist.linux-x86_64/wheel/./clan_cli/clan clan-cli> copying build/lib/clan_cli/arg_actions.py -> build/bdist.linux-x86_64/wheel/./clan_cli clan-cli> copying build/lib/clan_cli/conftest.py -> build/bdist.linux-x86_64/wheel/./clan_cli clan-cli> copying build/lib/clan_cli/profiler.py -> build/bdist.linux-x86_64/wheel/./clan_cli clan-cli> running install_egg_info clan-cli> Copying clan.egg-info to build/bdist.linux-x86_64/wheel/./clan-0.0.0-py3.13.egg-info clan-cli> running install_scripts clan-cli> creating build/bdist.linux-x86_64/wheel/clan-0.0.0.dist-info/WHEEL clan-cli> creating '/build/clan-cli-source/dist/.tmp-qyrzzz69/clan-0.0.0-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it clan-cli> adding 'clan_cli/__init__.py' clan-cli> adding 'clan_cli/__main__.py' clan-cli> adding 'clan_cli/arg_actions.py' clan-cli> adding 'clan_cli/cli.py' clan-cli> adding 'clan_cli/completions.py' clan-cli> adding 'clan_cli/completions_test.py' clan-cli> adding 'clan_cli/conftest.py' clan-cli> adding 'clan_cli/hyperlink.py' clan-cli> adding 'clan_cli/profiler.py' clan-cli> adding 'clan_cli/py.typed' clan-cli> adding 'clan_cli/select.py' clan-cli> adding 'clan_cli/ai/__init__.py' clan-cli> adding 'clan_cli/ai/cli.py' clan-cli> adding 'clan_cli/ai/tui.py' clan-cli> adding 'clan_cli/ai/workflow.py' clan-cli> adding 'clan_cli/backups/__init__.py' clan-cli> adding 'clan_cli/backups/create.py' clan-cli> adding 'clan_cli/backups/create_test.py' clan-cli> adding 'clan_cli/backups/list.py' clan-cli> adding 'clan_cli/backups/list_test.py' clan-cli> adding 'clan_cli/backups/restore.py' clan-cli> adding 'clan_cli/backups/restore_test.py' clan-cli> adding 'clan_cli/clan/__init__.py' clan-cli> adding 'clan_cli/clan/create.py' clan-cli> adding 'clan_cli/clan/inspect.py' clan-cli> adding 'clan_cli/clan/show.py' clan-cli> adding 'clan_cli/clan/show_test.py' clan-cli> adding 'clan_cli/facts/__init__.py' clan-cli> adding 'clan_cli/facts/check.py' clan-cli> adding 'clan_cli/facts/check_test.py' clan-cli> adding 'clan_cli/facts/cli.py' clan-cli> adding 'clan_cli/facts/generate.py' clan-cli> adding 'clan_cli/facts/generate_test.py' clan-cli> adding 'clan_cli/facts/list.py' clan-cli> adding 'clan_cli/facts/list_test.py' clan-cli> adding 'clan_cli/facts/upload.py' clan-cli> adding 'clan_cli/facts/upload_test.py' clan-cli> adding 'clan_cli/facts/public_modules/__init__.py' clan-cli> adding 'clan_cli/facts/public_modules/in_repo.py' clan-cli> adding 'clan_cli/facts/public_modules/vm.py' clan-cli> adding 'clan_cli/facts/secret_modules/__init__.py' clan-cli> adding 'clan_cli/facts/secret_modules/password_store.py' clan-cli> adding 'clan_cli/facts/secret_modules/sops.py' clan-cli> adding 'clan_cli/facts/secret_modules/vm.py' clan-cli> adding 'clan_cli/flash/__init__.py' clan-cli> adding 'clan_cli/flash/cli.py' clan-cli> adding 'clan_cli/flash/flash_cmd.py' clan-cli> adding 'clan_cli/flash/list.py' clan-cli> adding 'clan_cli/flash/list_test.py' clan-cli> adding 'clan_cli/generate_test_vars/__init_.py' clan-cli> adding 'clan_cli/generate_test_vars/cli.py' clan-cli> adding 'clan_cli/generate_test_vars/test_generate_test_vars.py' clan-cli> adding 'clan_cli/machines/__init__.py' clan-cli> adding 'clan_cli/machines/cli.py' clan-cli> adding 'clan_cli/machines/create.py' clan-cli> adding 'clan_cli/machines/delete.py' clan-cli> adding 'clan_cli/machines/generations.py' clan-cli> adding 'clan_cli/machines/hardware.py' clan-cli> adding 'clan_cli/machines/hardware_test.py' clan-cli> adding 'clan_cli/machines/install.py' clan-cli> adding 'clan_cli/machines/list.py' clan-cli> adding 'clan_cli/machines/list_test.py' clan-cli> adding 'clan_cli/machines/machines_test.py' clan-cli> adding 'clan_cli/machines/morph.py' clan-cli> adding 'clan_cli/machines/types.py' clan-cli> adding 'clan_cli/machines/update.py' clan-cli> adding 'clan_cli/machines/update_test.py' clan-cli> adding 'clan_cli/network/cli.py' clan-cli> adding 'clan_cli/network/list.py' clan-cli> adding 'clan_cli/network/overview.py' clan-cli> adding 'clan_cli/network/ping.py' clan-cli> adding 'clan_cli/qemu/__init__.py' clan-cli> adding 'clan_cli/qemu/qga.py' clan-cli> adding 'clan_cli/qemu/qmp.py' clan-cli> adding 'clan_cli/secrets/__init__.py' clan-cli> adding 'clan_cli/secrets/filters.py' clan-cli> adding 'clan_cli/secrets/folders.py' clan-cli> adding 'clan_cli/secrets/groups.py' clan-cli> adding 'clan_cli/secrets/import_sops.py' clan-cli> adding 'clan_cli/secrets/key.py' clan-cli> adding 'clan_cli/secrets/machines.py' clan-cli> adding 'clan_cli/secrets/secrets.py' clan-cli> adding 'clan_cli/secrets/sops.py' clan-cli> adding 'clan_cli/secrets/types.py' clan-cli> adding 'clan_cli/secrets/users.py' clan-cli> adding 'clan_cli/ssh/__init__.py' clan-cli> adding 'clan_cli/ssh/deploy_info.py' clan-cli> adding 'clan_cli/ssh/test_deploy_info.py' clan-cli> adding 'clan_cli/state/__init__.py' clan-cli> adding 'clan_cli/state/list.py' clan-cli> adding 'clan_cli/state/list_test.py' clan-cli> adding 'clan_cli/templates/__init__.py' clan-cli> adding 'clan_cli/templates/apply.py' clan-cli> adding 'clan_cli/templates/apply_disk.py' clan-cli> adding 'clan_cli/templates/apply_machine.py' clan-cli> adding 'clan_cli/templates/apply_test.py' clan-cli> adding 'clan_cli/templates/list.py' clan-cli> adding 'clan_cli/templates/list_test.py' clan-cli> adding 'clan_cli/tests/age_keys.py' clan-cli> adding 'clan_cli/tests/command.py' clan-cli> adding 'clan_cli/tests/fixture_error.py' clan-cli> adding 'clan_cli/tests/fixtures_flakes.py' clan-cli> adding 'clan_cli/tests/git_repo.py' clan-cli> adding 'clan_cli/tests/gpg_keys.py' clan-cli> adding 'clan_cli/tests/hosts.py' clan-cli> adding 'clan_cli/tests/ports.py' clan-cli> adding 'clan_cli/tests/root.py' clan-cli> adding 'clan_cli/tests/runtime.py' clan-cli> adding 'clan_cli/tests/sshd.py' clan-cli> adding 'clan_cli/tests/stdout.py' clan-cli> adding 'clan_cli/tests/temporary_dir.py' clan-cli> adding 'clan_cli/tests/test_api_dataclass_compat.py' clan-cli> adding 'clan_cli/tests/test_backups.py' clan-cli> adding 'clan_cli/tests/test_clan_nix_attrset.py' clan-cli> adding 'clan_cli/tests/test_cli.py' clan-cli> adding 'clan_cli/tests/test_create_flake.py' clan-cli> adding 'clan_cli/tests/test_flakes_cli.py' clan-cli> adding 'clan_cli/tests/test_git.py' clan-cli> adding 'clan_cli/tests/test_import_sops_cli.py' clan-cli> adding 'clan_cli/tests/test_inventory_serde.py' clan-cli> adding 'clan_cli/tests/test_machines_cli.py' clan-cli> adding 'clan_cli/tests/test_secrets_cli.py' clan-cli> adding 'clan_cli/tests/test_secrets_generate.py' clan-cli> adding 'clan_cli/tests/test_ssh_local.py' clan-cli> adding 'clan_cli/tests/test_upload_single_file.py' clan-cli> adding 'clan_cli/tests/test_vars.py' clan-cli> adding 'clan_cli/tests/test_vars_deployment.py' clan-cli> adding 'clan_cli/tests/test_vms_cli.py' clan-cli> adding 'clan_cli/tests/helpers/__init__.py' clan-cli> adding 'clan_cli/tests/helpers/cli.py' clan-cli> adding 'clan_cli/tests/helpers/validator.py' clan-cli> adding 'clan_cli/vars/_types.py' clan-cli> adding 'clan_cli/vars/check.py' clan-cli> adding 'clan_cli/vars/check_test.py' clan-cli> adding 'clan_cli/vars/cli.py' clan-cli> adding 'clan_cli/vars/fix.py' clan-cli> adding 'clan_cli/vars/fix_test.py' clan-cli> adding 'clan_cli/vars/generate.py' clan-cli> adding 'clan_cli/vars/generate_test.py' clan-cli> adding 'clan_cli/vars/generator.py' clan-cli> adding 'clan_cli/vars/get.py' clan-cli> adding 'clan_cli/vars/get_test.py' clan-cli> adding 'clan_cli/vars/graph.py' clan-cli> adding 'clan_cli/vars/graph_test.py' clan-cli> adding 'clan_cli/vars/keygen.py' clan-cli> adding 'clan_cli/vars/list.py' clan-cli> adding 'clan_cli/vars/list_test.py' clan-cli> adding 'clan_cli/vars/migration.py' clan-cli> adding 'clan_cli/vars/prompt.py' clan-cli> adding 'clan_cli/vars/set.py' clan-cli> adding 'clan_cli/vars/upload.py' clan-cli> adding 'clan_cli/vars/upload_test.py' clan-cli> adding 'clan_cli/vars/var.py' clan-cli> adding 'clan_cli/vars/public_modules/__init__.py' clan-cli> adding 'clan_cli/vars/public_modules/in_repo.py' clan-cli> adding 'clan_cli/vars/public_modules/vm.py' clan-cli> adding 'clan_cli/vars/secret_modules/__init__.py' clan-cli> adding 'clan_cli/vars/secret_modules/fs.py' clan-cli> adding 'clan_cli/vars/secret_modules/password_store.py' clan-cli> adding 'clan_cli/vars/secret_modules/sops.py' clan-cli> adding 'clan_cli/vars/secret_modules/vm.py' clan-cli> adding 'clan_cli/vms/__init__.py' clan-cli> adding 'clan_cli/vms/inspect.py' clan-cli> adding 'clan_cli/vms/qemu.py' clan-cli> adding 'clan_cli/vms/run.py' clan-cli> adding 'clan_cli/vms/virtiofsd.py' clan-cli> adding 'clan_cli/vms/waypipe.py' clan-cli> adding 'clan_cli/vms/mimetypes/applications/mimeapps.list' clan-cli> adding 'clan_cli/vms/mimetypes/applications/remote-viewer.desktop' clan-cli> adding 'clan_lib/__init__.py' clan-cli> adding 'clan_lib/conftest.py' clan-cli> adding 'clan_lib/py.typed' clan-cli> adding 'clan_lib/api/__init__.py' clan-cli> adding 'clan_lib/api/cli.py' clan-cli> adding 'clan_lib/api/directory.py' clan-cli> adding 'clan_lib/api/directory_test.py' clan-cli> adding 'clan_lib/api/mdns_discovery.py' clan-cli> adding 'clan_lib/api/serde.py' clan-cli> adding 'clan_lib/api/serde_deserialize_test.py' clan-cli> adding 'clan_lib/api/serde_serialize_test.py' clan-cli> adding 'clan_lib/api/tasks.py' clan-cli> adding 'clan_lib/api/type_to_jsonschema.py' clan-cli> adding 'clan_lib/api/type_to_jsonschema_test.py' clan-cli> adding 'clan_lib/async_run/__init__.py' clan-cli> adding 'clan_lib/backups/__init__.py' clan-cli> adding 'clan_lib/backups/create.py' clan-cli> adding 'clan_lib/backups/list.py' clan-cli> adding 'clan_lib/backups/restore.py' clan-cli> adding 'clan_lib/bwrap/__init__.py' clan-cli> adding 'clan_lib/bwrap/tests/test_bwrap.py' clan-cli> adding 'clan_lib/clan/__init__.py' clan-cli> adding 'clan_lib/clan/check.py' clan-cli> adding 'clan_lib/clan/check_test.py' clan-cli> adding 'clan_lib/clan/create.py' clan-cli> adding 'clan_lib/clan/get.py' clan-cli> adding 'clan_lib/clan/get_test.py' clan-cli> adding 'clan_lib/clan/test_create.py' clan-cli> adding 'clan_lib/clan/update.py' clan-cli> adding 'clan_lib/clan_core_templates/flake-module.nix' clan-cli> adding 'clan_lib/clan_core_templates/flake.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/default/clan.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/default/flake.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/default/modules/gnome.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/flake-parts/clan.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/flake-parts/flake.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/flake-parts/modules/gnome.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/flake-parts-minimal/checks.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/flake-parts-minimal/clan.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/flake-parts-minimal/devshells.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/flake-parts-minimal/flake.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/flake-parts-minimal/formatter.nix' clan-cli> adding 'clan_lib/clan_core_templates/clan/minimal/flake.nix' clan-cli> adding 'clan_lib/clan_core_templates/disk/single-disk/README.md' clan-cli> adding 'clan_lib/clan_core_templates/disk/single-disk/default.nix' clan-cli> adding 'clan_lib/clan_core_templates/machine/flash-installer/configuration.nix' clan-cli> adding 'clan_lib/clan_core_templates/machine/flash-installer/disko.nix' clan-cli> adding 'clan_lib/clan_core_templates/machine/new-machine/configuration.nix' clan-cli> adding 'clan_lib/cmd/__init__.py' clan-cli> adding 'clan_lib/colors/__init__.py' clan-cli> adding 'clan_lib/custom_logger/__init__.py' clan-cli> adding 'clan_lib/dirs/__init__.py' clan-cli> adding 'clan_lib/dirs/dirs_test.py' clan-cli> adding 'clan_lib/errors/__init__.py' clan-cli> adding 'clan_lib/fixtures/flake_hooks.py' clan-cli> adding 'clan_lib/fixtures/flakes/flakes.py' clan-cli> adding 'clan_lib/flake/__init__.py' clan-cli> adding 'clan_lib/flake/flake.py' clan-cli> adding 'clan_lib/flake/flake_cache_test.py' clan-cli> adding 'clan_lib/flake/flake_test.py' clan-cli> adding 'clan_lib/flash/__init__.py' clan-cli> adding 'clan_lib/flash/automount.py' clan-cli> adding 'clan_lib/flash/flash.py' clan-cli> adding 'clan_lib/flash/inhibit.sh' clan-cli> adding 'clan_lib/flash/list.py' clan-cli> adding 'clan_lib/flash/test_list.py' clan-cli> adding 'clan_lib/git/__init__.py' clan-cli> adding 'clan_lib/import_utils/__init__.py' clan-cli> adding 'clan_lib/import_utils/import_utils_test.py' clan-cli> adding 'clan_lib/jsonrpc/__init__.py' clan-cli> adding 'clan_lib/llm/__init__.py' clan-cli> adding 'clan_lib/llm/container_test.py' clan-cli> adding 'clan_lib/llm/endpoints.py' clan-cli> adding 'clan_lib/llm/llm_test.py' clan-cli> adding 'clan_lib/llm/llm_types.py' clan-cli> adding 'clan_lib/llm/orchestrator.py' clan-cli> adding 'clan_lib/llm/phases.py' clan-cli> adding 'clan_lib/llm/prompts.py' clan-cli> adding 'clan_lib/llm/schemas.py' clan-cli> adding 'clan_lib/llm/service.py' clan-cli> adding 'clan_lib/llm/test_process_chat_turn.py' clan-cli> adding 'clan_lib/llm/trace.py' clan-cli> adding 'clan_lib/llm/utils.py' clan-cli> adding 'clan_lib/locked_open/__init__.py' clan-cli> adding 'clan_lib/log_manager/__init__.py' clan-cli> adding 'clan_lib/log_manager/api.py' clan-cli> adding 'clan_lib/log_manager/test_log_manager.py' clan-cli> adding 'clan_lib/log_manager/test_url_encoding.py' clan-cli> adding 'clan_lib/machines/__init__.py' clan-cli> adding 'clan_lib/machines/actions.py' clan-cli> adding 'clan_lib/machines/actions_test.py' clan-cli> adding 'clan_lib/machines/delete.py' clan-cli> adding 'clan_lib/machines/generations.py' clan-cli> adding 'clan_lib/machines/hardware.py' clan-cli> adding 'clan_lib/machines/install.py' clan-cli> adding 'clan_lib/machines/list.py' clan-cli> adding 'clan_lib/machines/machines.py' clan-cli> adding 'clan_lib/machines/morph.py' clan-cli> adding 'clan_lib/machines/suggestions.py' clan-cli> adding 'clan_lib/machines/test_suggestions.py' clan-cli> adding 'clan_lib/machines/update.py' clan-cli> adding 'clan_lib/metrics/__init__.py' clan-cli> adding 'clan_lib/metrics/telegraf.py' clan-cli> adding 'clan_lib/metrics/version.py' clan-cli> adding 'clan_lib/network/__init__.py' clan-cli> adding 'clan_lib/network/check.py' clan-cli> adding 'clan_lib/network/direct.py' clan-cli> adding 'clan_lib/network/network.py' clan-cli> adding 'clan_lib/network/network_test.py' clan-cli> adding 'clan_lib/network/qr_code.py' clan-cli> adding 'clan_lib/network/tor/__init__.py' clan-cli> adding 'clan_lib/network/tor/lib.py' clan-cli> adding 'clan_lib/network/zerotier/__init__.py' clan-cli> adding 'clan_lib/network/zerotier/lib.py' clan-cli> adding 'clan_lib/nix/__init__.py' clan-cli> adding 'clan_lib/nix/allowed-packages.json' clan-cli> adding 'clan_lib/nix_models/clan.py' clan-cli> adding 'clan_lib/persist/__init__.py' clan-cli> adding 'clan_lib/persist/introspection.py' clan-cli> adding 'clan_lib/persist/inventory_store.py' clan-cli> adding 'clan_lib/persist/inventory_store_test.py' clan-cli> adding 'clan_lib/persist/patch_engine.py' clan-cli> adding 'clan_lib/persist/patch_engine_test.py' clan-cli> adding 'clan_lib/persist/path_utils.py' clan-cli> adding 'clan_lib/persist/path_utils_test.py' clan-cli> adding 'clan_lib/persist/validate.py' clan-cli> adding 'clan_lib/persist/write_rules.py' clan-cli> adding 'clan_lib/persist/write_rules_test.py' clan-cli> adding 'clan_lib/sandbox_exec/__init__.py' clan-cli> adding 'clan_lib/sandbox_exec/tests/test_sandbox_exec.py' clan-cli> adding 'clan_lib/service_runner/__init__.py' clan-cli> adding 'clan_lib/service_runner/container_test.py' clan-cli> adding 'clan_lib/service_runner/protocols.py' clan-cli> adding 'clan_lib/service_runner/systemd_user.py' clan-cli> adding 'clan_lib/services/modules.py' clan-cli> adding 'clan_lib/services/modules_test.py' clan-cli> adding 'clan_lib/ssh/__init__.py' clan-cli> adding 'clan_lib/ssh/create.py' clan-cli> adding 'clan_lib/ssh/create_test.py' clan-cli> adding 'clan_lib/ssh/host.py' clan-cli> adding 'clan_lib/ssh/host_key.py' clan-cli> adding 'clan_lib/ssh/localhost.py' clan-cli> adding 'clan_lib/ssh/localhost_test.py' clan-cli> adding 'clan_lib/ssh/remote.py' clan-cli> adding 'clan_lib/ssh/remote_test.py' clan-cli> adding 'clan_lib/ssh/socks_wrapper.py' clan-cli> adding 'clan_lib/ssh/sudo_askpass_proxy.py' clan-cli> adding 'clan_lib/ssh/sudo_askpass_proxy.sh' clan-cli> adding 'clan_lib/ssh/upload.py' clan-cli> adding 'clan_lib/tags/__init__.py' clan-cli> adding 'clan_lib/tags/list.py' clan-cli> adding 'clan_lib/tags/list_test.py' clan-cli> adding 'clan_lib/templates/__init__.py' clan-cli> adding 'clan_lib/templates/disk.py' clan-cli> adding 'clan_lib/templates/filesystem.py' clan-cli> adding 'clan_lib/templates/handler.py' clan-cli> adding 'clan_lib/templates/template_url.py' clan-cli> adding 'clan_lib/templates/template_url_test.py' clan-cli> adding 'clan_lib/tests/__init__.py' clan-cli> adding 'clan_lib/tests/test_create.py' clan-cli> adding 'clan_lib/validator/hostname.py' clan-cli> adding 'clan_lib/vars/__init__.py' clan-cli> adding 'clan_lib/vars/generate.py' clan-cli> adding 'clan-0.0.0.dist-info/METADATA' clan-cli> adding 'clan-0.0.0.dist-info/WHEEL' clan-cli> adding 'clan-0.0.0.dist-info/entry_points.txt' clan-cli> adding 'clan-0.0.0.dist-info/top_level.txt' clan-cli> adding 'clan-0.0.0.dist-info/RECORD' clan-cli> removing build/bdist.linux-x86_64/wheel clan-cli> Successfully built clan-0.0.0-py3-none-any.whl clan-cli> Finished creating a wheel... clan-cli> Finished executing pypaBuildPhase clan-cli> Running phase: pythonRuntimeDepsCheckHook clan-cli> Executing pythonRuntimeDepsCheck clan-cli> Checking runtime dependencies for clan-0.0.0-py3-none-any.whl clan-cli> Finished executing pythonRuntimeDepsCheck clan-cli> Running phase: installPhase clan-cli> Executing pypaInstallPhase clan-cli> Successfully installed clan-0.0.0-py3-none-any.whl clan-cli> Finished executing pypaInstallPhase clan-cli> Running phase: pythonOutputDistPhase clan-cli> Executing pythonOutputDistPhase clan-cli> Finished executing pythonOutputDistPhase clan-cli> Running phase: fixupPhase clan-cli> shrinking RPATHs of ELF executables and libraries in /nix/store/a3h3xph1l9ib4r4xppp93dg9x057q88w-clan-cli clan-cli> checking for references to /build/ in /nix/store/a3h3xph1l9ib4r4xppp93dg9x057q88w-clan-cli... clan-cli> patching script interpreter paths in /nix/store/a3h3xph1l9ib4r4xppp93dg9x057q88w-clan-cli clan-cli> stripping (with command strip and flags -S -p) in /nix/store/a3h3xph1l9ib4r4xppp93dg9x057q88w-clan-cli/lib /nix/store/a3h3xph1l9ib4r4xppp93dg9x057q88w-clan-cli/bin clan-cli> shrinking RPATHs of ELF executables and libraries in /nix/store/m8pqq368m8y25nddrz8ls7gqs0pjg53a-clan-cli-dist clan-cli> checking for references to /build/ in /nix/store/m8pqq368m8y25nddrz8ls7gqs0pjg53a-clan-cli-dist... clan-cli> patching script interpreter paths in /nix/store/m8pqq368m8y25nddrz8ls7gqs0pjg53a-clan-cli-dist clan-cli> Rewriting #!/nix/store/829wb290i87wngxlh404klwxql5v18p4-python3-3.13.7/bin/python3.13 to #!/nix/store/829wb290i87wngxlh404klwxql5v18p4-python3-3.13.7 clan-cli> wrapping `/nix/store/a3h3xph1l9ib4r4xppp93dg9x057q88w-clan-cli/bin/clan'... clan-cli> Rewriting #!/nix/store/829wb290i87wngxlh404klwxql5v18p4-python3-3.13.7/bin/python3.13 to #!/nix/store/829wb290i87wngxlh404klwxql5v18p4-python3-3.13.7 clan-cli> wrapping `/nix/store/a3h3xph1l9ib4r4xppp93dg9x057q88w-clan-cli/bin/clan-generate-test-vars'... clan-cli> Executing pythonRemoveTestsDir clan-cli> Finished executing pythonRemoveTestsDir clan-cli> Running phase: installCheckPhase clan-cli> usage: clan [-h] [SUBCOMMAND] clan-cli> clan-cli> The clan cli tool clan-cli> clan-cli> positional arguments: clan-cli> {show,backups,b,flakes,f,templates,flash,ssh,secrets,facts,vars,va,machines,m,vms,select,se,network,net,state,st,ai} clan-cli> show Show meta information about the clan clan-cli> backups (b) Manage backups of clan machines clan-cli> flakes (f) Create a clan flake inside the current directory clan-cli> templates Interact with templates clan-cli> flash Flashes your machine to an USB drive clan-cli> ssh Ssh to a remote machine clan-cli> secrets Manage secrets clan-cli> facts Manage facts clan-cli> vars (va) Manage vars clan-cli> machines (m) Manage machines and their configuration clan-cli> vms Manage virtual machines clan-cli> select (se) Select nixos values from the flake clan-cli> network (net) Manage networks clan-cli> state (st) Query state information about machines clan-cli> ai AI-powered service suggestions clan-cli> clan-cli> options: clan-cli> -h, --help show this help message and exit clan-cli> clan-cli> Online reference for the clan cli tool: https://docs.clan.lol/reference/cli clan-cli> For more detailed information, visit: https://docs.clan.lol clan-cli> clan-cli> Running phase: pythonCatchConflictsPhase clan-cli> Running phase: pythonRemoveBinBytecodePhase clan-cli> Running phase: pythonImportsCheckPhase clan-cli> Executing pythonImportsCheckPhase building '/nix/store/alin23sw8p107qw50vzfzp8yzg9qzhbd-etc-profile.drv' on nix-store.geninf.io:50051 etc-profile> build-x86-01: building alin23sw8p107qw50vzfzp8yzg9qzhbd-etc-profile.drv building '/nix/store/mzmm271inn7bv77kklkcjsf1yqpnrqgz-python3-3.13.7-env.drv' on nix-store.geninf.io:50051 python3-3.13.7-env> build-x86-01: building mzmm271inn7bv77kklkcjsf1yqpnrqgz-python3-3.13.7-env.drv python3-3.13.7-env> created 257 symlinks in user environment building '/nix/store/h08nkp22f7xmgxyv9wqm5w8laackc205-system-path.drv' on nix-store.geninf.io:50051 system-path> build-x86-01: building h08nkp22f7xmgxyv9wqm5w8laackc205-system-path.drv system-path> pkgs.buildEnv warning: colliding subpath (ignored): `/nix/store/jb6chw13day1bzsaw8njb8347sqqwb55-python3-3.13.7-env/bin/clan' and `/nix/store/a3h3xph1l9ib4r4xppp93dg9x057q88w-clan-cli/bin/clan' system-path> pkgs.buildEnv warning: colliding subpath (ignored): `/nix/store/jb6chw13day1bzsaw8njb8347sqqwb55-python3-3.13.7-env/bin/clan-generate-test-vars' and `/nix/store/a3h3xph1l9ib4r4xppp93dg9x057q88w-clan-cli/bin/clan-generate-test-vars' system-path> created 6620 symlinks in user environment building '/nix/store/2i4qdxsam1fq57kfzcwvq4gsrnc8kj6g-dbus-1.drv' on nix-store.geninf.io:50051 dbus-1> build-x86-01: building 2i4qdxsam1fq57kfzcwvq4gsrnc8kj6g-dbus-1.drv building '/nix/store/h471zzlslhnzihbsknx1p5c7rxq05z99-X-Restart-Triggers-dbus.drv' on nix-store.geninf.io:50051 X-Restart-Triggers-dbus> build-x86-01: building h471zzlslhnzihbsknx1p5c7rxq05z99-X-Restart-Triggers-dbus.drv building '/nix/store/5hikd1s135gxibs14mip3s5l9an3smmk-unit-dbus.service.drv' on nix-store.geninf.io:50051 unit-dbus.service> build-x86-01: building 5hikd1s135gxibs14mip3s5l9an3smmk-unit-dbus.service.drv building '/nix/store/y1v8m0cjzd2h0b3jrlmr9xam9s5n564n-user-units.drv' on nix-store.geninf.io:50051 user-units> build-x86-01: building y1v8m0cjzd2h0b3jrlmr9xam9s5n564n-user-units.drv building '/nix/store/hcsiv9dcq6bdxcy44g2cc44k173la9zk-unit-dbus.service.drv' on nix-store.geninf.io:50051 unit-dbus.service> gi-build-x86-02: building hcsiv9dcq6bdxcy44g2cc44k173la9zk-unit-dbus.service.drv building '/nix/store/z6ksas9wlwf291ivqpq582r68ym5kgr7-system-units.drv' on nix-store.geninf.io:50051 system-units> gi-build-x86-02: building z6ksas9wlwf291ivqpq582r68ym5kgr7-system-units.drv building '/nix/store/b68i2k0d9yprbg03rcgqh5cf38zd6w9r-etc.drv' on nix-store.geninf.io:50051 etc> build-x86-01: building b68i2k0d9yprbg03rcgqh5cf38zd6w9r-etc.drv building '/nix/store/nla6hphlm621q7z2kfk3hgddc1w1xlwk-nixos-system-machine-test.drv' on nix-store.geninf.io:50051 nixos-system-machine-test> build-x86-01: building nla6hphlm621q7z2kfk3hgddc1w1xlwk-nixos-system-machine-test.drv building '/nix/store/wahl50drgk8888j3b2y531qkpq14mipw-closure-info.drv' on nix-store.geninf.io:50051 closure-info> build-x86-01: building wahl50drgk8888j3b2y531qkpq14mipw-closure-info.drv closure-info> structuredAttrs is enabled building '/nix/store/1l5k5aikagpflq1585g0ghzqiigrkzjr-nixos-test-driver-llm.drv' on nix-store.geninf.io:50051 nixos-test-driver-llm> build-x86-01: building 1l5k5aikagpflq1585g0ghzqiigrkzjr-nixos-test-driver-llm.drv nixos-test-driver-llm> Running type check (enable/disable: config.skipTypeCheck) nixos-test-driver-llm> See https://nixos.org/manual/nixos/stable/#test-opt-skipTypeCheck nixos-test-driver-llm> Success: no issues found in 1 source file building '/nix/store/q9li5rgrq1scj047aw15p7k7fsxncldz-container-test-run-llm.drv' on nix-store.geninf.io:50051 container-test-run-llm> build-x86-01: building q9li5rgrq1scj047aw15p7k7fsxncldz-container-test-run-llm.drv container-test-run-llm> mount(/nix/store/03xyz7ls27b2nlnp8bpn7l5c0nbvzj3k-acl-2.3.2-bin, /.containers/machine/nix/store/03xyz7ls27b2nlnp8bpn7l5c0nbvzj3k-acl-2.3.2-bin) container-test-run-llm> mount(/nix/store/3apspx5fhyb83153axf1b80ifiklgjbh-acl-2.3.2, /.containers/machine/nix/store/3apspx5fhyb83153axf1b80ifiklgjbh-acl-2.3.2) container-test-run-llm> mount(/nix/store/882qppwzbxvv5z7892qxxyanfgmcidb2-acl-2.3.2-doc, /.containers/machine/nix/store/882qppwzbxvv5z7892qxxyanfgmcidb2-acl-2.3.2-doc) container-test-run-llm> mount(/nix/store/pn5bgnglbbgi88p0p62n9vsn5p2wm7x0-acl-2.3.2-dev, /.containers/machine/nix/store/pn5bgnglbbgi88p0p62n9vsn5p2wm7x0-acl-2.3.2-dev) container-test-run-llm> mount(/nix/store/x4j9cwjdl0j2l5bv907is26hrlv9acli-perl5.40.0-TimeDate-2.33, /.containers/machine/nix/store/x4j9cwjdl0j2l5bv907is26hrlv9acli-perl5.40.0-TimeDate-2.33) container-test-run-llm> mount(/nix/store/y4pgxmsnvsaxd9i8i1pbw4zdac8v90nf-acl-2.3.2-man, /.containers/machine/nix/store/y4pgxmsnvsaxd9i8i1pbw4zdac8v90nf-acl-2.3.2-man) container-test-run-llm> additionally exposed symbols: container-test-run-llm> machine, container-test-run-llm> start_all, machines, driver, Machine container-test-run-llm> container-test-run-llm> container-test-run-llm> <<< NixOS Stage 2 >>> container-test-run-llm> container-test-run-llm> booting system configuration /nix/store/qa9j1v0wwzg6cy4dd543lg3fz7ms4bw7-nixos-system-machine-test container-test-run-llm> running activation script... container-test-run-llm> setting up /etc... container-test-run-llm> 2: host0@if3: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 container-test-run-llm> link/ether 0e:74:26:22:81:c2 brd ff:ff:ff:ff:ff:ff link-netnsid 0 container-test-run-llm> starting systemd... container-test-run-llm> systemd 257.8 running in system mode (+PAM +AUDIT -SELINUX +APPARMOR +IMA +IPE +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK -BTF -XKBCOMMON +UTMP -SYSVINIT +LIBARCHIVE) container-test-run-llm> container-test-run-llm> Detected virtualization systemd-nspawn. container-test-run-llm> container-test-run-llm> Detected architecture x86-64. container-test-run-llm> container-test-run-llm> Detected first boot. container-test-run-llm> container-test-run-llm> Initializing machine ID from container UUID. container-test-run-llm> container-test-run-llm> bpf-restrict-fs: BPF LSM hook not enabled in the kernel, BPF LSM not supported. container-test-run-llm> container-test-run-llm> Populated /etc with preset unit settings. container-test-run-llm> container-test-run-llm> Queued start job for default target Multi-User System. container-test-run-llm> container-test-run-llm> container-test-run-llm> container-test-run-llm> container-test-run-llm> <<< Welcome to NixOS test (x86_64) - console >>> container-test-run-llm> + systemctl --no-pager show multi-user.target container-test-run-llm> + systemctl --no-pager show user@1000.service container-test-run-llm> + chown text-user:systemd-journal /var/log/journal/1ee78b6decab46af9bb8a6812967d413/user-1000.journal container-test-run-llm> + chmod 640 /var/log/journal/1ee78b6decab46af9bb8a6812967d413/user-1000.journal container-test-run-llm> Running tests with command: su - text-user -c 'pytest -s -n0 -m service_runner -p no:cacheprovider -o addopts="" /nix/store/9hsfvcln2h725vvp4ck8v3la3xl1cw4k-clan-cli-source-with-llm/clan_lib/llm' container-test-run-llm> + su - text-user -c 'pytest -s -n0 -m service_runner -p no:cacheprovider -o addopts="" /nix/store/9hsfvcln2h725vvp4ck8v3la3xl1cw4k-clan-cli-source-with-llm/clan_lib/llm' container-test-run-llm> su: Authentication service cannot retrieve authentication info container-test-run-llm> (Ignored) container-test-run-llm> Downloading Ollama... container-test-run-llm> ollama container-test-run-llm> Caller: /nix/store/9hsfvcln2h725vvp4ck8v3la3xl1cw4k-clan-cli-source-with-llm/clan_lib/llm/service.py:23::run_llm_service container-test-run-llm> container-test-run-llm> Usage: container-test-run-llm> ollama [flags] container-test-run-llm> ollama [command] container-test-run-llm> container-test-run-llm> Available Commands: container-test-run-llm> serve Start ollama container-test-run-llm> create Create a model container-test-run-llm> show Show information for a model container-test-run-llm> run Run a model container-test-run-llm> stop Stop a running model container-test-run-llm> pull Pull a model from a registry container-test-run-llm> push Push a model to a registry container-test-run-llm> signin Sign in to ollama.com container-test-run-llm> signout Sign out from ollama.com container-test-run-llm> list List models container-test-run-llm> ps List running models container-test-run-llm> cp Copy a model container-test-run-llm> rm Remove a model container-test-run-llm> help Help about any command container-test-run-llm> container-test-run-llm> Flags: container-test-run-llm> -h, --help help for ollama container-test-run-llm> -v, --version Show version information container-test-run-llm> container-test-run-llm> Use "ollama [command] --help" for more information about a command. container-test-run-llm> systemctl \ container-test-run-llm> --user stop \ container-test-run-llm> service-runner-ollama.service container-test-run-llm> Caller: /nix/store/9hsfvcln2h725vvp4ck8v3la3xl1cw4k-clan-cli-source-with-llm/clan_lib/service_runner/systemd_user.py:71::_systemctl container-test-run-llm> container-test-run-llm> Failed to stop service-runner-ollama.service: Unit service-runner-ollama.service not loaded. container-test-run-llm> systemctl \ container-test-run-llm> --user reset-failed \ container-test-run-llm> service-runner-ollama.service container-test-run-llm> Caller: /nix/store/9hsfvcln2h725vvp4ck8v3la3xl1cw4k-clan-cli-source-with-llm/clan_lib/service_runner/systemd_user.py:189::start_service container-test-run-llm> container-test-run-llm> Failed to reset failed state of unit service-runner-ollama.service: Unit service-runner-ollama.service not loaded. container-test-run-llm> systemctl \ container-test-run-llm> --user daemon-reload container-test-run-llm> Caller: /nix/store/9hsfvcln2h725vvp4ck8v3la3xl1cw4k-clan-cli-source-with-llm/clan_lib/service_runner/systemd_user.py:111::_create_target_file container-test-run-llm> container-test-run-llm> systemd-run \ container-test-run-llm> --user --unit=service-runner-ollama \ container-test-run-llm> '--description=Service runner for ollama' --property=PartOf=service-runner-clan.target \ container-test-run-llm> ollama \ container-test-run-llm> serve container-test-run-llm> Caller: /nix/store/9hsfvcln2h725vvp4ck8v3la3xl1cw4k-clan-cli-source-with-llm/clan_lib/service_runner/systemd_user.py:233::start_service container-test-run-llm> container-test-run-llm> Running as unit: service-runner-ollama.service; invocation ID: fe8eec9810ed4d48bf3fc7c3b0c7db25 container-test-run-llm> Waiting for Ollama to start... container-test-run-llm> ollama \ container-test-run-llm> list container-test-run-llm> Caller: /nix/store/9hsfvcln2h725vvp4ck8v3la3xl1cw4k-clan-cli-source-with-llm/clan_lib/llm/service.py:60::create_llm_model container-test-run-llm> container-test-run-llm> [ollama] >>> sending 3 message(s) container-test-run-llm> [ollama] >>> message[00] role=system len=3112 container-test-run-llm> [ollama] >>> message[00] content: container-test-run-llm> You are a clan deployment planner assistant in DISCOVERY MODE. container-test-run-llm> container-test-run-llm> Scope container-test-run-llm> - You are only gathering information to decide which service documentation to fetch. container-test-run-llm> - Service selection and configuration will happen later with NEW instructions; ignore those responsibilities for now. container-test-run-llm> container-test-run-llm> Goal container-test-run-llm> - Understand WHAT the user wants to accomplish and identify candidate service(s) that could fulfill the request. container-test-run-llm> - IMPORTANT: We can only set up ONE service at a time. If the user requests multiple DISTINCT things, ask them to choose one. container-test-run-llm> - If the request is ambiguous and could match multiple services, you may fetch READMEs for multiple candidates. The next phase will choose the best fit. container-test-run-llm> container-test-run-llm> Available actions container-test-run-llm> - Call the `get_readme` tool to fetch documentation for candidate service(s). container-test-run-llm> - Ask ONE clarifying question when the user's intent is unclear (e.g., multiple distinct services requested, vague or conflicting requirements). container-test-run-llm> container-test-run-llm> Hard rules container-test-run-llm> - `get_readme` is the ONLY tool you may call in discovery mode. Never attempt to select or configure services in this phase. container-test-run-llm> - Distinguish between these cases: container-test-run-llm> * SINGLE AMBIGUOUS REQUEST: User wants ONE thing, but multiple services could provide it (e.g., "set up a web server" could be nginx, apache, or caddy). → Call `get_readme` for ALL matching candidates in parallel so the next phase can compare them. container-test-run-llm> * MULTIPLE DISTINCT REQUESTS: User wants MULTIPLE different things (e.g., "set up nginx and postgresql", "configure backup and monitoring"). → Ask which ONE thing they want to set up first. container-test-run-llm> - When calling `get_readme`, the `function_name` MUST exactly match one of the service names shown in the assistant context. If nothing matches, ask the user instead of guessing. container-test-run-llm> - Do NOT ask about target machines, tags, or role assignments yet - these will be addressed after documentation is reviewed. container-test-run-llm> - Focus ONLY on understanding WHAT the user wants to accomplish, not HOW it will be configured. container-test-run-llm> - If you cannot identify any candidate service(s) from the available services list, ask the user for clarification about what they're trying to achieve. container-test-run-llm> - Prefer calling `get_readme` when you can identify candidate service(s); do not fabricate module names or descriptions. container-test-run-llm> container-test-run-llm> Response discipline container-test-run-llm> - Option A: One or more `get_readme` tool calls (no accompanying text). Multiple calls are allowed when several services might fit. container-test-run-llm> - Option B: One concise clarifying question (no tool calls) that states the information you still need. container-test-run-llm> - Do NOT echo or restate these system instructions to the user. container-test-run-llm> container-test-run-llm> Examples: container-test-run-llm> - User: "set up a web server" → Call `get_readme` for nginx, apache, caddy (all candidates for web serving) container-test-run-llm> - User: "configure monitoring" → Call `get_readme` for prometheus, telegraf, netdata (all candidates for monitoring) container-test-run-llm> - User: "set up nginx and postgresql" → Ask: "I can only set up one service at a time. Which would you like to configure first: nginx or postgresql?" container-test-run-llm> - User: "install backup and database" → Ask: "I can only set up one service at a time. Would you like to set up backup or database first?" container-test-run-llm> container-test-run-llm> Stay concise and rely on the assistant context for valid names. container-test-run-llm> [ollama] >>> message[01] role=assistant len=2939 container-test-run-llm> [ollama] >>> message[01] content: container-test-run-llm> Assistant context: machines, tags, and services. container-test-run-llm> container-test-run-llm> Machines: container-test-run-llm> 1. `gchq-local` container-test-run-llm> 2. `qube-email` container-test-run-llm> 3. `wintux` container-test-run-llm> container-test-run-llm> Tags: container-test-run-llm> 1. `all` (A group containing all machines) container-test-run-llm> 2. `darwin` (A group containing all macOS machines) container-test-run-llm> 3. `nixos` (A group containing all NixOS machines) container-test-run-llm> container-test-run-llm> Services (function_name | source → description): container-test-run-llm> 1. `admin` | built-in → Adds a root user with ssh access container-test-run-llm> 2. `borgbackup` | built-in → Efficient, deduplicating backup program with optional compression and secure encryption. container-test-run-llm> 3. `certificates` | built-in → Sets up a PKI certificate chain using step-ca container-test-run-llm> 4. `coredns` | built-in → Clan-internal DNS and service exposure container-test-run-llm> 5. `data-mesher` | built-in → Set up data-mesher container-test-run-llm> 6. `dyndns` | built-in → A dynamic DNS service to auto update domain IPs container-test-run-llm> 7. `emergency-access` | built-in → Set recovery password for emergency access to machine to debug boot issues container-test-run-llm> 8. `garage` | built-in → S3-compatible object store for small self-hosted geo-distributed deployments container-test-run-llm> 9. `hello-world` | built-in → This is a test container-test-run-llm> 10. `importer` | built-in → Convenient, structured module imports for hosts. container-test-run-llm> 11. `internet` | built-in → Part of the clan networking abstraction to define how to reach machines from outside the clan network over the internet, if defined has the highest priority container-test-run-llm> 12. `kde` | built-in → Sets up a graphical desktop environment container-test-run-llm> 13. `localbackup` | built-in → Automatically backups current machine to local directory or a mounted drive. container-test-run-llm> 14. `matrix-synapse` | built-in → A federated messaging server with end-to-end encryption. container-test-run-llm> 15. `monitoring` | built-in → Monitoring service for the nodes in your clan container-test-run-llm> 16. `mycelium` | built-in → End-2-end encrypted P2P IPv6 overlay network container-test-run-llm> 17. `packages` | built-in → Define package sets from nixpkgs and install them on one or more machines container-test-run-llm> 18. `sshd` | built-in → Enables secure remote access to the machine over SSH with automatic host key management and optional CA-signed host certificates. container-test-run-llm> 19. `syncthing` | built-in → Syncthing is a continuous file synchronization program with automatic peer discovery container-test-run-llm> 20. `tor` | built-in → Part of the clan networking abstraction to define how to reach machines through the Tor network, if used has the lowest priority container-test-run-llm> 21. `trusted-nix-caches` | built-in → This module sets the `clan.lol` and `nix-community` cache up as a trusted cache. container-test-run-llm> 22. `users` | built-in → An instance of this module will create a user account on the added machines, along with a generated password that is constant across machines and user settings. container-test-run-llm> 23. `wifi` | built-in → Pre configure wifi networks to connect to container-test-run-llm> 24. `wireguard` | built-in → Wireguard-based VPN mesh network with automatic IPv6 address allocation container-test-run-llm> 25. `yggdrasil` | built-in → Yggdrasil encrypted IPv6 routing overlay network container-test-run-llm> 26. `zerotier` | built-in → Zerotier Mesh VPN Service for secure P2P networking between machines container-test-run-llm> container-test-run-llm> Reminder: `function_name` for `get_readme` must match one of the service names above exactly. container-test-run-llm> [ollama] >>> message[02] role=user len=27 container-test-run-llm> [ollama] >>> message[02] content: container-test-run-llm> What VPN options do I have? container-test-run-llm> [ollama] >>> tool summary: get_readme container-test-run-llm> [ollama] >>> tool payload: container-test-run-llm> [ container-test-run-llm> { container-test-run-llm> "type": "function", container-test-run-llm> "function": { container-test-run-llm> "name": "get_readme", container-test-run-llm> "description": "Retrieve detailed documentation (README) for a specific service/module to learn more about its roles, configuration, and requirements before deciding to use it.", container-test-run-llm> "parameters": { container-test-run-llm> "type": "object", container-test-run-llm> "properties": { container-test-run-llm> "input_name": { container-test-run-llm> "type": [ container-test-run-llm> "string", container-test-run-llm> "null" container-test-run-llm> ], container-test-run-llm> "description": "The input/source name of the module (e.g., 'clan-core'). Use null for built-in modules." container-test-run-llm> }, container-test-run-llm> "function_name": { container-test-run-llm> "type": "string", container-test-run-llm> "description": "The name of the service/function to get documentation for (e.g., 'zerotier', 'postgresql').", container-test-run-llm> "enum": [ container-test-run-llm> "admin", container-test-run-llm> "borgbackup", container-test-run-llm> "certificates", container-test-run-llm> "coredns", container-test-run-llm> "data-mesher", container-test-run-llm> "dyndns", container-test-run-llm> "emergency-access", container-test-run-llm> "garage", container-test-run-llm> "hello-world", container-test-run-llm> "importer", container-test-run-llm> "internet", container-test-run-llm> "kde", container-test-run-llm> "localbackup", container-test-run-llm> "matrix-synapse", container-test-run-llm> "monitoring", container-test-run-llm> "mycelium", container-test-run-llm> "packages", container-test-run-llm> "sshd", container-test-run-llm> "syncthing", container-test-run-llm> "tor", container-test-run-llm> "trusted-nix-caches", container-test-run-llm> "users", container-test-run-llm> "wifi", container-test-run-llm> "wireguard", container-test-run-llm> "yggdrasil", container-test-run-llm> "zerotier" container-test-run-llm> ] container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "required": [ container-test-run-llm> "function_name" container-test-run-llm> ] container-test-run-llm> } container-test-run-llm> } container-test-run-llm> } container-test-run-llm> ] container-test-run-llm> [ollama] <<< no textual response container-test-run-llm> [ollama] <<< call[00] name=get_readme container-test-run-llm> { container-test-run-llm> "function_name": "wireguard" container-test-run-llm> } container-test-run-llm> [ollama] <<< call[01] name=get_readme container-test-run-llm> { container-test-run-llm> "function_name": "zerotier" container-test-run-llm> } container-test-run-llm> [ollama] <<< call[02] name=get_readme container-test-run-llm> { container-test-run-llm> "function_name": "yggdrasil" container-test-run-llm> } container-test-run-llm> [ollama] >>> sending 3 message(s) container-test-run-llm> [ollama] >>> message[00] role=system len=2889 container-test-run-llm> [ollama] >>> message[00] content: container-test-run-llm> You are a clan deployment planner assistant in SERVICE SELECTION MODE. container-test-run-llm> container-test-run-llm> Context shift container-test-run-llm> - Discovery mode has finished. Ignore any instructions from earlier phases. container-test-run-llm> - You now have README documentation for one or more candidate services. container-test-run-llm> container-test-run-llm> Goal container-test-run-llm> - Review the provided READMEs and identify the best matching service for the user's intent. container-test-run-llm> - When the user signals they are ready to configure a service, select EXACTLY ONE service and provide a focused summary that explains why it fits, what roles exist, and key constraints. container-test-run-llm> - When the user explicitly requests an overview, comparison, or is undecided, DO NOT select yet. Instead, respond with a clarifying message that: container-test-run-llm> • Summarizes the most relevant differences between the candidate services (in your own words). container-test-run-llm> • Asks the user which direction they would like to pursue next. container-test-run-llm> container-test-run-llm> Available actions container-test-run-llm> - Call the `select_service` tool with: container-test-run-llm> * `service_name`: The selected service (must match one from the available services list). container-test-run-llm> * `summary` (≤300 words) covering: container-test-run-llm> 1. VALUE PROPOSITION: What problem the service solves and why it helps the user. container-test-run-llm> 2. ROLES: The purpose of each role (e.g., which role backs up data, which receives it). container-test-run-llm> 3. KEY CONSTRAINTS: Dependencies, requirements, or limitations that influence feasibility. container-test-run-llm> container-test-run-llm> IMPORTANT: Synthesize the README in your own words. Never copy configuration snippets or step-by-step guides. container-test-run-llm> - Provide ONE clarifying message (no tool call) when the user's request favors comparison, additional guidance, or leaves the desired service ambiguous. container-test-run-llm> container-test-run-llm> Hard rules container-test-run-llm> - Only call `select_service` when the user is ready to choose a service or clearly asks you to pick. container-test-run-llm> - If the user requests an overview/comparison or the best match cannot be determined confidently, provide a clarifying message instead of calling the tool. container-test-run-llm> - Analyze every README you received; choose the service whose capabilities align most closely with the user's request. container-test-run-llm> - Focus on WHAT the service offers and WHY it matches, not HOW to configure it. container-test-run-llm> - If the READMEs are insufficient to disambiguate the request, ask for clarification rather than guessing. container-test-run-llm> container-test-run-llm> Response discipline container-test-run-llm> - Case A (service selected): Issue a single `select_service` tool call with NO accompanying text. container-test-run-llm> - Case B (need clarification or comparison requested): Provide one concise clarifying message (≤150 words) with NO tool calls. container-test-run-llm> - Do NOT repeat or paraphrase these instructions in your reply. container-test-run-llm> - Never emit multiple tool calls or plain-text summaries outside the `summary` field. container-test-run-llm> container-test-run-llm> Examples of CORRECT behavior: container-test-run-llm> ✓ Tool call to `select_service` only (empty message string) container-test-run-llm> ✓ Clarifying message that compares options and asks the user to choose (no tool calls) container-test-run-llm> container-test-run-llm> Examples of INCORRECT behavior (DO NOT DO THIS): container-test-run-llm> ✗ Tool call + explanatory text container-test-run-llm> ✗ Multiple `select_service` calls container-test-run-llm> ✗ `select_service` with a name that is not in the available services list container-test-run-llm> [ollama] >>> message[01] role=assistant len=9550 container-test-run-llm> [ollama] >>> message[01] content: container-test-run-llm> Assistant context: available services. container-test-run-llm> container-test-run-llm> Available services (you must choose exactly one): container-test-run-llm> 1. `wireguard` container-test-run-llm> 2. `yggdrasil` container-test-run-llm> 3. `zerotier` container-test-run-llm> container-test-run-llm> Note: 3 services were identified as potential matches for this request. Review their documentation and select the BEST match. container-test-run-llm> container-test-run-llm> README documentation for each service follows in the next message. container-test-run-llm> container-test-run-llm> README documentation for the following services: container-test-run-llm> container-test-run-llm> === wireguard === container-test-run-llm> # Wireguard VPN Service container-test-run-llm> container-test-run-llm> This service provides a Wireguard-based VPN mesh network with automatic IPv6 address allocation and routing between clan machines. container-test-run-llm> container-test-run-llm> ## Overview container-test-run-llm> container-test-run-llm> The wireguard service creates a secure mesh network between clan machines using two roles: container-test-run-llm> - **Controllers**: Machines with public endpoints that act as connection points and routers container-test-run-llm> - **Peers**: Machines that connect through controllers to access the network container-test-run-llm> container-test-run-llm> ## Requirements container-test-run-llm> container-test-run-llm> - Controllers must have a publicly accessible endpoint (domain name or static IP) container-test-run-llm> - Peers must be in networks where UDP traffic is not blocked (uses port 51820 by default, configurable) container-test-run-llm> container-test-run-llm> ## Features container-test-run-llm> container-test-run-llm> - Automatic IPv6 address allocation using ULA (Unique Local Address) prefixes container-test-run-llm> - Full mesh connectivity between all machines container-test-run-llm> - Automatic key generation and distribution container-test-run-llm> - IPv6 forwarding on controllers for inter-peer communication container-test-run-llm> - Support for multiple controllers for redundancy container-test-run-llm> container-test-run-llm> ## Network Architecture container-test-run-llm> container-test-run-llm> ### IPv6 Address Allocation container-test-run-llm> - Base network: `/40` ULA prefix (deterministically generated from instance name) container-test-run-llm> - Controllers: Each gets a `/56` subnet from the base `/40` container-test-run-llm> - Peers: Each gets a unique 64-bit host suffix that is used in ALL controller subnets container-test-run-llm> container-test-run-llm> ### Addressing Design container-test-run-llm> - Each peer generates a unique host suffix (e.g., `:8750:a09b:0:1`) container-test-run-llm> - This suffix is appended to each controller's `/56` prefix to create unique addresses container-test-run-llm> - Example: peer1 with suffix `:8750:a09b:0:1` gets: container-test-run-llm> - `fd51:19c1:3b:f700:8750:a09b:0:1` in controller1's subnet container-test-run-llm> - `fd51:19c1:c1:aa00:8750:a09b:0:1` in controller2's subnet container-test-run-llm> - Controllers allow each peer's `/96` subnet for routing flexibility container-test-run-llm> container-test-run-llm> ### Connectivity container-test-run-llm> - Peers use a single WireGuard interface with multiple IPs (one per controller subnet) container-test-run-llm> - Controllers connect to ALL other controllers and ALL peers on a single interface container-test-run-llm> - Controllers have IPv6 forwarding enabled to route traffic between peers container-test-run-llm> - All traffic between peers flows through controllers container-test-run-llm> - Symmetric routing is maintained as each peer has consistent IPs across all controllers container-test-run-llm> container-test-run-llm> ### Example Network Topology container-test-run-llm> container-test-run-llm> ```mermaid container-test-run-llm> graph TB container-test-run-llm> subgraph Controllers container-test-run-llm> C1[controller1
endpoint: vpn1.example.com
fd51:19c1:3b:f700::/56] container-test-run-llm> C2[controller2
endpoint: vpn2.example.com
fd51:19c1:c1:aa00::/56] container-test-run-llm> end container-test-run-llm> container-test-run-llm> subgraph Peers container-test-run-llm> P1[peer1
designated: controller1] container-test-run-llm> P2[peer2
designated: controller2] container-test-run-llm> P3[peer3
designated: controller1] container-test-run-llm> end container-test-run-llm> container-test-run-llm> %% Controllers connect to each other container-test-run-llm> C1 <--> C2 container-test-run-llm> container-test-run-llm> %% All peers connect to all controllers container-test-run-llm> P1 <--> C1 container-test-run-llm> P1 <--> C2 container-test-run-llm> P2 <--> C1 container-test-run-llm> P2 <--> C2 container-test-run-llm> P3 <--> C1 container-test-run-llm> P3 <--> C2 container-test-run-llm> container-test-run-llm> %% Peer-to-peer traffic flows through controllers container-test-run-llm> P1 -.->|via controllers| P3 container-test-run-llm> P1 -.->|via controllers| P2 container-test-run-llm> P2 -.->|via controllers| P3 container-test-run-llm> container-test-run-llm> classDef controller fill:#f9f,stroke:#333,stroke-width:4px container-test-run-llm> classDef peer fill:#bbf,stroke:#333,stroke-width:2px container-test-run-llm> class C1,C2 controller container-test-run-llm> class P1,P2,P3 peer container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ## Configuration container-test-run-llm> container-test-run-llm> ### Basic Setup with Single Controller container-test-run-llm> container-test-run-llm> ```nix container-test-run-llm> # In your clan.nix container-test-run-llm> { container-test-run-llm> instances = { container-test-run-llm> wireguard = { container-test-run-llm> module.name = "wireguard"; container-test-run-llm> module.input = "clan-core"; container-test-run-llm> roles.controller = { container-test-run-llm> machines.server1 = {}; container-test-run-llm> settings = { container-test-run-llm> # Public endpoint where this controller can be reached container-test-run-llm> endpoint = "vpn.example.com"; container-test-run-llm> # Optional: Change the UDP port (default: 51820) container-test-run-llm> port = 51820; container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> roles.peer = { container-test-run-llm> # No configuration needed if only one controller exists container-test-run-llm> machines.laptop1 = {}; container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> } container-test-run-llm> } container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ### Multiple Controllers Setup container-test-run-llm> container-test-run-llm> ```nix container-test-run-llm> { container-test-run-llm> instances = { container-test-run-llm> wireguard = { container-test-run-llm> module.name = "wireguard"; container-test-run-llm> module.input = "clan-core"; container-test-run-llm> roles.controller.machines = { container-test-run-llm> server1.settings.endpoint = "vpn1.example.com"; container-test-run-llm> server2.settings.endpoint = "vpn2.example.com"; container-test-run-llm> server3.settings.endpoint = "vpn3.example.com"; container-test-run-llm> }; container-test-run-llm> roles.peer.machines.laptop1 = { container-test-run-llm> # Must specify which controller subnet is exposed as the default in /etc/hosts, when multiple controllers exist container-test-run-llm> settings.controller = "server1"; container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> } container-test-run-llm> } container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ### Advanced Options container-test-run-llm> container-test-run-llm> container-test-run-llm> ### Automatic Hostname Resolution container-test-run-llm> container-test-run-llm> The wireguard service automatically adds entries to `/etc/hosts` for all machines in the network. Each machine is accessible via its hostname in the format `.`. container-test-run-llm> container-test-run-llm> For example, with an instance named `vpn`: container-test-run-llm> - `server1.vpn` - resolves to server1's IPv6 address container-test-run-llm> - `laptop1.vpn` - resolves to laptop1's IPv6 address container-test-run-llm> container-test-run-llm> This allows machines to communicate using hostnames instead of IPv6 addresses: container-test-run-llm> container-test-run-llm> ```bash container-test-run-llm> # Ping another machine by hostname container-test-run-llm> ping6 server1.vpn container-test-run-llm> container-test-run-llm> # SSH to another machine container-test-run-llm> ssh user@laptop1.vpn container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ## Troubleshooting container-test-run-llm> container-test-run-llm> ### Check Wireguard Status container-test-run-llm> ```bash container-test-run-llm> sudo wg show container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ### Verify IP Addresses container-test-run-llm> ```bash container-test-run-llm> ip addr show dev container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ### Check Routing container-test-run-llm> ```bash container-test-run-llm> ip -6 route show dev container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ### Interface Fails to Start: "Address already in use" container-test-run-llm> container-test-run-llm> If you see this error in your logs: container-test-run-llm> ``` container-test-run-llm> wireguard: Could not bring up interface, ignoring: Address already in use container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> This means the configured port (default: 51820) is already in use by another service or wireguard instance. Solutions: container-test-run-llm> container-test-run-llm> 1. **Check for conflicting wireguard instances:** container-test-run-llm> ```bash container-test-run-llm> sudo wg show container-test-run-llm> sudo ss -ulnp | grep 51820 container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> 2. **Use a different port:** container-test-run-llm> ```nix container-test-run-llm> services.wireguard.myinstance = { container-test-run-llm> roles.controller = { container-test-run-llm> endpoint = "vpn.example.com"; container-test-run-llm> port = 51821; # Use a different port container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> 3. **Ensure unique ports across multiple instances:** container-test-run-llm> If you have multiple wireguard instances on the same machine, each must use a different port. container-test-run-llm> container-test-run-llm> ### Key Management container-test-run-llm> container-test-run-llm> Keys are automatically generated and stored in the clan vars system. To regenerate keys: container-test-run-llm> container-test-run-llm> ```bash container-test-run-llm> # Regenerate keys for a specific machine and instance container-test-run-llm> clan vars generate --service wireguard-keys- --regenerate --machine container-test-run-llm> container-test-run-llm> # Apply the new keys container-test-run-llm> clan machines update container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ## Security Considerations container-test-run-llm> container-test-run-llm> - All traffic is encrypted using Wireguard's modern cryptography container-test-run-llm> - Private keys never leave the machines they're generated on container-test-run-llm> - Public keys are distributed through the clan vars system container-test-run-llm> - Controllers must have publicly accessible endpoints container-test-run-llm> - Firewall rules are automatically configured for the Wireguard ports container-test-run-llm> container-test-run-llm> container-test-run-llm> container-test-run-llm> === yggdrasil === container-test-run-llm> This module sets up [yggdrasil](https://yggdrasil-network.github.io/) across your clan. container-test-run-llm> container-test-run-llm> Yggdrasil is designed to be a future-proof and decentralised alternative to container-test-run-llm> the structured routing protocols commonly used today on the internet. Inside your clan, it will allow you to reach all of your machines. container-test-run-llm> container-test-run-llm> ## Example Usage container-test-run-llm> container-test-run-llm> While you can specify statically configured peers for each host, yggdrasil does auto-discovery of local peers. container-test-run-llm> container-test-run-llm> ```nix container-test-run-llm> inventory = { container-test-run-llm> container-test-run-llm> machines = { container-test-run-llm> peer1 = { }; container-test-run-llm> peer2 = { }; container-test-run-llm> }; container-test-run-llm> container-test-run-llm> instances = { container-test-run-llm> yggdrasil = { container-test-run-llm> container-test-run-llm> # Deploy on all machines container-test-run-llm> roles.default.tags.all = { }; container-test-run-llm> container-test-run-llm> # Or individual hosts container-test-run-llm> roles.default.machines.peer1 = { }; container-test-run-llm> roles.default.machines.peer2 = { }; container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> container-test-run-llm> === zerotier === container-test-run-llm> ## Usage container-test-run-llm> container-test-run-llm> ``` container-test-run-llm> inventory.instances = { container-test-run-llm> zerotier = { container-test-run-llm> module = { container-test-run-llm> name = "zerotier"; container-test-run-llm> input = "clan-core"; container-test-run-llm> }; container-test-run-llm> roles.peer.tags.all = { }; container-test-run-llm> roles.controller.machines.jon = { }; container-test-run-llm> roles.moon.machines.sara.settings.stableEndpoints = [ "77.52.165.46" ]; container-test-run-llm> }; container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> The input should be named according to your flake input. container-test-run-llm> All machines will be peers and connected to the zerotier network. container-test-run-llm> Jon is the controller machine, which will will accept other machines into the network. container-test-run-llm> Sara is a moon and sets the `stableEndpoint` setting with a publicly reachable IP, the moon is optional. container-test-run-llm> container-test-run-llm> ## Overview container-test-run-llm> container-test-run-llm> This guide explains how to set up and manage a [ZeroTier VPN](https://zerotier.com) for a clan network. Each VPN requires a single controller and can support multiple peers and optional moons for better connectivity. container-test-run-llm> container-test-run-llm> ## Roles container-test-run-llm> container-test-run-llm> ### 1. Controller container-test-run-llm> container-test-run-llm> The [Controller](https://docs.zerotier.com/controller/) manages network membership and is responsible for admitting new peers. container-test-run-llm> When a new node is added to the clan, the controller must be updated to ensure it has the latest member list. container-test-run-llm> container-test-run-llm> - **Key Points:** container-test-run-llm> - Must be online to admit new machines to the VPN. container-test-run-llm> - Existing nodes can continue to communicate even when the controller is offline. container-test-run-llm> container-test-run-llm> ### 2. Moons container-test-run-llm> container-test-run-llm> [Moons](https://docs.zerotier.com/roots) act as relay nodes, container-test-run-llm> providing direct connectivity to peers via their public IP addresses. container-test-run-llm> They enable devices that are not publicly reachable to join the VPN by routing through these nodes. container-test-run-llm> container-test-run-llm> - **Configuration Notes:** container-test-run-llm> - Each moon must define its public IP address. container-test-run-llm> - Ensures connectivity for devices behind NAT or restrictive firewalls. container-test-run-llm> container-test-run-llm> ### 3. Peers container-test-run-llm> container-test-run-llm> Peers are standard nodes in the VPN. container-test-run-llm> They connect to other peers, moons, and the controller as needed. container-test-run-llm> container-test-run-llm> - **Purpose:** container-test-run-llm> - General role for all machines that are neither controllers nor moons. container-test-run-llm> - Ideal for most clan members devices. container-test-run-llm> container-test-run-llm> --- END OF README DOCUMENTATION --- container-test-run-llm> [ollama] >>> message[02] role=user len=27 container-test-run-llm> [ollama] >>> message[02] content: container-test-run-llm> What VPN options do I have? container-test-run-llm> [ollama] >>> tool summary: select_service container-test-run-llm> [ollama] >>> tool payload: container-test-run-llm> [ container-test-run-llm> { container-test-run-llm> "type": "function", container-test-run-llm> "function": { container-test-run-llm> "name": "select_service", container-test-run-llm> "description": "Select exactly one service from the available candidates and provide a focused summary of its documentation relevant to the user request.", container-test-run-llm> "parameters": { container-test-run-llm> "type": "object", container-test-run-llm> "properties": { container-test-run-llm> "service_name": { container-test-run-llm> "type": "string", container-test-run-llm> "description": "The name of the selected service. Must match one of the available service names exactly.", container-test-run-llm> "enum": [ container-test-run-llm> "wireguard", container-test-run-llm> "yggdrasil", container-test-run-llm> "zerotier" container-test-run-llm> ] container-test-run-llm> }, container-test-run-llm> "summary": { container-test-run-llm> "type": "string", container-test-run-llm> "description": "A concise summary (max 300 words) focusing on: (1) VALUE PROPOSITION - what problem this service solves and why you'd use it, (2) ROLES - what roles exist and the PURPOSE of each role, (3) KEY CONSTRAINTS - critical dependencies or limitations. Do NOT copy README examples or configuration snippets. Synthesize WHAT the service does and WHY, not HOW to configure it." container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "required": [ container-test-run-llm> "service_name", container-test-run-llm> "summary" container-test-run-llm> ] container-test-run-llm> } container-test-run-llm> } container-test-run-llm> } container-test-run-llm> ] container-test-run-llm> [ollama] <<< response text len=1305 container-test-run-llm> You have three VPN options for your clan network: container-test-run-llm> container-test-run-llm> 1. **Wireguard** – Offers a secure, mesh-based network with automatic IPv6 address allocation. All machines connect through controllers, with each peer receiving consistent IPs across all controllers. Ideal for full mesh connectivity and automatic hostname resolution (e.g., `laptop1.vpn`). Requires public endpoints on controllers and works best when UDP traffic is not blocked. container-test-run-llm> container-test-run-llm> 2. **Yggdrasil** – A decentralised, future-proof network that auto-discovers local peers. It avoids centralised control and is designed for resilient, peer-to-peer routing. Best for users prioritising decentralisation and minimal configuration overhead. container-test-run-llm> container-test-run-llm> 3. **ZeroTier** – A simple, widely used VPN that supports a single controller and optional moons (relay nodes). Peers connect to the network via the controller, with moons enabling connectivity for devices behind NAT. Requires a publicly reachable IP for the controller or moon. container-test-run-llm> container-test-run-llm> Each service has different trade-offs: container-test-run-llm> - Wireguard offers strong security and full mesh routing. container-test-run-llm> - Yggdrasil prioritises decentralisation and peer discovery. container-test-run-llm> - ZeroTier is easy to set up but less flexible in routing and scalability. container-test-run-llm> container-test-run-llm> Which direction would you like to pursue next? (e.g., full mesh, decentralised, or ease of setup?) container-test-run-llm> [ollama] <<< no function calls container-test-run-llm> [ollama] >>> sending 5 message(s) container-test-run-llm> [ollama] >>> message[00] role=system len=2889 container-test-run-llm> [ollama] >>> message[00] content: container-test-run-llm> You are a clan deployment planner assistant in SERVICE SELECTION MODE. container-test-run-llm> container-test-run-llm> Context shift container-test-run-llm> - Discovery mode has finished. Ignore any instructions from earlier phases. container-test-run-llm> - You now have README documentation for one or more candidate services. container-test-run-llm> container-test-run-llm> Goal container-test-run-llm> - Review the provided READMEs and identify the best matching service for the user's intent. container-test-run-llm> - When the user signals they are ready to configure a service, select EXACTLY ONE service and provide a focused summary that explains why it fits, what roles exist, and key constraints. container-test-run-llm> - When the user explicitly requests an overview, comparison, or is undecided, DO NOT select yet. Instead, respond with a clarifying message that: container-test-run-llm> • Summarizes the most relevant differences between the candidate services (in your own words). container-test-run-llm> • Asks the user which direction they would like to pursue next. container-test-run-llm> container-test-run-llm> Available actions container-test-run-llm> - Call the `select_service` tool with: container-test-run-llm> * `service_name`: The selected service (must match one from the available services list). container-test-run-llm> * `summary` (≤300 words) covering: container-test-run-llm> 1. VALUE PROPOSITION: What problem the service solves and why it helps the user. container-test-run-llm> 2. ROLES: The purpose of each role (e.g., which role backs up data, which receives it). container-test-run-llm> 3. KEY CONSTRAINTS: Dependencies, requirements, or limitations that influence feasibility. container-test-run-llm> container-test-run-llm> IMPORTANT: Synthesize the README in your own words. Never copy configuration snippets or step-by-step guides. container-test-run-llm> - Provide ONE clarifying message (no tool call) when the user's request favors comparison, additional guidance, or leaves the desired service ambiguous. container-test-run-llm> container-test-run-llm> Hard rules container-test-run-llm> - Only call `select_service` when the user is ready to choose a service or clearly asks you to pick. container-test-run-llm> - If the user requests an overview/comparison or the best match cannot be determined confidently, provide a clarifying message instead of calling the tool. container-test-run-llm> - Analyze every README you received; choose the service whose capabilities align most closely with the user's request. container-test-run-llm> - Focus on WHAT the service offers and WHY it matches, not HOW to configure it. container-test-run-llm> - If the READMEs are insufficient to disambiguate the request, ask for clarification rather than guessing. container-test-run-llm> container-test-run-llm> Response discipline container-test-run-llm> - Case A (service selected): Issue a single `select_service` tool call with NO accompanying text. container-test-run-llm> - Case B (need clarification or comparison requested): Provide one concise clarifying message (≤150 words) with NO tool calls. container-test-run-llm> - Do NOT repeat or paraphrase these instructions in your reply. container-test-run-llm> - Never emit multiple tool calls or plain-text summaries outside the `summary` field. container-test-run-llm> container-test-run-llm> Examples of CORRECT behavior: container-test-run-llm> ✓ Tool call to `select_service` only (empty message string) container-test-run-llm> ✓ Clarifying message that compares options and asks the user to choose (no tool calls) container-test-run-llm> container-test-run-llm> Examples of INCORRECT behavior (DO NOT DO THIS): container-test-run-llm> ✗ Tool call + explanatory text container-test-run-llm> ✗ Multiple `select_service` calls container-test-run-llm> ✗ `select_service` with a name that is not in the available services list container-test-run-llm> [ollama] >>> message[01] role=assistant len=9550 container-test-run-llm> [ollama] >>> message[01] content: container-test-run-llm> Assistant context: available services. container-test-run-llm> container-test-run-llm> Available services (you must choose exactly one): container-test-run-llm> 1. `wireguard` container-test-run-llm> 2. `yggdrasil` container-test-run-llm> 3. `zerotier` container-test-run-llm> container-test-run-llm> Note: 3 services were identified as potential matches for this request. Review their documentation and select the BEST match. container-test-run-llm> container-test-run-llm> README documentation for each service follows in the next message. container-test-run-llm> container-test-run-llm> README documentation for the following services: container-test-run-llm> container-test-run-llm> === wireguard === container-test-run-llm> # Wireguard VPN Service container-test-run-llm> container-test-run-llm> This service provides a Wireguard-based VPN mesh network with automatic IPv6 address allocation and routing between clan machines. container-test-run-llm> container-test-run-llm> ## Overview container-test-run-llm> container-test-run-llm> The wireguard service creates a secure mesh network between clan machines using two roles: container-test-run-llm> - **Controllers**: Machines with public endpoints that act as connection points and routers container-test-run-llm> - **Peers**: Machines that connect through controllers to access the network container-test-run-llm> container-test-run-llm> ## Requirements container-test-run-llm> container-test-run-llm> - Controllers must have a publicly accessible endpoint (domain name or static IP) container-test-run-llm> - Peers must be in networks where UDP traffic is not blocked (uses port 51820 by default, configurable) container-test-run-llm> container-test-run-llm> ## Features container-test-run-llm> container-test-run-llm> - Automatic IPv6 address allocation using ULA (Unique Local Address) prefixes container-test-run-llm> - Full mesh connectivity between all machines container-test-run-llm> - Automatic key generation and distribution container-test-run-llm> - IPv6 forwarding on controllers for inter-peer communication container-test-run-llm> - Support for multiple controllers for redundancy container-test-run-llm> container-test-run-llm> ## Network Architecture container-test-run-llm> container-test-run-llm> ### IPv6 Address Allocation container-test-run-llm> - Base network: `/40` ULA prefix (deterministically generated from instance name) container-test-run-llm> - Controllers: Each gets a `/56` subnet from the base `/40` container-test-run-llm> - Peers: Each gets a unique 64-bit host suffix that is used in ALL controller subnets container-test-run-llm> container-test-run-llm> ### Addressing Design container-test-run-llm> - Each peer generates a unique host suffix (e.g., `:8750:a09b:0:1`) container-test-run-llm> - This suffix is appended to each controller's `/56` prefix to create unique addresses container-test-run-llm> - Example: peer1 with suffix `:8750:a09b:0:1` gets: container-test-run-llm> - `fd51:19c1:3b:f700:8750:a09b:0:1` in controller1's subnet container-test-run-llm> - `fd51:19c1:c1:aa00:8750:a09b:0:1` in controller2's subnet container-test-run-llm> - Controllers allow each peer's `/96` subnet for routing flexibility container-test-run-llm> container-test-run-llm> ### Connectivity container-test-run-llm> - Peers use a single WireGuard interface with multiple IPs (one per controller subnet) container-test-run-llm> - Controllers connect to ALL other controllers and ALL peers on a single interface container-test-run-llm> - Controllers have IPv6 forwarding enabled to route traffic between peers container-test-run-llm> - All traffic between peers flows through controllers container-test-run-llm> - Symmetric routing is maintained as each peer has consistent IPs across all controllers container-test-run-llm> container-test-run-llm> ### Example Network Topology container-test-run-llm> container-test-run-llm> ```mermaid container-test-run-llm> graph TB container-test-run-llm> subgraph Controllers container-test-run-llm> C1[controller1
endpoint: vpn1.example.com
fd51:19c1:3b:f700::/56] container-test-run-llm> C2[controller2
endpoint: vpn2.example.com
fd51:19c1:c1:aa00::/56] container-test-run-llm> end container-test-run-llm> container-test-run-llm> subgraph Peers container-test-run-llm> P1[peer1
designated: controller1] container-test-run-llm> P2[peer2
designated: controller2] container-test-run-llm> P3[peer3
designated: controller1] container-test-run-llm> end container-test-run-llm> container-test-run-llm> %% Controllers connect to each other container-test-run-llm> C1 <--> C2 container-test-run-llm> container-test-run-llm> %% All peers connect to all controllers container-test-run-llm> P1 <--> C1 container-test-run-llm> P1 <--> C2 container-test-run-llm> P2 <--> C1 container-test-run-llm> P2 <--> C2 container-test-run-llm> P3 <--> C1 container-test-run-llm> P3 <--> C2 container-test-run-llm> container-test-run-llm> %% Peer-to-peer traffic flows through controllers container-test-run-llm> P1 -.->|via controllers| P3 container-test-run-llm> P1 -.->|via controllers| P2 container-test-run-llm> P2 -.->|via controllers| P3 container-test-run-llm> container-test-run-llm> classDef controller fill:#f9f,stroke:#333,stroke-width:4px container-test-run-llm> classDef peer fill:#bbf,stroke:#333,stroke-width:2px container-test-run-llm> class C1,C2 controller container-test-run-llm> class P1,P2,P3 peer container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ## Configuration container-test-run-llm> container-test-run-llm> ### Basic Setup with Single Controller container-test-run-llm> container-test-run-llm> ```nix container-test-run-llm> # In your clan.nix container-test-run-llm> { container-test-run-llm> instances = { container-test-run-llm> wireguard = { container-test-run-llm> module.name = "wireguard"; container-test-run-llm> module.input = "clan-core"; container-test-run-llm> roles.controller = { container-test-run-llm> machines.server1 = {}; container-test-run-llm> settings = { container-test-run-llm> # Public endpoint where this controller can be reached container-test-run-llm> endpoint = "vpn.example.com"; container-test-run-llm> # Optional: Change the UDP port (default: 51820) container-test-run-llm> port = 51820; container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> roles.peer = { container-test-run-llm> # No configuration needed if only one controller exists container-test-run-llm> machines.laptop1 = {}; container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> } container-test-run-llm> } container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ### Multiple Controllers Setup container-test-run-llm> container-test-run-llm> ```nix container-test-run-llm> { container-test-run-llm> instances = { container-test-run-llm> wireguard = { container-test-run-llm> module.name = "wireguard"; container-test-run-llm> module.input = "clan-core"; container-test-run-llm> roles.controller.machines = { container-test-run-llm> server1.settings.endpoint = "vpn1.example.com"; container-test-run-llm> server2.settings.endpoint = "vpn2.example.com"; container-test-run-llm> server3.settings.endpoint = "vpn3.example.com"; container-test-run-llm> }; container-test-run-llm> roles.peer.machines.laptop1 = { container-test-run-llm> # Must specify which controller subnet is exposed as the default in /etc/hosts, when multiple controllers exist container-test-run-llm> settings.controller = "server1"; container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> } container-test-run-llm> } container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ### Advanced Options container-test-run-llm> container-test-run-llm> container-test-run-llm> ### Automatic Hostname Resolution container-test-run-llm> container-test-run-llm> The wireguard service automatically adds entries to `/etc/hosts` for all machines in the network. Each machine is accessible via its hostname in the format `.`. container-test-run-llm> container-test-run-llm> For example, with an instance named `vpn`: container-test-run-llm> - `server1.vpn` - resolves to server1's IPv6 address container-test-run-llm> - `laptop1.vpn` - resolves to laptop1's IPv6 address container-test-run-llm> container-test-run-llm> This allows machines to communicate using hostnames instead of IPv6 addresses: container-test-run-llm> container-test-run-llm> ```bash container-test-run-llm> # Ping another machine by hostname container-test-run-llm> ping6 server1.vpn container-test-run-llm> container-test-run-llm> # SSH to another machine container-test-run-llm> ssh user@laptop1.vpn container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ## Troubleshooting container-test-run-llm> container-test-run-llm> ### Check Wireguard Status container-test-run-llm> ```bash container-test-run-llm> sudo wg show container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ### Verify IP Addresses container-test-run-llm> ```bash container-test-run-llm> ip addr show dev container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ### Check Routing container-test-run-llm> ```bash container-test-run-llm> ip -6 route show dev container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ### Interface Fails to Start: "Address already in use" container-test-run-llm> container-test-run-llm> If you see this error in your logs: container-test-run-llm> ``` container-test-run-llm> wireguard: Could not bring up interface, ignoring: Address already in use container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> This means the configured port (default: 51820) is already in use by another service or wireguard instance. Solutions: container-test-run-llm> container-test-run-llm> 1. **Check for conflicting wireguard instances:** container-test-run-llm> ```bash container-test-run-llm> sudo wg show container-test-run-llm> sudo ss -ulnp | grep 51820 container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> 2. **Use a different port:** container-test-run-llm> ```nix container-test-run-llm> services.wireguard.myinstance = { container-test-run-llm> roles.controller = { container-test-run-llm> endpoint = "vpn.example.com"; container-test-run-llm> port = 51821; # Use a different port container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> 3. **Ensure unique ports across multiple instances:** container-test-run-llm> If you have multiple wireguard instances on the same machine, each must use a different port. container-test-run-llm> container-test-run-llm> ### Key Management container-test-run-llm> container-test-run-llm> Keys are automatically generated and stored in the clan vars system. To regenerate keys: container-test-run-llm> container-test-run-llm> ```bash container-test-run-llm> # Regenerate keys for a specific machine and instance container-test-run-llm> clan vars generate --service wireguard-keys- --regenerate --machine container-test-run-llm> container-test-run-llm> # Apply the new keys container-test-run-llm> clan machines update container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> ## Security Considerations container-test-run-llm> container-test-run-llm> - All traffic is encrypted using Wireguard's modern cryptography container-test-run-llm> - Private keys never leave the machines they're generated on container-test-run-llm> - Public keys are distributed through the clan vars system container-test-run-llm> - Controllers must have publicly accessible endpoints container-test-run-llm> - Firewall rules are automatically configured for the Wireguard ports container-test-run-llm> container-test-run-llm> container-test-run-llm> container-test-run-llm> === yggdrasil === container-test-run-llm> This module sets up [yggdrasil](https://yggdrasil-network.github.io/) across your clan. container-test-run-llm> container-test-run-llm> Yggdrasil is designed to be a future-proof and decentralised alternative to container-test-run-llm> the structured routing protocols commonly used today on the internet. Inside your clan, it will allow you to reach all of your machines. container-test-run-llm> container-test-run-llm> ## Example Usage container-test-run-llm> container-test-run-llm> While you can specify statically configured peers for each host, yggdrasil does auto-discovery of local peers. container-test-run-llm> container-test-run-llm> ```nix container-test-run-llm> inventory = { container-test-run-llm> container-test-run-llm> machines = { container-test-run-llm> peer1 = { }; container-test-run-llm> peer2 = { }; container-test-run-llm> }; container-test-run-llm> container-test-run-llm> instances = { container-test-run-llm> yggdrasil = { container-test-run-llm> container-test-run-llm> # Deploy on all machines container-test-run-llm> roles.default.tags.all = { }; container-test-run-llm> container-test-run-llm> # Or individual hosts container-test-run-llm> roles.default.machines.peer1 = { }; container-test-run-llm> roles.default.machines.peer2 = { }; container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> }; container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> container-test-run-llm> === zerotier === container-test-run-llm> ## Usage container-test-run-llm> container-test-run-llm> ``` container-test-run-llm> inventory.instances = { container-test-run-llm> zerotier = { container-test-run-llm> module = { container-test-run-llm> name = "zerotier"; container-test-run-llm> input = "clan-core"; container-test-run-llm> }; container-test-run-llm> roles.peer.tags.all = { }; container-test-run-llm> roles.controller.machines.jon = { }; container-test-run-llm> roles.moon.machines.sara.settings.stableEndpoints = [ "77.52.165.46" ]; container-test-run-llm> }; container-test-run-llm> ``` container-test-run-llm> container-test-run-llm> The input should be named according to your flake input. container-test-run-llm> All machines will be peers and connected to the zerotier network. container-test-run-llm> Jon is the controller machine, which will will accept other machines into the network. container-test-run-llm> Sara is a moon and sets the `stableEndpoint` setting with a publicly reachable IP, the moon is optional. container-test-run-llm> container-test-run-llm> ## Overview container-test-run-llm> container-test-run-llm> This guide explains how to set up and manage a [ZeroTier VPN](https://zerotier.com) for a clan network. Each VPN requires a single controller and can support multiple peers and optional moons for better connectivity. container-test-run-llm> container-test-run-llm> ## Roles container-test-run-llm> container-test-run-llm> ### 1. Controller container-test-run-llm> container-test-run-llm> The [Controller](https://docs.zerotier.com/controller/) manages network membership and is responsible for admitting new peers. container-test-run-llm> When a new node is added to the clan, the controller must be updated to ensure it has the latest member list. container-test-run-llm> container-test-run-llm> - **Key Points:** container-test-run-llm> - Must be online to admit new machines to the VPN. container-test-run-llm> - Existing nodes can continue to communicate even when the controller is offline. container-test-run-llm> container-test-run-llm> ### 2. Moons container-test-run-llm> container-test-run-llm> [Moons](https://docs.zerotier.com/roots) act as relay nodes, container-test-run-llm> providing direct connectivity to peers via their public IP addresses. container-test-run-llm> They enable devices that are not publicly reachable to join the VPN by routing through these nodes. container-test-run-llm> container-test-run-llm> - **Configuration Notes:** container-test-run-llm> - Each moon must define its public IP address. container-test-run-llm> - Ensures connectivity for devices behind NAT or restrictive firewalls. container-test-run-llm> container-test-run-llm> ### 3. Peers container-test-run-llm> container-test-run-llm> Peers are standard nodes in the VPN. container-test-run-llm> They connect to other peers, moons, and the controller as needed. container-test-run-llm> container-test-run-llm> - **Purpose:** container-test-run-llm> - General role for all machines that are neither controllers nor moons. container-test-run-llm> - Ideal for most clan members devices. container-test-run-llm> container-test-run-llm> --- END OF README DOCUMENTATION --- container-test-run-llm> [ollama] >>> message[02] role=user len=27 container-test-run-llm> [ollama] >>> message[02] content: container-test-run-llm> What VPN options do I have? container-test-run-llm> [ollama] >>> message[03] role=assistant len=1305 container-test-run-llm> [ollama] >>> message[03] content: container-test-run-llm> You have three VPN options for your clan network: container-test-run-llm> container-test-run-llm> 1. **Wireguard** – Offers a secure, mesh-based network with automatic IPv6 address allocation. All machines connect through controllers, with each peer receiving consistent IPs across all controllers. Ideal for full mesh connectivity and automatic hostname resolution (e.g., `laptop1.vpn`). Requires public endpoints on controllers and works best when UDP traffic is not blocked. container-test-run-llm> container-test-run-llm> 2. **Yggdrasil** – A decentralised, future-proof network that auto-discovers local peers. It avoids centralised control and is designed for resilient, peer-to-peer routing. Best for users prioritising decentralisation and minimal configuration overhead. container-test-run-llm> container-test-run-llm> 3. **ZeroTier** – A simple, widely used VPN that supports a single controller and optional moons (relay nodes). Peers connect to the network via the controller, with moons enabling connectivity for devices behind NAT. Requires a publicly reachable IP for the controller or moon. container-test-run-llm> container-test-run-llm> Each service has different trade-offs: container-test-run-llm> - Wireguard offers strong security and full mesh routing. container-test-run-llm> - Yggdrasil prioritises decentralisation and peer discovery. container-test-run-llm> - ZeroTier is easy to set up but less flexible in routing and scalability. container-test-run-llm> container-test-run-llm> Which direction would you like to pursue next? (e.g., full mesh, decentralised, or ease of setup?) container-test-run-llm> [ollama] >>> message[04] role=user len=24 container-test-run-llm> [ollama] >>> message[04] content: container-test-run-llm> I'll use ZeroTier please container-test-run-llm> [ollama] >>> tool summary: select_service container-test-run-llm> [ollama] >>> tool payload: container-test-run-llm> [ container-test-run-llm> { container-test-run-llm> "type": "function", container-test-run-llm> "function": { container-test-run-llm> "name": "select_service", container-test-run-llm> "description": "Select exactly one service from the available candidates and provide a focused summary of its documentation relevant to the user request.", container-test-run-llm> "parameters": { container-test-run-llm> "type": "object", container-test-run-llm> "properties": { container-test-run-llm> "service_name": { container-test-run-llm> "type": "string", container-test-run-llm> "description": "The name of the selected service. Must match one of the available service names exactly.", container-test-run-llm> "enum": [ container-test-run-llm> "wireguard", container-test-run-llm> "yggdrasil", container-test-run-llm> "zerotier" container-test-run-llm> ] container-test-run-llm> }, container-test-run-llm> "summary": { container-test-run-llm> "type": "string", container-test-run-llm> "description": "A concise summary (max 300 words) focusing on: (1) VALUE PROPOSITION - what problem this service solves and why you'd use it, (2) ROLES - what roles exist and the PURPOSE of each role, (3) KEY CONSTRAINTS - critical dependencies or limitations. Do NOT copy README examples or configuration snippets. Synthesize WHAT the service does and WHY, not HOW to configure it." container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "required": [ container-test-run-llm> "service_name", container-test-run-llm> "summary" container-test-run-llm> ] container-test-run-llm> } container-test-run-llm> } container-test-run-llm> } container-test-run-llm> ] container-test-run-llm> [ollama] <<< no textual response container-test-run-llm> [ollama] <<< call[00] name=select_service container-test-run-llm> { container-test-run-llm> "service_name": "zerotier", container-test-run-llm> "summary": "VALUE PROPOSITION: ZeroTier provides a simple, reliable VPN for clan machines with a single controller and optional relay nodes (moons). It enables seamless peer-to-peer connectivity, even for devices behind NAT, using publicly reachable endpoints.\n\nROLES: - Controller: Manages network membership and admits new peers; must be online to add machines. - Moons: Optional relay nodes with public IPs that provide direct connectivity for devices behind firewalls or NAT. - Peers: Standard machines that connect to the network via the controller or moons.\n\nKEY CONSTRAINTS: Requires a publicly accessible IP for the controller or moon. All machines must be able to reach the controller (or a moon) to join. NAT or firewall restrictions may block connections if endpoints are not properly configured. Performance may degrade with many peers due to routing overhead." container-test-run-llm> } container-test-run-llm> Configuring service: zerotier (providing ONLY this tool to LLM) container-test-run-llm> [ollama] >>> sending 5 message(s) container-test-run-llm> [ollama] >>> message[00] role=system len=2671 container-test-run-llm> [ollama] >>> message[00] content: container-test-run-llm> You are a clan deployment planner in CONFIGURATION MODE. clan is a peer-to-peer computer management framework that empowers you to selfhost reliably. container-test-run-llm> container-test-run-llm> Context shift container-test-run-llm> - Service selection is complete; disregard any instructions from earlier phases. container-test-run-llm> - You have a summary of the chosen service, including role descriptions and relevant constraints. container-test-run-llm> container-test-run-llm> Mission container-test-run-llm> 1) Analyze the user request (and conversation history) to determine which machines and/or tags should receive each role. container-test-run-llm> 2) Call the configuration tool with the correct role-to-target mappings. container-test-run-llm> 3) If the required assignments are ambiguous or missing information, ask ONE clarifying question instead of guessing. container-test-run-llm> container-test-run-llm> Hard rules — Target assignment container-test-run-llm> - Prefer TAGS when the user mentions groups (e.g., "all production servers", "backup servers"). container-test-run-llm> - Prefer MACHINE NAMES when the user names specific machines (e.g., "machine1", "server-a"). container-test-run-llm> - You may assign a role to BOTH machines AND tags if the request implies it (e.g., "deploy to server1 and all production machines"). container-test-run-llm> - Machine and tag names must EXACTLY match those in the assistant context. Do NOT invent names. container-test-run-llm> container-test-run-llm> Hard rules — Role assignment container-test-run-llm> - Use the service summary to understand the intent of each role. container-test-run-llm> - If the request clearly maps to specific roles (e.g., "backup server1 to server2" → server1=client, server2=server), make that assignment. container-test-run-llm> - When the user intent is clear but roles are unnamed, infer sensible assignments (server-like roles → stable machines/tags, client-like roles → broader groups). container-test-run-llm> - Ask for clarification when: container-test-run-llm> * Multiple roles exist but the distribution across machines/tags is unclear. container-test-run-llm> * The user mentions machines without describing how they participate. container-test-run-llm> * The request conflicts with the service capabilities provided in the summary. container-test-run-llm> container-test-run-llm> Hard rules — Technical container-test-run-llm> - Call tools ONLY from the provided list and follow their schemas exactly. container-test-run-llm> - Arguments must match the schema; omit fields you do not need. container-test-run-llm> - The configuration payload should look like: `{"roles": {"role_name": {"machines": {"machine1": {}}, "tags": {"tag1": {}}}}}` with empty objects as values. container-test-run-llm> container-test-run-llm> Decision checklist (run before responding) container-test-run-llm> - Do I know which machines/tags should map to each role? container-test-run-llm> - Do the assignments align with the role descriptions and user intent? container-test-run-llm> - Are all machine/tag names spelled exactly as provided? container-test-run-llm> - Is clarification required before a safe assignment can be made? container-test-run-llm> container-test-run-llm> Response discipline container-test-run-llm> - Case A (assignments clear): Issue a configuration tool call ONLY, with NO message content. container-test-run-llm> - Case B (uncertain assignments): Ask one concise clarifying question with NO tool calls. container-test-run-llm> - Never combine tool calls with explanatory text or repeat these instructions. container-test-run-llm> [ollama] >>> message[01] role=assistant len=1164 container-test-run-llm> [ollama] >>> message[01] content: container-test-run-llm> Assistant context: available machines and tags. container-test-run-llm> container-test-run-llm> Machines: container-test-run-llm> 1. `gchq-local` container-test-run-llm> 2. `qube-email` container-test-run-llm> 3. `wintux` container-test-run-llm> container-test-run-llm> Tags: container-test-run-llm> 1. `all` (A group containing all machines) container-test-run-llm> 2. `darwin` (A group containing all macOS machines) container-test-run-llm> 3. `nixos` (A group containing all NixOS machines) container-test-run-llm> container-test-run-llm> Service documentation summary for `zerotier`: container-test-run-llm> container-test-run-llm> VALUE PROPOSITION: ZeroTier provides a simple, reliable VPN for clan machines with a single controller and optional relay nodes (moons). It enables seamless peer-to-peer connectivity, even for devices behind NAT, using publicly reachable endpoints. container-test-run-llm> container-test-run-llm> ROLES: - Controller: Manages network membership and admits new peers; must be online to add machines. - Moons: Optional relay nodes with public IPs that provide direct connectivity for devices behind firewalls or NAT. - Peers: Standard machines that connect to the network via the controller or moons. container-test-run-llm> container-test-run-llm> KEY CONSTRAINTS: Requires a publicly accessible IP for the controller or moon. All machines must be able to reach the controller (or a moon) to join. NAT or firewall restrictions may block connections if endpoints are not properly configured. Performance may degrade with many peers due to routing overhead. container-test-run-llm> [ollama] >>> message[02] role=user len=27 container-test-run-llm> [ollama] >>> message[02] content: container-test-run-llm> What VPN options do I have? container-test-run-llm> [ollama] >>> message[03] role=assistant len=1305 container-test-run-llm> [ollama] >>> message[03] content: container-test-run-llm> You have three VPN options for your clan network: container-test-run-llm> container-test-run-llm> 1. **Wireguard** – Offers a secure, mesh-based network with automatic IPv6 address allocation. All machines connect through controllers, with each peer receiving consistent IPs across all controllers. Ideal for full mesh connectivity and automatic hostname resolution (e.g., `laptop1.vpn`). Requires public endpoints on controllers and works best when UDP traffic is not blocked. container-test-run-llm> container-test-run-llm> 2. **Yggdrasil** – A decentralised, future-proof network that auto-discovers local peers. It avoids centralised control and is designed for resilient, peer-to-peer routing. Best for users prioritising decentralisation and minimal configuration overhead. container-test-run-llm> container-test-run-llm> 3. **ZeroTier** – A simple, widely used VPN that supports a single controller and optional moons (relay nodes). Peers connect to the network via the controller, with moons enabling connectivity for devices behind NAT. Requires a publicly reachable IP for the controller or moon. container-test-run-llm> container-test-run-llm> Each service has different trade-offs: container-test-run-llm> - Wireguard offers strong security and full mesh routing. container-test-run-llm> - Yggdrasil prioritises decentralisation and peer discovery. container-test-run-llm> - ZeroTier is easy to set up but less flexible in routing and scalability. container-test-run-llm> container-test-run-llm> Which direction would you like to pursue next? (e.g., full mesh, decentralised, or ease of setup?) container-test-run-llm> [ollama] >>> message[04] role=user len=24 container-test-run-llm> [ollama] >>> message[04] content: container-test-run-llm> I'll use ZeroTier please container-test-run-llm> [ollama] >>> tool summary: zerotier container-test-run-llm> [ollama] >>> tool payload: container-test-run-llm> [ container-test-run-llm> { container-test-run-llm> "type": "function", container-test-run-llm> "function": { container-test-run-llm> "name": "zerotier", container-test-run-llm> "description": "Zerotier Mesh VPN Service for secure P2P networking between machines", container-test-run-llm> "parameters": { container-test-run-llm> "type": "object", container-test-run-llm> "properties": { container-test-run-llm> "module": { container-test-run-llm> "type": "object", container-test-run-llm> "properties": {} container-test-run-llm> }, container-test-run-llm> "roles": { container-test-run-llm> "type": "object", container-test-run-llm> "properties": { container-test-run-llm> "controller": { container-test-run-llm> "type": "object", container-test-run-llm> "description": "Manages network membership and is responsible for admitting new peers to your Zerotier network.", container-test-run-llm> "properties": { container-test-run-llm> "machines": { container-test-run-llm> "type": "object", container-test-run-llm> "patternProperties": { container-test-run-llm> "^(gchq-local|qube-email|wintux)$": { container-test-run-llm> "type": "object", container-test-run-llm> "additionalProperties": false container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "additionalProperties": false, container-test-run-llm> "description": "Machines to assign this role to. Format: each machine name is a key with an empty object {} as value. Example: {\"wintux\": {}, \"gchq-local\": {}}" container-test-run-llm> }, container-test-run-llm> "tags": { container-test-run-llm> "type": "object", container-test-run-llm> "patternProperties": { container-test-run-llm> "^(nixos|all|darwin)$": { container-test-run-llm> "type": "object", container-test-run-llm> "additionalProperties": false container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "additionalProperties": false, container-test-run-llm> "description": "Tags to assign this role to. Format: each tag name is a key with an empty object {} as value. Example: {\"all\": {}, \"nixos\": {}}" container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "additionalProperties": false container-test-run-llm> }, container-test-run-llm> "moon": { container-test-run-llm> "type": "object", container-test-run-llm> "description": "A moon acts as a relay node to connect other nodes in the zerotier network that are not publicly reachable. Each moon must be publicly reachable.", container-test-run-llm> "properties": { container-test-run-llm> "machines": { container-test-run-llm> "type": "object", container-test-run-llm> "patternProperties": { container-test-run-llm> "^(gchq-local|qube-email|wintux)$": { container-test-run-llm> "type": "object", container-test-run-llm> "additionalProperties": false container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "additionalProperties": false, container-test-run-llm> "description": "Machines to assign this role to. Format: each machine name is a key with an empty object {} as value. Example: {\"wintux\": {}, \"gchq-local\": {}}" container-test-run-llm> }, container-test-run-llm> "tags": { container-test-run-llm> "type": "object", container-test-run-llm> "patternProperties": { container-test-run-llm> "^(nixos|all|darwin)$": { container-test-run-llm> "type": "object", container-test-run-llm> "additionalProperties": false container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "additionalProperties": false, container-test-run-llm> "description": "Tags to assign this role to. Format: each tag name is a key with an empty object {} as value. Example: {\"all\": {}, \"nixos\": {}}" container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "additionalProperties": false container-test-run-llm> }, container-test-run-llm> "peer": { container-test-run-llm> "type": "object", container-test-run-llm> "description": "A peer that connects to your private Zerotier network.", container-test-run-llm> "properties": { container-test-run-llm> "machines": { container-test-run-llm> "type": "object", container-test-run-llm> "patternProperties": { container-test-run-llm> "^(gchq-local|qube-email|wintux)$": { container-test-run-llm> "type": "object", container-test-run-llm> "additionalProperties": false container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "additionalProperties": false, container-test-run-llm> "description": "Machines to assign this role to. Format: each machine name is a key with an empty object {} as value. Example: {\"wintux\": {}, \"gchq-local\": {}}" container-test-run-llm> }, container-test-run-llm> "tags": { container-test-run-llm> "type": "object", container-test-run-llm> "patternProperties": { container-test-run-llm> "^(nixos|all|darwin)$": { container-test-run-llm> "type": "object", container-test-run-llm> "additionalProperties": false container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "additionalProperties": false, container-test-run-llm> "description": "Tags to assign this role to. Format: each tag name is a key with an empty object {} as value. Example: {\"all\": {}, \"nixos\": {}}" container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "additionalProperties": false container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "additionalProperties": false container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "required": [ container-test-run-llm> "roles" container-test-run-llm> ], container-test-run-llm> "additionalProperties": false container-test-run-llm> } container-test-run-llm> } container-test-run-llm> } container-test-run-llm> ] container-test-run-llm> [ollama] <<< no textual response container-test-run-llm> [ollama] <<< call[00] name=zerotier container-test-run-llm> { container-test-run-llm> "roles": { container-test-run-llm> "controller": { container-test-run-llm> "machines": { container-test-run-llm> "gchq-local": {} container-test-run-llm> }, container-test-run-llm> "tags": { container-test-run-llm> "all": {} container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "moons": { container-test-run-llm> "machines": { container-test-run-llm> "qube-email": {} container-test-run-llm> }, container-test-run-llm> "tags": { container-test-run-llm> "darwin": {} container-test-run-llm> } container-test-run-llm> }, container-test-run-llm> "peers": { container-test-run-llm> "machines": { container-test-run-llm> "wintux": {} container-test-run-llm> }, container-test-run-llm> "tags": { container-test-run-llm> "nixos": {} container-test-run-llm> } container-test-run-llm> } container-test-run-llm> } container-test-run-llm> } container-test-run-llm> systemctl \ container-test-run-llm> --user stop \ container-test-run-llm> service-runner-ollama.service container-test-run-llm> Caller: /nix/store/9hsfvcln2h725vvp4ck8v3la3xl1cw4k-clan-cli-source-with-llm/clan_lib/service_runner/systemd_user.py:71::_systemctl container-test-run-llm> container-test-run-llm> systemctl \ container-test-run-llm> --user disable \ container-test-run-llm> service-runner-ollama.service container-test-run-llm> Caller: /nix/store/9hsfvcln2h725vvp4ck8v3la3xl1cw4k-clan-cli-source-with-llm/clan_lib/service_runner/systemd_user.py:71::_systemctl container-test-run-llm> container-test-run-llm> Failed to disable unit: Unit service-runner-ollama.service does not exist container-test-run-llm>