{ pkgs, nixosLib, clan-core, ... }: nixosLib.runTest ( { hostPkgs, config, ... }: { imports = [ clan-core.modules.nixosTest.clanTest ]; hostPkgs = pkgs; # This tests the compatibility of the inventory # With the test framework # - clan.service modules name = "service-dummy-test-from-flake"; clan.test.fromFlake = ./.; extraPythonPackages = _p: [ clan-core.legacyPackages.${hostPkgs.system}.nixosTestLib ]; testScript = { nodes, ... }: '' import subprocess from nixos_test_lib.nix_setup import setup_nix_in_nix # type: ignore[import-untyped] setup_nix_in_nix(None) # No closure info for this test start_all() admin1.wait_for_unit("multi-user.target") peer1.wait_for_unit("multi-user.target") # peer1 should have the 'hello' file peer1.succeed("cat ${nodes.peer1.clan.core.vars.generators.new-service.files.not-a-secret.path}") ls_out = peer1.succeed("ls -la ${nodes.peer1.clan.core.vars.generators.new-service.files.a-secret.path}") # Check that the file is owned by 'nobody' assert "nobody" in ls_out, f"File is not owned by 'nobody': {ls_out}" # Check that the file is in the 'users' group assert "users" in ls_out, f"File is not in the 'users' group: {ls_out}" # Check that the file is in the '0644' mode assert "-rw-r--r--" in ls_out, f"File is not in the '0644' mode: {ls_out}" # Run clan command result = subprocess.run( ["${ clan-core.packages.${hostPkgs.system}.clan-cli }/bin/clan", "machines", "list", "--flake", "${config.clan.test.flakeForSandbox}"], check=True ) ''; } )