1
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-06-30 21:15:21 +03:00

Fix expandOnBoot=false and rigid path to nix-path-registration (#341071)

This commit is contained in:
Jonas Chevalier 2024-09-23 09:59:27 +02:00 committed by GitHub
commit b4dc369186
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -150,6 +150,15 @@ in
Whether to configure the sd image to expand it's partition on boot. Whether to configure the sd image to expand it's partition on boot.
''; '';
}; };
nixPathRegistrationFile = mkOption {
type = types.str;
default = "/nix-path-registration";
description = ''
Location of the file containing the input for nix-store --load-db once the machine has booted.
If overriding fileSystems."/" then you should to set this to the root mount + /nix-path-registration
'';
};
}; };
config = { config = {
@ -255,11 +264,8 @@ in
''; '';
}) {}; }) {};
boot.postBootCommands = lib.mkIf config.sdImage.expandOnBoot '' boot.postBootCommands = let
# On the first boot do some maintenance tasks expandOnBoot = lib.optionalString config.sdImage.expandOnBoot ''
if [ -f /nix-path-registration ]; then
set -euo pipefail
set -x
# Figure out device names for the boot device and root filesystem. # Figure out device names for the boot device and root filesystem.
rootPart=$(${pkgs.util-linux}/bin/findmnt -n -o SOURCE /) rootPart=$(${pkgs.util-linux}/bin/findmnt -n -o SOURCE /)
bootDevice=$(lsblk -npo PKNAME $rootPart) bootDevice=$(lsblk -npo PKNAME $rootPart)
@ -269,16 +275,25 @@ in
echo ",+," | sfdisk -N$partNum --no-reread $bootDevice echo ",+," | sfdisk -N$partNum --no-reread $bootDevice
${pkgs.parted}/bin/partprobe ${pkgs.parted}/bin/partprobe
${pkgs.e2fsprogs}/bin/resize2fs $rootPart ${pkgs.e2fsprogs}/bin/resize2fs $rootPart
'';
nixPathRegistrationFile = config.sdImage.nixPathRegistrationFile;
in ''
# On the first boot do some maintenance tasks
if [ -f ${nixPathRegistrationFile} ]; then
set -euo pipefail
set -x
${expandOnBoot}
# Register the contents of the initial Nix store # Register the contents of the initial Nix store
${config.nix.package.out}/bin/nix-store --load-db < /nix-path-registration ${config.nix.package.out}/bin/nix-store --load-db < ${nixPathRegistrationFile}
# nixos-rebuild also requires a "system" profile and an /etc/NIXOS tag. # nixos-rebuild also requires a "system" profile and an /etc/NIXOS tag.
touch /etc/NIXOS touch /etc/NIXOS
${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system
# Prevents this from running on later boots. # Prevents this from running on later boots.
rm -f /nix-path-registration rm -f ${nixPathRegistrationFile}
fi fi
''; '';
}; };