6385752040
Completes the matrix: all five distros now pass both `test` and `test-ready`,
validated end-to-end on the delphi KVM host (QEMU 11.0.2).
Alpine — the generic_ cloud image silently ignores a NoCloud seed, so cloud-init
never ran. Fixes, all confirmed by booting:
- switch to the nocloud_ image variant (built for a local seed),
- start sshd from a runcmd (OpenRC doesn't auto-start it after key injection),
- give the account a throwaway password — Alpine's non-PAM sshd refuses pubkey
auth for a cloud-init-locked ('!') account, unlike the UsePAM=yes distros,
- install sudo via cloud-init packages: (the minimal image has none, so the
test-ready `sudo apk add` prereq failed).
Also add instance-id to the NoCloud meta-data, which the nocloud image requires.
NixOS — publishes no downloadable cloud qcow2 (Hydra builds AMIs), so the harness
now BUILDS one with nixos-generators (new scripts/linux-install-test-nixos.nix:
cloud-init for the key, flakes enabled, deliberately no python/git/pipx).
ensure_base_image branches to build_nixos_image for the nixos distro. The
test-ready prereq uses `nix profile install` pinned to nixpkgs/nixos-24.11,
because the guest's default unstable registry builds pipx from source and its
test suite currently fails to build.
Validation: 10/10 cells pass, clean teardown, no leaked VMs or run dirs.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
25 lines
1.1 KiB
Nix
25 lines
1.1 KiB
Nix
# NixOS image for scripts/linux-install-test.sh.
|
|
#
|
|
# NixOS publishes no downloadable cloud qcow2 (its cloud images are Hydra-built
|
|
# AMIs), so the harness BUILDS this one with nixos-generators (-f qcow). It is
|
|
# deliberately minimal — no python3/git/pipx — so the bare `test` variant is
|
|
# genuinely under-provisioned and exercises install.sh's guards; `test-ready`
|
|
# provisions them with `nix profile install` (hence flakes below).
|
|
{ lib, ... }:
|
|
{
|
|
# Consume the same NoCloud seed the other distros use: cloud-init injects the
|
|
# per-run ephemeral SSH key for root. Leave networking to NixOS's default
|
|
# dhcpcd (QEMU user-mode NAT) — enabling cloud-init's networkd here conflicts
|
|
# with dhcpcd and can drop the guest's network.
|
|
services.cloud-init.enable = true;
|
|
services.cloud-init.network.enable = false;
|
|
|
|
services.openssh.enable = true;
|
|
services.openssh.settings.PermitRootLogin = lib.mkForce "prohibit-password";
|
|
|
|
# Flakes so the `test-ready` prereq step can `nix profile install nixpkgs#...`.
|
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
|
|
system.stateVersion = "24.11";
|
|
}
|