Crates.io | lux-lib |
lib.rs | lux-lib |
version | 0.10.0 |
source | src |
created_at | 2025-02-18 21:27:16.961657+00 |
updated_at | 2025-06-17 10:36:16.414728+00 |
description | Library for the lux package manager for Lua |
homepage | https://nvim-neorocks.github.io |
repository | https://github.com/nvim-neorocks/lux |
max_upload_size | |
id | 1560479 |
size | 979,255 |
Key Features • How To Use • Comparison with Luarocks • Related Projects • Contributing
lux.toml
file.lx fmt
lx check
luacheck
.extra.rockspec
file, everything just works.luarocks
if it knows it has
to preserve maximum compatibility.[!WARNING]
Lux, while generally functional, is a work in progress and does not have a
1.0
release yet.
Feel free to consult the documentation on how to get started with Lux!
It features a tutorial and several guides to make you good at managing Lua projects.
luarocks
As this project is still a work in progress, some luarocks features have not been (fully) implemented yet. On the other hand, lux has some features that are not present in luarocks.
The following table provides a brief comparison:
lux | luarocks v3.11.1 | |
---|---|---|
project format | TOML / Lua | Lua |
add/remove dependencies | :white_check_mark: | :x: |
parallel builds/installs | :white_check_mark: | :x: |
proper lockfile support with integrity checks | :white_check_mark: | :x: (basic, dependency versions only) |
run tests with busted | :white_check_mark: | :white_check_mark: |
linting with luacheck | :white_check_mark: | :x: |
code formatting with stylua | :white_check_mark: | :x: |
automatic lua detection/installation | :white_check_mark: | :x: |
default build specs | :white_check_mark: | :white_check_mark: |
custom build backends | :white_check_mark:1 | :white_check_mark: |
rust-mlua build spec |
:white_check_mark: (builtin) | :white_check_mark: (external build backend) |
treesitter-parser build spec |
:white_check_mark: (builtin) | :white_check_mark: (external build backend) |
install pre-built binary rocks | :white_check_mark: | :white_check_mark: |
install multiple packages with a single command | :white_check_mark: | :x: |
install packages using version constraints | :white_check_mark: | :x: |
auto-detect external dependencies and Lua headers with pkg-config |
:white_check_mark: | :x: |
resolve multiple versions of the same dependency at runtime | :white_check_mark: | :white_check_mark: |
pack and upload pre-built binary rocks | :white_check_mark: | :white_check_mark: |
luarocks.org manifest namespaces | :white_check_mark: | :white_check_mark: |
luarocks.org dev packages | :white_check_mark: | :white_check_mark: |
versioning | SemVer2 | arbitrary |
rockspecs with CVS/Mercurial/SVN/SSCM sources | :x: (YAGNI3) | :white_check_mark: |
static type checking | :x: (planned) | :x: |
git dependencies in local projects | :white_check_mark: | :x: |
Lux includes the following packages and libraries:
lux-cli
: The main CLI for interacting with projects and installing Lua packages
from the command line.
lux-lua
: The Lux Lua API, which provides:
lux.loader
for resolving dependencies on require
at runtime.lux-lua
for Lua 5.1, 5.2, 5.3, 5.4 and Luajit.
lux-cli
uses lux-lua
for commands like lx lua
, lx run
and lx path
.lux-lib
: The Lux library for Rust. A dependency of lux-cli
and lux-lua
.
[!NOTE]
We do not yet provide a way to install
lux-lua
as a Lua library using Lux. See #663. Lux can detect a lux-lua installation using pkg-config or via theLUX_LIB_DIR
environment variable.
Dependencies:
openssl
libgit2
gnupg
, libgpg-error
and gpgme
(*nix only)lua
(optional, if building without the vendored-lua
feature)We recommend building with the vendored-lua
feature enabled:
cargo build --features vendored-lua
You can build lux-lua
for a given Lua version with:
cargo xtask51 dist-lua # lux-lua for Lua 5.1
cargo xtask52 dist-lua # for Lua 5.2
cargo xtask53 dist-lua # ...
cargo xtask54 dist-lua
cargo xtaskjit dist-lua
This will install lux-lua
to target/dist/<lua>/lux.so
and a pkg-config .pc
file to target/dist/lib/lux-lua*.pc
.
If you would like to use the latest version of lux with Nix, you can import our flake. It provides an overlay and packages for:
lux-cli
: The Lux CLI package.lux-lua51
The Lux Lua API for Lua 5.1lux-lua52
The Lux Lua API for Lua 5.2lux-lua53
The Lux Lua API for Lua 5.3lux-lua54
The Lux Lua API for Lua 5.4lux-luajit
The Lux Lua API for LuajitIf you have a lux-lua
build and pkg-config
in a Nix devShell,
Lux will auto-detect lux-lua
.
luarocks
under the hood, and will soon be undergoing a rewrite to use Lux instead.Credits go to the Luarocks team for maintaining luarocks and luarocks.org for as long as they have. Without their prior work Lux would not be possible.
Contributions are more than welcome! See CONTRIBUTING.md for a guide.
Supported via a compatibility layer that uses luarocks as a backend. ↩
Mostly compatible with the luarocks version parser, which allows an arbitrary number of version components. To comply with SemVer, we treat anything after the third version component (except for the specrev) as a prerelease/build version. ↩