aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/nixos/lib/make-disk-image.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/nixos/lib/make-disk-image.nix')
-rw-r--r--infra/libkookie/nixpkgs/nixos/lib/make-disk-image.nix20
1 files changed, 17 insertions, 3 deletions
diff --git a/infra/libkookie/nixpkgs/nixos/lib/make-disk-image.nix b/infra/libkookie/nixpkgs/nixos/lib/make-disk-image.nix
index 8aa606a56af8..0ad0cf1fef5a 100644
--- a/infra/libkookie/nixpkgs/nixos/lib/make-disk-image.nix
+++ b/infra/libkookie/nixpkgs/nixos/lib/make-disk-image.nix
@@ -28,6 +28,9 @@
# partition of reasonable size is created in addition to the root partition.
# For "legacy", the msdos partition table is used and a single large root
# partition is created.
+ # For "legacy+gpt", the GPT partition table is used, a 1MiB no-fs partition for
+ # use by the bootloader is created, and a single large root partition is
+ # created.
# For "hybrid", the GPT partition table is used and a mandatory ESP
# partition of reasonable size is created in addition to the root partition.
# Also a legacy MBR will be present.
@@ -54,7 +57,7 @@
format ? "raw"
}:
-assert partitionTableType == "legacy" || partitionTableType == "efi" || partitionTableType == "hybrid" || partitionTableType == "none";
+assert partitionTableType == "legacy" || partitionTableType == "legacy+gpt" || partitionTableType == "efi" || partitionTableType == "hybrid" || partitionTableType == "none";
# We use -E offset=X below, which is only supported by e2fsprogs
assert partitionTableType != "none" -> fsType == "ext4";
@@ -75,6 +78,7 @@ let format' = format; in let
rootPartition = { # switch-case
legacy = "1";
+ "legacy+gpt" = "2";
efi = "2";
hybrid = "3";
}.${partitionTableType};
@@ -85,6 +89,16 @@ let format' = format; in let
mklabel msdos \
mkpart primary ext4 1MiB -1
'';
+ "legacy+gpt" = ''
+ parted --script $diskImage -- \
+ mklabel gpt \
+ mkpart no-fs 1MB 2MB \
+ set 1 bios_grub on \
+ align-check optimal 1 \
+ mkpart primary ext4 2MB -1 \
+ align-check optimal 2 \
+ print
+ '';
efi = ''
parted --script $diskImage -- \
mklabel gpt \
@@ -120,7 +134,7 @@ let format' = format; in let
binPath = with pkgs; makeBinPath (
[ rsync
- utillinux
+ util-linux
parted
e2fsprogs
lkl
@@ -225,7 +239,7 @@ let format' = format; in let
in pkgs.vmTools.runInLinuxVM (
pkgs.runCommand name
{ preVM = prepareImage;
- buildInputs = with pkgs; [ utillinux e2fsprogs dosfstools ];
+ buildInputs = with pkgs; [ util-linux e2fsprogs dosfstools ];
postVM = ''
${if format == "raw" then ''
mv $diskImage $out/${filename}