[workspace]
resolver = "1"
members = [
    "dyn-loader",
    "graphics/colors",
    "graphics/iv",
    "graphics/term",
    "lib/cross",
    "lib/cryptic",
    "lib/hclient",
    "lib/libcolors",
    "lib/libpsf",
    "lib/libterm",
    "lib/logsink",
    "lib/pixie",
    "lib/runtime",
    "lib/stuff",
    "lib/uipc",
    "lib/yasync",
    "netutils",
    "sysutils",
    "tools/crypt",
    "tools/init",
    "tools/md2txt",
    "tools/ntpc",
    "tools/rdb",
    "tools/red",
    "tools/rsh",
    "tools/shell",
    "tools/strace",
]
exclude = ["dynload-program", "test-kernel-module", "lib/ygglibc", "target"]

[workspace.dependencies]
log = "0.4.22"
clap = { version = "4.5.20", features = ["std", "derive", "help", "usage"], default-features = false }
clap-num = "1.1.1"
serde_json = "1.0.132"
serde = { version = "1.0.214", features = ["derive"] }
bitflags = "2.6.0"
bytemuck = "1.19.0"
thiserror = "1.0.64"
env_logger = "0.11.5"
chrono = { version = "0.4.31", default-features = false }
postcard = { version = "1.1.1", features = ["alloc"] }
tui = { version = "0.19.0", default-features = false }
toml = "0.8.20"
url = "2.5.0"
http = "1.1.0"

# Cryptography
rustls = { version = "0.23.29", default-features = false, features = ["std", "logging", "tls12", "custom-provider"] }
ed25519-dalek = "2.2.0"
x25519-dalek = "2.0.1"
curve25519-dalek = "4.1.3"
elliptic-curve = "0.13.8"
rsa = "0.9.8"
ecdsa = "0.16.9"
p256 = "0.13.2"
p384 = "0.13.1"
hmac = { version = "0.12.1" }
aes = { version = "0.8.4" }
der = { version = "0.7.10" }
chacha20poly1305 = { version = "0.10.1", default-features = false, features = ["alloc"] }
aes-gcm = { version = "0.10.1", default-features = false, features = ["alloc"] }
aead = { version = "0.5.2", default-features = false, features = ["alloc"] }
sha2 = { version = "0.10.9" }
crypto-common = "0.1.6"
webpki-roots = "1.0.1"

# Vendored/patched dependencies
rand = { git = "https://git.alnyan.me/yggdrasil/rand.git", branch = "alnyan/yggdrasil-rng_core-0.6.4" }
rand_core = { git = "https://git.alnyan.me/yggdrasil/rand.git", branch = "alnyan/yggdrasil-rng_core-0.6.4" }

# Internal crates
libterm.path = "lib/libterm"
runtime.path = "lib/runtime"
libcolors = { path = "lib/libcolors", default-features = false }
libpsf.path = "lib/libpsf"
cross.path = "lib/cross"
uipc.path = "lib/uipc"
yggdrasil-rt.path = "../lib/runtime"
yggdrasil-abi = { path = "../lib/abi", features = ["serde", "alloc", "bytemuck"] }
abi-serde = { path = "../lib/abi-serde" }
abi-lib = { path = "../lib/abi-lib" }
logsink.path = "lib/logsink"
libutil.path = "../lib/libutil"
cryptic.path = "lib/cryptic"
hclient.path = "lib/hclient"
pixie.path = "lib/pixie"
stuff.path = "lib/stuff"

[workspace.lints.rust]
unexpected_cfgs = { level = "allow", check-cfg = ['cfg(rust_analyzer)'] }

[patch.crates-io]
rand_core = { git = "https://git.alnyan.me/yggdrasil/rand.git", branch = "alnyan/yggdrasil-rng_core-0.6.4", package = "rand_core" }
rand = { git = "https://git.alnyan.me/yggdrasil/rand.git", branch = "alnyan/yggdrasil-rng_core-0.6.4" }
