[package]
edition = "2024"
rust-version = "1.89"
name = "nixvm"
version = "0.0.0"
authors = ["Mark Karpeles <magicaltux@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A portable VM-style sandbox that runs a real Linux userland by emulating Linux syscalls directly (no guest kernel, no device emulation)."
readme = "README.md"
license = "Apache-2.0 OR MIT"
repository = "https://github.com/KarpelesLab/nixvm"
[features]
cli = []
default = ["cli"]
fetch = ["dep:ureq"]
fstool = ["dep:fstool"]
hvf = []
interp = []
kvm = []
targz = ["dep:compcol"]
wasm = [
"dep:wasm-bindgen",
"dep:console_error_panic_hook",
"targz",
"fstool",
]
[lib]
name = "nixvm"
crate-type = [
"cdylib",
"rlib",
]
path = "src/lib.rs"
[[bin]]
name = "nixvm"
path = "src/bin/nixvm.rs"
required-features = ["cli"]
[[bin]]
name = "run-elf"
path = "src/bin/run-elf.rs"
[[bin]]
name = "run-elf-x86"
path = "src/bin/run-elf-x86.rs"
[[test]]
name = "aarch64_smoke"
path = "tests/aarch64_smoke.rs"
[[test]]
name = "alpine_boot"
path = "tests/alpine_boot.rs"
[[test]]
name = "compute_aarch64"
path = "tests/compute_aarch64.rs"
[[test]]
name = "hello_elf"
path = "tests/hello_elf.rs"
[[test]]
name = "hello_interp"
path = "tests/hello_interp.rs"
[[test]]
name = "identity"
path = "tests/identity.rs"
[[test]]
name = "mm_brk"
path = "tests/mm_brk.rs"
[[test]]
name = "mm_mmap"
path = "tests/mm_mmap.rs"
[[test]]
name = "proc_ipc"
path = "tests/proc_ipc.rs"
[[test]]
name = "sandbox_exec"
path = "tests/sandbox_exec.rs"
[[test]]
name = "smp_e2e"
path = "tests/smp_e2e.rs"
[[test]]
name = "x86_smoke"
path = "tests/x86_smoke.rs"
[dependencies.compcol]
version = "0.6"
features = [
"std",
"gzip",
]
optional = true
default-features = false
[dependencies.fstool]
version = "0.4.20"
features = ["gzip"]
optional = true
default-features = false
[dependencies.ureq]
version = "2"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.console_error_panic_hook]
version = "0.1"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen]
version = "0.2"
optional = true
[lints.clippy]
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_sign_loss = "allow"
doc_markdown = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
similar_names = "allow"
unreadable_literal = "allow"
verbose_bit_mask = "allow"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.rust]
missing_debug_implementations = "warn"
unsafe_op_in_unsafe_fn = "deny"
[profile.release]
lto = "thin"
codegen-units = 1
panic = "abort"