Skip to content

fix(images): build from recipes that carry the machine fixes - #102

Merged
frostyard-machines merged 1 commit into
mainfrom
claude/nspawn-collaboration-021e66
Nov 11, 2026
Merged

frostyard-machines merged 1 commit into
mainfrom
claude/nspawn-collaboration-021e66

Conversation

@bketelsen

Copy link
Copy Markdown
Contributor

Summary

nsl builds its images from a pinned nspawn/mkosi-definitions commit. The recipes now carry fixes nsl used to apply itself (#52, #55, #56 and others). This moves the pin from 68263d0 to 1418e84 and deletes what became duplicate.

  • Debian family: drops mount, libpam-systemd, dbus-user-session, passwd and tzdata.
  • openSUSE family: drops shadow and timezone.
  • rpm family: drops systemd-pam. Azure Linux has no recipe, so its profile now names it.
  • Arch: drops the keyring deletion, nsl-pacman-keyring.service and its preset. The recipe ships no keyring, and its pacman-init.service makes each machine's on first boot.
  • VM image: the same Debian recipe builds it, and it would now gain pam_systemd, so every agent call over SSH would open a logind session and start a user manager. The VM never had that, so it removes libpam-systemd and dbus-user-session again. The VM spec now requires this.

Every image's revision rises, since the recipes are an input to each. Machines keep the same packages; they now come from the recipes instead of nsl's layers.

Risk tier

Risk tier: 3 — changes the source of every published VM and machine image.

Docs housekeeping

No new docs. The machine-image and VM specs, the image README and the open Azure Linux plan are updated.

Verification

  • make ci green.
  • Revert test: with RemovePackages= taken out of image/vm/mkosi.conf, python3 -m unittest scripts/test_image_profiles.py fails.

Built the VM image and all 11 machine images locally with scripts/build-image.sh, then accepted them on KVM:

Check Result
probe-vm.py, VM r12 (b48bdd7c…) 9 of 9 passed
probe-machines.py --gui --isolated, 11 machines 470 of 470 passed
Four idle machines 841 MiB (limit 1,200)
Additional machine start, p95 0.66 s (limit 2 s)
Cold first machine, median 8.84 s
  • The VM manifest has neither libpam-systemd nor dbus-user-session. Against the last VM image I had a manifest for (r10), the only package differences are a kernel update and systemd-sysv, which libpam-systemd pulled in and its removal left behind.
  • Arch's keyrings check found no private key in the image, and a key generated by the machine.
  • Every machine manifest still has the packages dropped from nsl's layers.

Nothing is published by this PR; the next run of the publication workflow on main builds and accepts these revisions itself.

nspawn/mkosi-definitions now carries the fixes nsl used to apply itself:
the Arch keyring is made on each machine's first boot, and the images
install pam_systemd, a session bus, mount, the account tools and zone
data. Pin 1418e84 and delete what became duplicate: those packages from
the Debian and openSUSE families, systemd-pam from the rpm family, and
nsl-pacman-keyring.service with its preset. Azure Linux has no recipe,
so its profile now names systemd-pam itself.

The same Debian recipe builds the VM, which never had pam_systemd. With
it, every agent call over SSH would open a logind session and start a
user manager, so the VM removes libpam-systemd and dbus-user-session
again, and the VM spec requires that.

Every image's revision rises, since the recipes are an input to each.
@github-actions github-actions Bot added level:L1 Read every line risk:high Touches a path in .github/risk-paths.json (core ADR-0068) labels Nov 11, 2026
@frostyard-machines
frostyard-machines merged commit e6f9cb2 into main Nov 11, 2026
4 checks passed
@frostyard-machines
frostyard-machines deleted the claude/nspawn-collaboration-021e66 branch November 11, 2026 15:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

level:L1 Read every line risk:high Touches a path in .github/risk-paths.json (core ADR-0068)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants