aboutsummaryrefslogtreecommitdiff
path: root/libs/nak/src/runtime_wrap.rs
diff options
context:
space:
mode:
authorSulfurNitride <SulfurNitride@users.noreply.github.com>2026-04-08 03:30:04 -0500
committerSulfurNitride <SulfurNitride@users.noreply.github.com>2026-04-08 03:30:04 -0500
commit3de4056df4ea5d0afbcea388ad8d681daea1aac3 (patch)
treefc5978451f9f51b84268f45bd2fa6f5d4a17baaf /libs/nak/src/runtime_wrap.rs
parent5ba23a6d7a40052d9e1d4bd0cf018cfe7814d03a (diff)
Remove NaK/Rust dependency, port remaining functionality to native C++
Replace NaK Rust crate and nak_ffi with native C++ implementations: - Game detection (Steam, Heroic, Bottles), VDF parser, icon extraction - Prefix symlinks, SLR manager, Steam path detection - Known games database Add FUSE VFS optimizations: zero-copy reads via fuse_reply_data, default_permissions mount option, FUSE_CAP_ASYNC_DIO, FUSE_CAP_EXPIRE_ONLY, lookup cache parent index, cached mode bits, increased I/O buffer sizes. Update build system, prefix setup, and various fixes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'libs/nak/src/runtime_wrap.rs')
-rw-r--r--libs/nak/src/runtime_wrap.rs58
1 files changed, 0 insertions, 58 deletions
diff --git a/libs/nak/src/runtime_wrap.rs b/libs/nak/src/runtime_wrap.rs
deleted file mode 100644
index 943a329..0000000
--- a/libs/nak/src/runtime_wrap.rs
+++ /dev/null
@@ -1,58 +0,0 @@
-use std::ffi::OsStr;
-use std::process::Command;
-
-/// Build a command to run `exe` with the given environment variables.
-///
-/// If SLR (Steam Linux Runtime) is installed, the command is wrapped inside
-/// the pressure-vessel container via the SLR `run` script. Environment
-/// variables are set on the process and inherited by pressure-vessel into the
-/// container (matching how game launches work via QProcess). This ensures
-/// Wine/Proton commands use the container's libraries instead of potentially
-/// broken host libraries.
-pub fn build_command<S: AsRef<OsStr>>(
- exe: impl AsRef<OsStr>,
- envs: &[(&str, S)],
-) -> Command {
- if let Some(slr_script) = crate::slr::get_slr_run_script() {
- let mut cmd = Command::new(&slr_script);
- // Set env vars on the process — pressure-vessel inherits them
- for (key, value) in envs {
- cmd.env(key, value.as_ref());
- }
- // Expose the executable's parent directory to the container —
- // needed for system-installed Protons (e.g. /usr/share/steam/...)
- // whose files may not be visible inside the container by default.
- if let Some(parent) = std::path::Path::new(exe.as_ref()).parent() {
- if parent.exists() {
- let mut flag = std::ffi::OsString::from("--filesystem=");
- flag.push(parent.as_os_str());
- cmd.arg(flag);
- }
- }
- // Also expose WINEPREFIX if set in env vars
- for (key, value) in envs {
- if *key == "WINEPREFIX" || *key == "STEAM_COMPAT_DATA_PATH" {
- let path = std::path::Path::new(value.as_ref());
- if path.exists() || path.parent().map_or(false, |p| p.exists()) {
- let mut flag = std::ffi::OsString::from("--filesystem=");
- flag.push(value.as_ref());
- cmd.arg(flag);
- }
- }
- }
- cmd.arg("--");
- cmd.arg(exe);
- cmd
- } else {
- let mut cmd = Command::new(exe);
- for (key, value) in envs {
- cmd.env(key, value.as_ref());
- }
- cmd
- }
-}
-
-/// Build a command with no extra environment variables.
-pub fn command_for(exe: impl AsRef<OsStr>) -> Command {
- build_command::<&str>(exe, &[])
-}