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:
commit
b4dc369186
1 changed files with 22 additions and 7 deletions
|
@ -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
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue