at master 1.0 kB view raw
1{ lib, pkgs, ... }: 2let 3 # Hostname can also be set through "hostname" in user-data. 4 # This is how proxmox configures hostname through cloud-init. 5 metadataDrive = pkgs.stdenv.mkDerivation { 6 name = "metadata"; 7 buildCommand = '' 8 mkdir -p $out/iso 9 10 cat << EOF > $out/iso/user-data 11 #cloud-config 12 hostname: testhostname 13 EOF 14 15 cat << EOF > $out/iso/meta-data 16 instance-id: iid-local02 17 EOF 18 19 ${pkgs.cdrkit}/bin/genisoimage -volid cidata -joliet -rock -o $out/metadata.iso $out/iso 20 ''; 21 }; 22in 23{ 24 name = "cloud-init-hostname"; 25 meta.maintainers = with lib.maintainers; [ 26 lewo 27 illustris 28 ]; 29 30 nodes.machine2 = 31 { ... }: 32 { 33 virtualisation.qemu.options = [ 34 "-cdrom" 35 "${metadataDrive}/metadata.iso" 36 ]; 37 services.cloud-init.enable = true; 38 networking.hostName = ""; 39 }; 40 41 testScript = '' 42 unnamed.wait_for_unit("cloud-final.service") 43 assert "testhostname" in unnamed.succeed("hostname") 44 ''; 45}