Merge pull request #284174 from jmbaur/repart-sector-size

Fix appliance-repart-image NixOS VM test
This commit is contained in:
Ryan Lahfa 2024-01-30 16:36:09 +01:00 committed by GitHub
commit 386c037cb7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 1 deletions

View File

@ -32,6 +32,7 @@
, split , split
, seed , seed
, definitionsDirectory , definitionsDirectory
, sectorSize
}: }:
let let
@ -94,6 +95,7 @@ runCommand imageFileBasename
--definitions="$amendedRepartDefinitions" \ --definitions="$amendedRepartDefinitions" \
--split="${lib.boolToString split}" \ --split="${lib.boolToString split}" \
--json=pretty \ --json=pretty \
${lib.optionalString (sectorSize != null) "--sector-size=${toString sectorSize}"} \
${imageFileBasename}.raw \ ${imageFileBasename}.raw \
| tee repart-output.json | tee repart-output.json

View File

@ -135,6 +135,16 @@ in
''; '';
}; };
sectorSize = lib.mkOption {
type = with lib.types; nullOr int;
default = 512;
example = lib.literalExpression "4096";
description = lib.mdDoc ''
The sector size of the disk image produced by systemd-repart. This
value must be a power of 2 between 512 and 4096.
'';
};
package = lib.mkPackageOption pkgs "systemd-repart" { package = lib.mkPackageOption pkgs "systemd-repart" {
# We use buildPackages so that repart images are built with the build # We use buildPackages so that repart images are built with the build
# platform's systemd, allowing for cross-compiled systems to work. # platform's systemd, allowing for cross-compiled systems to work.
@ -232,7 +242,7 @@ in
in in
pkgs.callPackage ./repart-image.nix { pkgs.callPackage ./repart-image.nix {
systemd = cfg.package; systemd = cfg.package;
inherit (cfg) imageFileBasename compression split seed; inherit (cfg) imageFileBasename compression split seed sectorSize;
inherit fileSystems definitionsDirectory partitions; inherit fileSystems definitionsDirectory partitions;
}; };

View File

@ -40,6 +40,8 @@ in
image.repart = { image.repart = {
name = "appliance-gpt-image"; name = "appliance-gpt-image";
# OVMF does not work with the default repart sector size of 4096
sectorSize = 512;
partitions = { partitions = {
"esp" = { "esp" = {
contents = contents =