mirror of
https://github.com/nestriness/nestri.git
synced 2026-09-19 09:15:19 +03:00
The component nescapture, neswire and nescope all talk to, and the only thing in the guest that speaks to the client. It muxes their frames into one iroh QUIC endpoint and fans input back. Renamed from nestri-guest-hub, which named a location rather than a job. Four files came across unchanged -- session.rs, ipc_listener.rs, ticket.rs, screenshot.rs. Between them they mention Steam zero times, and they import only nesprotocol's open modules; the control feature carrying LaunchIntent and SteamIdentity is used exclusively by the three files that are staying closed. The two clusters shared a main.rs and nothing else, so there was no untangling to do -- only a cut. main.rs loses --proton, --steamclient-so, --root and the game uid/gid, and no longer ends by handing the process to a controller. It runs until it is stopped. Deciding when the box is finished belongs to nesinit. The ticket used to leave via that controller, so it needed a new way out: neshub now serves it on a socket and nesinit dials for it. Listening rather than dialling matches every other socket here and means no startup ordering to get wrong. Three tests, where there were none -- the ticket crosses a process boundary as text now, so a round trip that drops a field would otherwise be found by whoever cannot connect.
40 lines
1.1 KiB
TOML
40 lines
1.1 KiB
TOML
# The Rust half of this monorepo. The JS/TS half is `package.json`.
|
|
#
|
|
# Layout, per the same rule on both sides: split by *what a thing is*, not by
|
|
# what language it is written in.
|
|
#
|
|
# apps/ deployables — a binary someone runs
|
|
# crates/ shared Rust — a library another crate depends on
|
|
# packages/ shared JS/TS
|
|
#
|
|
# Members are added as components move in. An empty list is honest: nothing has
|
|
# landed yet.
|
|
|
|
[workspace]
|
|
resolver = "3"
|
|
members = [
|
|
"apps/nescapture",
|
|
"apps/nescope",
|
|
"apps/neshub",
|
|
"apps/neswire",
|
|
"crates/nesprotocol",
|
|
]
|
|
|
|
# One pin per dependency, here. A member never writes a version — that is what
|
|
# stops two crates in one tree from disagreeing about tokio.
|
|
[workspace.dependencies]
|
|
anyhow = "1"
|
|
clap = { version = "4", features = ["derive", "env"] }
|
|
libc = "0.2"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
thiserror = "2"
|
|
tokio = { version = "1", features = ["full"] }
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
[workspace.package]
|
|
edition = "2024"
|
|
license = "Apache-2.0"
|
|
repository = "https://github.com/nestrilabs/nestri"
|