Compare commits

3 Commits

Author SHA1 Message Date
Sovran_Systems
531b8c1d09 Merge pull request #120 from naturallaw777/copilot/fix-installer-password-step
[WIP] Fix installer failure at 'Create Password' step
2026-04-07 11:44:49 -05:00
copilot-swe-agent[bot]
a8128cef8d Fix chpasswd: find binary in Nix store and pipe password inline
Agent-Logs-Url: https://github.com/naturallaw777/staging_alpha/sessions/630a25f6-417a-47de-b163-b519252b403c

Co-authored-by: naturallaw777 <99053422+naturallaw777@users.noreply.github.com>
2026-04-07 16:43:50 +00:00
copilot-swe-agent[bot]
3baffb2a69 Initial plan 2026-04-07 16:42:51 +00:00

View File

@@ -1000,9 +1000,20 @@ class InstallerWindow(Adw.ApplicationWindow):
raise RuntimeError(proc.stderr.strip() or "Failed to write password file") raise RuntimeError(proc.stderr.strip() or "Failed to write password file")
run(["sudo", "chmod", "600", "/mnt/var/lib/secrets/free-password"]) run(["sudo", "chmod", "600", "/mnt/var/lib/secrets/free-password"])
# Locate chpasswd in the installed system's Nix store
chpasswd_find = subprocess.run(
["sudo", "find", "/mnt/nix/store", "-name", "chpasswd", "-type", "f", "-path", "*/bin/chpasswd"],
capture_output=True, text=True
)
chpasswd_paths = chpasswd_find.stdout.strip().splitlines()
if not chpasswd_paths:
raise RuntimeError("chpasswd binary not found in /mnt/nix/store")
# Use the first match; strip the /mnt prefix for chroot-relative path
chpasswd_bin = chpasswd_paths[0][len("/mnt"):]
proc = subprocess.run( proc = subprocess.run(
["sudo", "nixos-enter", "--root", "/mnt", "--", "sh", "-c", "chpasswd"], ["sudo", "chroot", "/mnt", "sh", "-c",
input=f"free:{password}", f"echo 'free:{password}' | {chpasswd_bin}"],
capture_output=True, text=True capture_output=True, text=True
) )
if proc.returncode != 0: if proc.returncode != 0: