Packages
Multi-surface application runtime for Elixir. One TEA module renders to terminal, browser (LiveView), SSH, and MCP (agents). 30+ widgets, flexbox + CSS grid, AI agent runtime, distributed swarm with CRDTs, time-travel debugging, session recording, sandboxed REPL, and agentic commerce.
Current section
Files
Jump to
Current section
Files
lib/termbox2_nif/mix.exs
defmodule Termbox2Nif.MixProject do
use Mix.Project
def project do
base_config = [
app: :termbox2_nif,
version: "0.3.1",
elixir: "~> 1.0",
description: "Termbox2 NIF for Elixir (Unix platforms only)",
package: package(),
deps: deps()
]
# Only compile NIF on Unix systems
# Windows will use pure Elixir driver in Raxol.Terminal.Driver
case :os.type() do
{:unix, _} ->
Keyword.merge(base_config, compile_nif_config())
{:win32, _} ->
Mix.shell().info("""
[termbox2_nif] Skipping NIF compilation on Windows.
Raxol will use pure Elixir terminal driver instead.
""")
base_config
end
end
defp compile_nif_config do
[
compilers: [:elixir_make] ++ Mix.compilers(),
make_clean: ["clean"],
make_cwd: "c_src",
make_env: %{
"ERL_EI_INCLUDE_DIR" => "#{:code.root_dir()}/usr/include",
"ERL_EI_LIBDIR" => "#{:code.root_dir()}/usr/lib",
"MIX_ENV" => "#{Mix.env()}"
}
]
end
def application do
[extra_applications: []]
end
defp deps do
case :os.type() do
{:unix, _} ->
[{:elixir_make, "~> 0.7", runtime: false}]
{:win32, _} ->
# No elixir_make dependency on Windows
[]
end
end
defp package do
[
name: :termbox2_nif,
files: [
"lib",
"c_src",
"mix.exs",
"c_src/Makefile*",
"README.md",
"LICENSE"
],
maintainers: ["hydepwns"],
licenses: ["MIT"],
links: %{"GitHub" => "https://github.com/hydepwns/termbox2_nif"}
]
end
end