diff options
author | github-actions[bot] | 2024-09-24 00:16:10 +0000 |
---|---|---|
committer | GitHub | 2024-09-24 00:16:10 +0000 |
commit | b6b063bdc265990fb87781682da974578b16443c (patch) | |
tree | bce72aa157c64696a2bf771800fb142c0dd09258 /nixos/modules/installer | |
parent | 5b15a1f577931e4685cab06cdf782538e0e1deff (diff) | |
parent | ee35dc7c19dd00e4a122e36b24603687f6d04359 (diff) |
Merge master into haskell-updates
Diffstat (limited to 'nixos/modules/installer')
-rw-r--r-- | nixos/modules/installer/sd-card/sd-image.nix | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/nixos/modules/installer/sd-card/sd-image.nix b/nixos/modules/installer/sd-card/sd-image.nix index 42584d88160a..0e717a2b6a7a 100644 --- a/nixos/modules/installer/sd-card/sd-image.nix +++ b/nixos/modules/installer/sd-card/sd-image.nix @@ -150,6 +150,15 @@ in 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 = { @@ -255,11 +264,8 @@ in ''; }) {}; - boot.postBootCommands = lib.mkIf config.sdImage.expandOnBoot '' - # On the first boot do some maintenance tasks - if [ -f /nix-path-registration ]; then - set -euo pipefail - set -x + boot.postBootCommands = let + expandOnBoot = lib.optionalString config.sdImage.expandOnBoot '' # Figure out device names for the boot device and root filesystem. rootPart=$(${pkgs.util-linux}/bin/findmnt -n -o SOURCE /) bootDevice=$(lsblk -npo PKNAME $rootPart) @@ -269,16 +275,25 @@ in echo ",+," | sfdisk -N$partNum --no-reread $bootDevice ${pkgs.parted}/bin/partprobe ${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 - ${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. touch /etc/NIXOS ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system # Prevents this from running on later boots. - rm -f /nix-path-registration + rm -f ${nixPathRegistrationFile} fi ''; }; |