diff --git a/nixos/modules/virtualisation/amazon-image.nix b/nixos/modules/virtualisation/amazon-image.nix index 73d8723e452f..ad6bcb30d2b6 100644 --- a/nixos/modules/virtualisation/amazon-image.nix +++ b/nixos/modules/virtualisation/amazon-image.nix @@ -102,6 +102,7 @@ in file gzip mktemp + xz ]; script = builtins.readFile ./ec2-metadata-fetcher.sh; serviceConfig.Type = "oneshot"; diff --git a/nixos/modules/virtualisation/ec2-metadata-fetcher.sh b/nixos/modules/virtualisation/ec2-metadata-fetcher.sh index 49db37c09b8d..9e9ab3cf53d3 100644 --- a/nixos/modules/virtualisation/ec2-metadata-fetcher.sh +++ b/nixos/modules/virtualisation/ec2-metadata-fetcher.sh @@ -70,6 +70,7 @@ try_decompress() { case $ftype in gzip*) decompress_cmd=zcat ;; bzip2*) decompress_cmd=bzcat ;; + XZ*) decompress_cmd=xzcat ;; *) return ;; esac echo "decompressing: $1" diff --git a/nixos/tests/ec2-image.nix b/nixos/tests/ec2-image.nix index cfd0b083befb..5cfc663dcedd 100644 --- a/nixos/tests/ec2-image.nix +++ b/nixos/tests/ec2-image.nix @@ -278,6 +278,11 @@ in test_data = b"#!/bin/bash\necho bzip2-decompression-test\n" test_userdata_decompression(machine, user_data_path, bz2.compress(test_data), "bzip2") + with subtest("Decompression of xz-compressed user-data"): + import lzma + test_data = b"#!/bin/bash\necho xz-decompression-test\n" + test_userdata_decompression(machine, user_data_path, lzma.compress(test_data), "xz") + finally: machine.shutdown() temp_dir.cleanup()