mirror of
https://github.com/nestriness/nestri.git
synced 2026-09-20 01:35:19 +03:00
Get this thing going..
<!-- greptile_comment -->
<!-- greptile_summary -->
<h2><a
href="https://app.greptile.com/api/retrigger?id=63134761"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/RetriggerDark.svg?v=1"><source
media="(prefers-color-scheme: light)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/Retrigger.svg?v=1"><img
alt="Retrigger"
src="https://greptile-static-assets.s3.amazonaws.com/badges/Retrigger.svg?v=1"
align="right"></picture></a>Confidence Score: 5/5</h2>
The PR appears safe to merge; all previous findings are resolved and the
latest readiness change introduces no established actionable regression.
<h3>Summary</h3>
- Establishes required guest filesystems, runtime directories, device
permissions, and service processes.
- Reports initialization and service deaths over the lifecycle channel.
- Supports launch, restart, and shutdown commands for a resident guest.
- Separates service and workload identities and configures per-launch
runtime environments.
- Removes the currently inactive nescope screenshot option and makes
capture-chain verification fail explicitly when compositor readback is
unavailable.
- Reworks the guest image around `nesinit` as PID 1 without a
distribution service manager.
<h3>Diagram</h3>
```mermaid
sequenceDiagram
participant Host
participant Init as nesinit
participant FS as Guest filesystems
participant Services as Service stack
participant Workload
Init->>Host: Ready(protocol version)
Host->>Init: Boot(mount descriptors)
Init->>FS: Establish and mount shares
Init->>Services: Spawn services in order
Services-->>Init: Required sockets ready
Init->>Host: Initialized(service names)
Host->>Init: Launch(id, exec, on_exit)
Init->>Workload: Spawn with isolated UID/runtime
Init->>Host: Started(id)
Workload-->>Init: Exit status
Init->>Host: WorkloadExited(id, status)
Host->>Init: Launch / Restart / Shutdown
```
<sub>Reviews (4) · Last reviewed commit: ["fix(nesinit): readiness is a
socket
that..."](731d34df9d)</sub>
<!-- /greptile_comment -->
---------
Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
47 lines
1.4 KiB
TOML
47 lines
1.4 KiB
TOML
[package]
|
||
name = "nescope"
|
||
version = "0.1.0"
|
||
edition.workspace = true
|
||
license.workspace = true
|
||
repository.workspace = true
|
||
|
||
[[bin]]
|
||
name = "nescope"
|
||
path = "src/main.rs"
|
||
|
||
[dependencies]
|
||
# Smithay – Wayland compositor framework.
|
||
# "backend_drm" gives us Fourcc/Format/Modifier without pulling in a full renderer.
|
||
smithay = { version = "0.7", default-features = false, features = [
|
||
"wayland_frontend",
|
||
"xwayland",
|
||
"backend_drm",
|
||
"desktop",
|
||
"backend_libinput",
|
||
#"renderer_pixman", # needed for on_commit_buffer_handler
|
||
# Reading a dmabuf back to the CPU. nescope still does not composite or
|
||
# present anything -- this is import-and-copy only, so a client that
|
||
# renders on the GPU can be screenshotted like any other.
|
||
#"backend_gbm",
|
||
] }
|
||
|
||
# Wayland client – connects to the host compositor to forward buffers.
|
||
wayland-client = "0.31"
|
||
wayland-protocols = { version = "0.32", features = ["client", "staging", "server"] }
|
||
# Needed to generate the gamescope_swapchain protocol bindings.
|
||
wayland-scanner = "0.31"
|
||
wayland-backend = "0.3"
|
||
|
||
# Event loop
|
||
calloop = { version = "0.14", features = ["signals"] }
|
||
|
||
# Logging
|
||
tracing = "0.1"
|
||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||
clap = { version = "4.6", features = ["derive", "env"] }
|
||
|
||
libc = "0.2"
|
||
input = { version = "0.9", features = ["udev"] }
|
||
nesprotocol = { path = "../../crates/nesprotocol" }
|
||
glob = "0.3"
|