Merge pull request #31535 from orivej/compress-qcow2
make-disk-image: add compressed option to compress qcow2 images
This commit is contained in:
commit
6f13844bfd
@ -33,18 +33,23 @@
|
|||||||
|
|
||||||
, name ? "nixos-disk-image"
|
, name ? "nixos-disk-image"
|
||||||
|
|
||||||
, # Disk image format, one of qcow2, vpc, raw.
|
, # Disk image format, one of qcow2, qcow2-compressed, vpc, raw.
|
||||||
format ? "raw"
|
format ? "raw"
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let format' = format; in let
|
||||||
extensions = {
|
|
||||||
|
format = if (format' == "qcow2-compressed") then "qcow2" else format;
|
||||||
|
|
||||||
|
compress = optionalString (format' == "qcow2-compressed") "-c";
|
||||||
|
|
||||||
|
filename = "nixos." + {
|
||||||
qcow2 = "qcow2";
|
qcow2 = "qcow2";
|
||||||
vpc = "vhd";
|
vpc = "vhd";
|
||||||
raw = "img";
|
raw = "img";
|
||||||
};
|
}.${format};
|
||||||
|
|
||||||
nixpkgs = cleanSource pkgs.path;
|
nixpkgs = cleanSource pkgs.path;
|
||||||
|
|
||||||
@ -125,7 +130,7 @@ let
|
|||||||
fakeroot nixos-prepare-root $root ${channelSources} ${config.system.build.toplevel} closure
|
fakeroot nixos-prepare-root $root ${channelSources} ${config.system.build.toplevel} closure
|
||||||
|
|
||||||
echo "copying staging root to image..."
|
echo "copying staging root to image..."
|
||||||
cptofs ${pkgs.lib.optionalString partitioned "-P 1"} -t ${fsType} -i $diskImage $root/* /
|
cptofs ${optionalString partitioned "-P 1"} -t ${fsType} -i $diskImage $root/* /
|
||||||
'';
|
'';
|
||||||
in pkgs.vmTools.runInLinuxVM (
|
in pkgs.vmTools.runInLinuxVM (
|
||||||
pkgs.runCommand name
|
pkgs.runCommand name
|
||||||
@ -134,12 +139,11 @@ in pkgs.vmTools.runInLinuxVM (
|
|||||||
exportReferencesGraph = [ "closure" metaClosure ];
|
exportReferencesGraph = [ "closure" metaClosure ];
|
||||||
postVM = ''
|
postVM = ''
|
||||||
${if format == "raw" then ''
|
${if format == "raw" then ''
|
||||||
mv $diskImage $out/nixos.img
|
mv $diskImage $out/${filename}
|
||||||
diskImage=$out/nixos.img
|
|
||||||
'' else ''
|
'' else ''
|
||||||
${pkgs.qemu}/bin/qemu-img convert -f raw -O ${format} $diskImage $out/nixos.${extensions.${format}}
|
${pkgs.qemu}/bin/qemu-img convert -f raw -O ${format} ${compress} $diskImage $out/${filename}
|
||||||
diskImage=$out/nixos.${extensions.${format}}
|
|
||||||
''}
|
''}
|
||||||
|
diskImage=$out/${filename}
|
||||||
${postVM}
|
${postVM}
|
||||||
'';
|
'';
|
||||||
memSize = 1024;
|
memSize = 1024;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user