Switch over to a reverse connection scheme (bridge to a guest bus)

This commit is contained in:
Val Packett 2025-12-05 05:57:22 -03:00
parent ea34b7b08c
commit 52c3ea7cd3
5 changed files with 53 additions and 82 deletions

View file

@ -14,9 +14,8 @@ A cross-domain smart D-Bus proxying system that makes (some) [XDG Desktop Portal
- `sidebus-broker` host process:
- to be launched alongside the VMM
- hosts D-Bus servers in-process, based on [busd](https://github.com/dbus2/busd):
- a "private" bus for VM-instance-specific daemons such as permission-store and document-portal
- a "VM" bus, the one actually exposed to the guest over vsock
- hosts a "private" bus for VM-instance-specific daemons such as permission-store and document-portal
- listens on vsock (or on a unix socket that muvm would proxy as vsock) and connects to the VM bus as a client when the agent connects
- orchestrates the lifecycle of the aforementioned daemons + virtiofsd
- (we are sharing the directory *provided by* the document-portal FUSE filesystem!)
- provides portal front-end interfaces like `org.freedesktop.portal.FileChooser` on the VM bus
@ -24,11 +23,10 @@ A cross-domain smart D-Bus proxying system that makes (some) [XDG Desktop Portal
- (not talking directly to impls: don't want to reimplement per-DE portal selection; also 1:1 mapping is nicer to code)
- but with extra hooks like exposing files to the guest using our private (per-VM) document-portal!
- `sidebus-agent` guest process:
- listens on a guest unix socket, proxies D-Bus messages to a vsock
- spawned on-demand by systemd via socket activation
- connects to the broker over vsock and splices the connection into the VM (session) bus
- can be spawned spawned on-demand by D-Bus
- uses systemd credentials for config args like vsock port
- (very convenient to pass via the VMM, e.g. qemu: `-smbios type=11,value=io.systemd.credential:sidebus.port=1337`)
- guest NixOS configuration exposed via the flake
## Development Notes