From e3789300b1d2ff69bf341c7476ab6830d7ef1f36 Mon Sep 17 00:00:00 2001 From: Philip Taron Date: Tue, 24 Mar 2026 14:06:44 -0700 Subject: [PATCH] nixos/ec2-metadata-fetcher: add xz user-data decompression Support decompressing XZ-compressed EC2 user data via xzcat. Includes a corresponding NixOS test. --- nixos/modules/virtualisation/amazon-image.nix | 1 + nixos/modules/virtualisation/ec2-metadata-fetcher.sh | 1 + nixos/tests/ec2-image.nix | 5 +++++ 3 files changed, 7 insertions(+) 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()