Loading nixos/modules/image/repart-image.nix +5 −3 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ , imageFileBasename , compression , fileSystems , partitionsJSON , finalPartitions , split , seed , definitionsDirectory Loading Loading @@ -110,7 +110,9 @@ in env = mkfsEnv; inherit partitionsJSON definitionsDirectory; inherit finalPartitions definitionsDirectory; partitionsJSON = builtins.toJSON finalAttrs.finalPartitions; # relative path to the repart definitions that are read by systemd-repart finalRepartDefinitions = "repart.d"; Loading @@ -136,7 +138,7 @@ in patchPhase = '' runHook prePatch amendedRepartDefinitionsDir=$(${amendRepartDefinitions} $partitionsJSON $definitionsDirectory) amendedRepartDefinitionsDir=$(${amendRepartDefinitions} <(echo "$partitionsJSON") $definitionsDirectory) ln -vs $amendedRepartDefinitionsDir $finalRepartDefinitions runHook postPatch Loading nixos/modules/image/repart-verity-store.nix +27 −10 Original line number Diff line number Diff line Loading @@ -163,21 +163,20 @@ in createEmpty = false; }).overrideAttrs ( finalAttrs: previousAttrs: let copyUki = "CopyFiles=${config.system.build.uki}/${config.system.boot.loader.ukiFile}:${cfg.ukiPath}"; in { finalAttrs: previousAttrs: { # add entry to inject UKI into ESP finalPartitions = lib.recursiveUpdate previousAttrs.finalPartitions { ${cfg.partitionIds.esp}.contents = { "${cfg.ukiPath}".source = "${config.system.build.uki}/${config.system.boot.loader.ukiFile}"; }; }; nativeBuildInputs = previousAttrs.nativeBuildInputs ++ [ pkgs.systemdUkify verityHashCheck pkgs.jq ]; postPatch = '' # add entry to inject UKI into ESP echo '${copyUki}' >> $finalRepartDefinitions/${cfg.partitionIds.esp}.conf ''; preBuild = '' # check that we build the final image with the same intermediate image for # which the injected UKI was built by comparing the UKI cmdline with the repart output Loading @@ -194,6 +193,24 @@ in chmod +w ${config.image.repart.imageFileBasename}.raw ''; # replace "TBD" with the original roothash values preInstall = '' mv -v repart-output{.json,_orig.json} jq --slurp --indent -1 \ '.[0] as $intermediate | .[1] as $final | $intermediate | map(select(.roothash != null) | { "uuid":.uuid,"roothash":.roothash }) as $uuids | $final + $uuids | group_by(.uuid) | map(add) | sort_by(.offset)' \ ${config.system.build.intermediateImage}/repart-output.json \ repart-output_orig.json \ > repart-output.json rm -v repart-output_orig.json ''; # the image will be self-contained so we can drop references # to the closure that was used to build it unsafeDiscardReferences.out = true; Loading nixos/modules/image/repart.nix +2 −4 Original line number Diff line number Diff line Loading @@ -318,14 +318,12 @@ in format (lib.mapAttrs (_n: v: { Partition = v.repartConfig; }) cfg.finalPartitions); partitionsJSON = pkgs.writeText "partitions.json" (builtins.toJSON cfg.finalPartitions); mkfsEnv = mkfsOptionsToEnv cfg.mkfsOptions; in pkgs.callPackage ./repart-image.nix { systemd = cfg.package; inherit (cfg) name version imageFileBasename compression split seed sectorSize; inherit fileSystems definitionsDirectory partitionsJSON mkfsEnv; inherit (cfg) name version imageFileBasename compression split seed sectorSize finalPartitions; inherit fileSystems definitionsDirectory mkfsEnv; }; meta.maintainers = with lib.maintainers; [ nikstur willibutz ]; Loading Loading
nixos/modules/image/repart-image.nix +5 −3 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ , imageFileBasename , compression , fileSystems , partitionsJSON , finalPartitions , split , seed , definitionsDirectory Loading Loading @@ -110,7 +110,9 @@ in env = mkfsEnv; inherit partitionsJSON definitionsDirectory; inherit finalPartitions definitionsDirectory; partitionsJSON = builtins.toJSON finalAttrs.finalPartitions; # relative path to the repart definitions that are read by systemd-repart finalRepartDefinitions = "repart.d"; Loading @@ -136,7 +138,7 @@ in patchPhase = '' runHook prePatch amendedRepartDefinitionsDir=$(${amendRepartDefinitions} $partitionsJSON $definitionsDirectory) amendedRepartDefinitionsDir=$(${amendRepartDefinitions} <(echo "$partitionsJSON") $definitionsDirectory) ln -vs $amendedRepartDefinitionsDir $finalRepartDefinitions runHook postPatch Loading
nixos/modules/image/repart-verity-store.nix +27 −10 Original line number Diff line number Diff line Loading @@ -163,21 +163,20 @@ in createEmpty = false; }).overrideAttrs ( finalAttrs: previousAttrs: let copyUki = "CopyFiles=${config.system.build.uki}/${config.system.boot.loader.ukiFile}:${cfg.ukiPath}"; in { finalAttrs: previousAttrs: { # add entry to inject UKI into ESP finalPartitions = lib.recursiveUpdate previousAttrs.finalPartitions { ${cfg.partitionIds.esp}.contents = { "${cfg.ukiPath}".source = "${config.system.build.uki}/${config.system.boot.loader.ukiFile}"; }; }; nativeBuildInputs = previousAttrs.nativeBuildInputs ++ [ pkgs.systemdUkify verityHashCheck pkgs.jq ]; postPatch = '' # add entry to inject UKI into ESP echo '${copyUki}' >> $finalRepartDefinitions/${cfg.partitionIds.esp}.conf ''; preBuild = '' # check that we build the final image with the same intermediate image for # which the injected UKI was built by comparing the UKI cmdline with the repart output Loading @@ -194,6 +193,24 @@ in chmod +w ${config.image.repart.imageFileBasename}.raw ''; # replace "TBD" with the original roothash values preInstall = '' mv -v repart-output{.json,_orig.json} jq --slurp --indent -1 \ '.[0] as $intermediate | .[1] as $final | $intermediate | map(select(.roothash != null) | { "uuid":.uuid,"roothash":.roothash }) as $uuids | $final + $uuids | group_by(.uuid) | map(add) | sort_by(.offset)' \ ${config.system.build.intermediateImage}/repart-output.json \ repart-output_orig.json \ > repart-output.json rm -v repart-output_orig.json ''; # the image will be self-contained so we can drop references # to the closure that was used to build it unsafeDiscardReferences.out = true; Loading
nixos/modules/image/repart.nix +2 −4 Original line number Diff line number Diff line Loading @@ -318,14 +318,12 @@ in format (lib.mapAttrs (_n: v: { Partition = v.repartConfig; }) cfg.finalPartitions); partitionsJSON = pkgs.writeText "partitions.json" (builtins.toJSON cfg.finalPartitions); mkfsEnv = mkfsOptionsToEnv cfg.mkfsOptions; in pkgs.callPackage ./repart-image.nix { systemd = cfg.package; inherit (cfg) name version imageFileBasename compression split seed sectorSize; inherit fileSystems definitionsDirectory partitionsJSON mkfsEnv; inherit (cfg) name version imageFileBasename compression split seed sectorSize finalPartitions; inherit fileSystems definitionsDirectory mkfsEnv; }; meta.maintainers = with lib.maintainers; [ nikstur willibutz ]; Loading