Archived
Fix LXC installs never actually activating (bind-mount / onto /mnt)
LXC containers have no raw disk visible from inside them, only their already-mounted root filesystem, so hosts like lxc-minimal have no disko config and auto-install.sh's disko branch was a no-op. With nothing pointing /mnt at anything, nixos-install (which defaults to --root /mnt) built the new system into a disconnected empty directory on the container's own root — never the filesystem it actually boots from. After reboot, Proxmox just re-execs the *original* /sbin/init, so the container silently keeps running the installer environment forever, with the "installed" system sitting inert and unused. Confirmed on a real lxc-minimal attempt: /etc/flake-target (stamped by every nixos flake target) didn't exist post-"install", the only SSH key present matched this installer's own common.nix rather than the target flake's modules/common/configuration.nix, and sshd was still socket-activated (nixpkgs' proxmox-lxc.nix default) rather than running as the target's plain sshd.service. Fix: bind-mount / onto /mnt when there's no disko config, so nixos-install actually lands on the filesystem the container boots from — installing NixOS in place rather than into a void. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+10
-1
@@ -138,7 +138,16 @@ if nix eval --refresh --json --extra-experimental-features "flakes nix-command"
|
|||||||
disko --mode destroy,format,mount \
|
disko --mode destroy,format,mount \
|
||||||
--flake "''${FLAKE_BASE_URL}#''${choice}" --yes
|
--flake "''${FLAKE_BASE_URL}#''${choice}" --yes
|
||||||
else
|
else
|
||||||
echo "Selected host has no Disko configuration."
|
# No raw disk to partition — true for every LXC container, which has
|
||||||
|
# no block device visible from inside it, only its already-mounted
|
||||||
|
# root filesystem. nixos-install defaults to installing into /mnt; if
|
||||||
|
# nothing points /mnt at the real root, the new system gets built and
|
||||||
|
# written to a disconnected empty directory, never actually becomes
|
||||||
|
# bootable, and the container silently keeps running this installer
|
||||||
|
# environment forever. Bind-mount / onto /mnt so the install actually
|
||||||
|
# lands on the filesystem this container boots from.
|
||||||
|
echo "Selected host has no Disko configuration — installing in place via bind mount."
|
||||||
|
mount --bind / /mnt
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# sops-nix derives this host's decryption key from its own SSH host key
|
# sops-nix derives this host's decryption key from its own SSH host key
|
||||||
|
|||||||
Reference in New Issue
Block a user