From a2d3ee77b8dc2ed3dd9562ac8f11c56c65588786 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Sun, 12 Nov 2017 18:21:33 +0000 Subject: [PATCH 1/3] make-disk-image: clean up --- nixos/lib/make-disk-image.nix | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/nixos/lib/make-disk-image.nix b/nixos/lib/make-disk-image.nix index 9d1327d9c15..e4480b26c64 100644 --- a/nixos/lib/make-disk-image.nix +++ b/nixos/lib/make-disk-image.nix @@ -40,11 +40,11 @@ with lib; let - extensions = { + filename = "nixos." + { qcow2 = "qcow2"; vpc = "vhd"; raw = "img"; - }; + }.${format}; nixpkgs = cleanSource pkgs.path; @@ -125,7 +125,7 @@ let fakeroot nixos-prepare-root $root ${channelSources} ${config.system.build.toplevel} closure 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 ( pkgs.runCommand name @@ -134,12 +134,11 @@ in pkgs.vmTools.runInLinuxVM ( exportReferencesGraph = [ "closure" metaClosure ]; postVM = '' ${if format == "raw" then '' - mv $diskImage $out/nixos.img - diskImage=$out/nixos.img + mv $diskImage $out/${filename} '' else '' - ${pkgs.qemu}/bin/qemu-img convert -f raw -O ${format} $diskImage $out/nixos.${extensions.${format}} - diskImage=$out/nixos.${extensions.${format}} + ${pkgs.qemu}/bin/qemu-img convert -f raw -O ${format} $diskImage $out/${filename} ''} + diskImage=$out/${filename} ${postVM} ''; memSize = 1024; From 608de48fe42364ea4062513d1d651430b18d8787 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Sat, 11 Nov 2017 19:27:37 +0000 Subject: [PATCH 2/3] make-disk-image: add compressed option to compress qcow2 images --- nixos/lib/make-disk-image.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/nixos/lib/make-disk-image.nix b/nixos/lib/make-disk-image.nix index e4480b26c64..c2a5415d1b2 100644 --- a/nixos/lib/make-disk-image.nix +++ b/nixos/lib/make-disk-image.nix @@ -35,11 +35,16 @@ , # Disk image format, one of qcow2, vpc, raw. format ? "raw" + +, # Whether to compress the image, applicable only when the format is qcow2. + compressed ? false }: with lib; let + compress = optionalString compressed (assert format == "qcow2"; "-c"); + filename = "nixos." + { qcow2 = "qcow2"; vpc = "vhd"; @@ -136,7 +141,7 @@ in pkgs.vmTools.runInLinuxVM ( ${if format == "raw" then '' mv $diskImage $out/${filename} '' else '' - ${pkgs.qemu}/bin/qemu-img convert -f raw -O ${format} $diskImage $out/${filename} + ${pkgs.qemu}/bin/qemu-img convert -f raw -O ${format} ${compress} $diskImage $out/${filename} ''} diskImage=$out/${filename} ${postVM} From 27f5cc959bd3beb93352f65c0ce0d4f7aa4f63f8 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Sun, 12 Nov 2017 18:29:01 +0000 Subject: [PATCH 3/3] make-disk-image: embed compression switch into the format name --- nixos/lib/make-disk-image.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nixos/lib/make-disk-image.nix b/nixos/lib/make-disk-image.nix index c2a5415d1b2..226817cf6a7 100644 --- a/nixos/lib/make-disk-image.nix +++ b/nixos/lib/make-disk-image.nix @@ -33,17 +33,17 @@ , name ? "nixos-disk-image" -, # Disk image format, one of qcow2, vpc, raw. +, # Disk image format, one of qcow2, qcow2-compressed, vpc, raw. format ? "raw" - -, # Whether to compress the image, applicable only when the format is qcow2. - compressed ? false }: with lib; -let - compress = optionalString compressed (assert format == "qcow2"; "-c"); +let format' = format; in let + + format = if (format' == "qcow2-compressed") then "qcow2" else format; + + compress = optionalString (format' == "qcow2-compressed") "-c"; filename = "nixos." + { qcow2 = "qcow2";