fix(install): survive the live ISO offline and its non-interactive bash
Found by running the unattended install in an offline QEMU VM: - compgen is missing from nixpkgs' non-interactive bash (the package shebang) — replaced with plain glob tests in hardware-db and prewipe - disko's eval resolves <nixpkgs> via NIX_PATH (a dead channel on the ISO) and tried channels.nixos.org — export NIX_PATH to the pinned nixpkgs source and point the flake registry at an empty baked file - lock nomarchy by path (the source the ISO carries) instead of git+https: git inputs clone even when narHash is known, which kills offline installs; `original` keeps the forge URL so a later `nix flake update` re-resolves normally. Works from dirty-tree ISOs too. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
11
flake.nix
11
flake.nix
@@ -44,16 +44,19 @@
|
||||
hardwareModuleNames = pkgs.writeText "nixos-hardware-modules.txt"
|
||||
(nixpkgs.lib.concatStringsSep "\n"
|
||||
(builtins.attrNames nixos-hardware.nixosModules));
|
||||
nixpkgsPath = nixpkgs.outPath;
|
||||
flakeUrl = "git+${gitUrl}";
|
||||
# Future updates re-resolve from the forge (original); the install
|
||||
# itself resolves from the ISO store (locked = path) — fully
|
||||
# offline, even from a dirty-tree ISO.
|
||||
originalNode = { type = "git"; url = gitUrl; };
|
||||
lockedNode = {
|
||||
type = "git";
|
||||
url = gitUrl;
|
||||
rev = self.rev or null; # null on a dirty tree → installer needs network
|
||||
type = "path";
|
||||
path = self.outPath;
|
||||
narHash = self.narHash;
|
||||
lastModified = self.lastModified or 0;
|
||||
revCount = self.revCount or 0;
|
||||
};
|
||||
rev = self.rev or null;
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user