python310Packages.pydeconz: 104 -> 105
[NixPkgs.git] / nixos / tests / initrd-network-ssh / default.nix
blob0ad0563b0ce15bc04f279a968c44f18ba5894883
1 import ../make-test-python.nix ({ lib, ... }:
4   name = "initrd-network-ssh";
5   meta = with lib.maintainers; {
6     maintainers = [ willibutz emily ];
7   };
9   nodes = with lib; {
10     server =
11       { config, ... }:
12       {
13         boot.kernelParams = [
14           "ip=${config.networking.primaryIPAddress}:::255.255.255.0::eth1:none"
15         ];
16         boot.initrd.network = {
17           enable = true;
18           ssh = {
19             enable = true;
20             authorizedKeys = [ (readFile ./id_ed25519.pub) ];
21             port = 22;
22             hostKeys = [ ./ssh_host_ed25519_key ];
23           };
24         };
25         boot.initrd.extraUtilsCommands = ''
26           mkdir -p $out/secrets/etc/ssh
27           cat "${./ssh_host_ed25519_key}" > $out/secrets/etc/ssh/sh_host_ed25519_key
28         '';
29         boot.initrd.preLVMCommands = ''
30           while true; do
31             if [ -f fnord ]; then
32               poweroff
33             fi
34             sleep 1
35           done
36         '';
37       };
39     client =
40       { config, ... }:
41       {
42         environment.etc = {
43           knownHosts = {
44             text = concatStrings [
45               "server,"
46               "${toString (head (splitString " " (
47                 toString (elemAt (splitString "\n" config.networking.extraHosts) 2)
48               )))} "
49               "${readFile ./ssh_host_ed25519_key.pub}"
50             ];
51           };
52           sshKey = {
53             source = ./id_ed25519;
54             mode = "0600";
55           };
56         };
57       };
58   };
60   testScript = ''
61     start_all()
62     client.wait_for_unit("network.target")
65     def ssh_is_up(_) -> bool:
66         status, _ = client.execute("nc -z server 22")
67         return status == 0
70     with client.nested("waiting for SSH server to come up"):
71         retry(ssh_is_up)
74     client.succeed(
75         "ssh -i /etc/sshKey -o UserKnownHostsFile=/etc/knownHosts server 'touch /fnord'"
76     )
77     client.shutdown()
78   '';