windows/seal: per-VM account on the config medium, not baked
username/password move from the sealed image to makeConfigMedium, so two
VMs get distinct logins (and, as before, distinct SIDs). The sealed
image bakes only a generic bootstrap account ("vmixsetup") whose sole job
is to carry OOBE to a logon; post-oobe then creates the real account from
the config CD, switches autologon to it, and reboots so it builds its own
SID-bound profile on D:\Users\<username>. A one-shot cleanup (RunOnce,
first logon of the real account) retires the bootstrap and its profile
and applies the per-user tint. So nothing about the account is shared or
baked, and the on-disk profile folder matches the real username.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0117qMyjpuXsjpVAcpJbFD8g
This commit is contained in:
parent
ee002586e5
commit
1510b6c5ff
3 changed files with 62 additions and 1 deletions
|
|
@ -43,10 +43,16 @@ in rec {
|
|||
# delivered at deploy time on a config medium (helpers/makeConfigMedium.nix).
|
||||
# One sealed store path is shared by every VM; each VM's first boot mints its
|
||||
# own SID and builds the whole profile on the relocated data volume (D:).
|
||||
# Forces only the structural bits -- account, RDP and locale stay caller args.
|
||||
#
|
||||
# The baked account is a generic bootstrap that only exists to carry OOBE to a
|
||||
# logon -- the real, per-VM account (username/password) comes from the config
|
||||
# medium, and the bootstrap is retired on the target. So nothing per-VM is
|
||||
# baked. RDP and locale stay caller args.
|
||||
seal = templateArgs: generalize ({
|
||||
delayOobeRun = true;
|
||||
configMedium = true;
|
||||
username = "vmixsetup";
|
||||
password = "vmixsetup";
|
||||
profilesDirectory = "D:\\Users";
|
||||
dataDisk = { driveLetter = "D"; label = "data"; };
|
||||
} // templateArgs);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue