---
name: "lx"
section: "1"
platform: "linux"
package: "lux-cli"
version: "0.52.2-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/lx"
---

# lx(1)

A luxurious package manager for Lua

## NAME

lux-cli - A luxurious package manager for Lua

## SYNOPSIS

**lux-cli** \[**--dev**\] \[**--server**\] \[**--extra-servers**\] \[**--namespace**\] \[**--lua-dir**\] \[**--lua-version**\] \[**--tree**\] \[**--cache-dir**\] \[**--no-manifest-cache**\] \[**--data-dir**\] \[**--vendor-dir**\] \[**--variables**\] \[**--profile**\] \[**--verbose**\] \[**--no-progress**\] \[**--no-prompt**\] \[**--preset**\] \[**--nvim**\] \[**--no-tfa**\] \[**--allow-root**\] \[**--timeout**\] \[**--max-jobs**\] \[**--no-luarc**\] \[**--no-wrap-bin**\] \[**--user-agent**\] \[**-h**\|**--help**\] \[**-V**\|**--version**\] \<*subcommands*\>

## DESCRIPTION

A luxurious package manager for Lua

## OPTIONS

- **--dev**

  Enable the sub-repositories in luarocks servers for rockspecs of in-development versions

- **--server** *\<server\>*

  Fetch rocks/rockspecs from this server (takes priority over config file)

- **--extra-servers** *\<extra-server\>*

  Fetch rocks/rockspecs from these servers in addition to the main server{n} (overrides any entries in the config file)

- **--namespace** *\<namespace\>*

  Specify the luarocks server namespace to use

- **--lua-dir** *\<prefix\>*

  Specify the directory in which to install Lua if not found

- **--lua-version** *\<ver\>*

  Which Lua installation to use.{n} Valid versions are: '5.1', '5.2', '5.3', '5.4', '5.5', 'jit' and 'jit52'.{n} If not set, Lux will attempt to detect the Lua version:{n} - From the current project, if it has an exact Lua version requirement.{n} - From the Lua installation that is available on the PATH

- **--tree** *\<tree\>*

  Which tree to operate on.{n} In a workspace, this can be used to specify a detached workspace tree

- **--cache-dir** *\<cache-dir\>*

  Specifies the cache directory, e.g. for luarocks manifests

- **--no-manifest-cache**

  Disable the precomputed manifest cache

- **--data-dir** *\<data-dir\>*

  Specifies the data directory,{n} in which the default user install tree resides{n} (e.g. ~/.local/share/lux)

- **--vendor-dir** *\<vendor-dir\>*

  Specifies a directory with locally vendored sources and RockSpecs.{n} When building or installing a package with this flag,{n} Lux will fetch sources from the \<vendor-dir\> instead of from a remote server

- **--variables** *\<variable\>*

  Override config variables.{n} Example: \`lx -v "LUA=/path/to/lua" ...\`

- **--profile** *\<profile\>*

  The build profile to use when compiling packages.{n} Default: \`release\`\

  *Possible values:*

  - •

    release

  - •

    dev

- **--verbose**

  Display verbose output of commands executed, enabling DEBUG logs.{n} To enable TRACE logs, set RUST\_LOG=trace

- **--no-progress**

  Don't print any progress bars or spinners

- **--no-prompt** *\<NO\_PROMPT\>*

  Skip prompts, selecting the default option.{n} Prompting is enabled by default in terminal/TTY environments\

  *Possible values:*

  - •

    true

  - •

    false

- **--preset** *\<preset\>*

  Configure Lux for a specific environment.{n} Valid presets are: 'nvim', 'rojo'\

  *Possible values:*

  - •

    nvim: Configure Lux for \[Neovim\](https://neovim.io/) plugins

  - •

    rojo: Configure Lux for \[Rojo\](https://rojo.space/)

- **--nvim**

  \[DEPRECATED\] Configure lux for installing Neovim packages.{n} Use \`--preset nvim\` instead

- **--no-tfa**

  Disable prompts for two-factor authentication (2FA) codes.{n} It is strongly recommended to enable 2FA instead see (https://luarocks.org/settings/two-factor-auth)

- **--allow-root**

  Allow Lux to run as root (linux) or Administrator (windows)

- **--timeout** *\<seconds\>*

  Timeout on network operations, in seconds.{n} 0 means no timeout (wait forever). Default is 30

- **--max-jobs** *\<MAX\_JOBS\>*

  Maximum buffer size for parallel jobs, such as downloading rockspecs and installing rocks. 0 means no limit. Default is 0

- **--no-luarc**

  Do not generate or update a \`.luarc.json\` file when building{n} a project

- **--no-wrap-bin**

  Do not wrap Lua \`bin\` scripts

- **--user-agent** *\<USER\_AGENT\>*

  The user agent to set when making web requests. Default is "lux/\<version\>"

- **-h**, **--help**

  Print help (see a summary with '-h')

- **-V**, **--version**

  Print version

## SUBCOMMANDS

- lux-cli-add(1)

  Add a dependency to the current project

- lux-cli-build(1)

  Build/compile a project

- lux-cli-check(1)

  \[EXPERIMENTAL\]{n} Type check the current project based on EmmyLua/LuaCATS annotations.{n} Respects \`.emmyrc.json\` and \`.luarc.json\` files in the project directory

- lux-cli-config(1)

  Interact with the lux configuration

- lux-cli-debug(1)

  Internal commands for debugging Lux itself

- lux-cli-dist(1)

  Distribute a Lux project

- lux-cli-doc(1)

  Show documentation for an installed rock

- lux-cli-download(1)

  Download a specific rock file from a luarocks server

- lux-cli-fmt(1)

  Formats the codebase with stylua

- lux-cli-generate-rockspec(1)

  Generate a rockspec file from a project

- lux-cli-generate-lockfile(1)

  Generate a lockfile for the current project without installing its dependencies

- lux-cli-info(1)

  Show metadata for any rock

- lux-cli-install(1)

  Install a rock for use on the system

- lux-cli-install-rockspec(1)

  Install a local rockspec for use on the system

- lux-cli-install-lua(1)

  Manually install and manage Lua headers for various Lua versions

- lux-cli-lint(1)

  Lint the current project using \`luacheck\`

- lux-cli-list(1)

  List currently installed rocks

- lux-cli-lua(1)

  Run lua, with the \`LUA\_PATH\` and \`LUA\_CPATH\` set to the specified lux tree

- lux-cli-new(1)

  Create a new Lua project

- lux-cli-outdated(1)

  List outdated rocks

- lux-cli-pack(1)

  Create a packed rock for distribution, packing sources or binaries

- lux-cli-path(1)

  Return the currently configured package path

- lux-cli-pin(1)

  Pin an existing rock, preventing any updates to the package

- lux-cli-purge(1)

  Remove all installed rocks from a tree

- lux-cli-remove(1)

  Remove a rock from the current project's lux.toml dependencies

- lux-cli-run(1)

  Run the current project with the provided arguments

- lux-cli-exec(1)

  Execute a command that has been installed with lux. If the command is not found, a package named after the command will be installed

- lux-cli-search(1)

  Query the luarocks servers

- lux-cli-test(1)

  Run the test suite in the current project directory.{n} Lux supports the following test backends, specified by the \`\[test\]\` table in the lux.toml:{n} {n} - busted:{n} {n} https://lunarmodules.github.io/busted/{n} {n} Example:{n} {n} \`\`\`toml{n} \[test\]{n} type = "busted"{n} flags = \[ \] # Optional CLI flags to pass to busted{n} \`\`\`{n} {n} \`lx test\` will default to using \`busted\` if no test backend is specified and:{n} \* there is a \`.busted\` file in the project root{n} \* or \`busted\` is one of the \`test\_dependencies\`).{n} {n} - busted-nlua:{n}: {n} A build backend for running busted tests with Neovim as the Lua interpreter. Used for testing Neovim plugins. {n} Example:{n} {n} \`\`\`toml{n} \[test\]{n} type = "busted-nlua"{n} flags = \[ \] # Optional CLI flags to pass to busted{n} \`\`\`{n} {n} \`lx test\` will default to using \`busted-nlua\` if no test backend is specified and:{n} \* there is a \`.busted\` file in the project root{n} \* or \`busted\` and \`nlua\` are \`test\_dependencies\`.{n} {n} - command:{n} {n} Name/file name of a shell command that will run the test suite.{n} Example:{n} {n} \`\`\`toml{n} \[test\]{n} type = "command"{n} command = "make"{n} flags = \[ "test" \]{n} \`\`\`{n} {n} - script:{n} {n} Relative path to a Lua script that will run the test suite.{n} Example:{n} {n} \`\`\`toml{n} \[test\]{n} type = "script"{n} script = "tests.lua" # Expects a tests.lua file in the project root{n} flags = \[ \] # Optional arguments passed to the test script{n} \`\`\`{n}

- lux-cli-uninstall(1)

  Uninstall a rock from the system

- lux-cli-unpin(1)

  Unpins an existing rock, allowing updates to alter the package

- lux-cli-update(1)

  Updates all rocks in a project

- lux-cli-upload(1)

  Generate a Lua rockspec for a Lux project and upload it to the public luarocks repository.{n} You can specify a source template for release and dev packages in the lux.toml.{n} {n} Example:{n} {n} \`\`\`toml{n} \[source\]{n} url = "https://host.com/owner/$(PACKAGE)/refs/tags/$(REF).zip"{n} dev = "git+https://host.com/owner/$(PACKAGE).git"{n} \`\`\`{n} {n} You can use the following variables in the source template:{n} {n} - $(PACKAGE): The package name.{n} - $(VERSION): The package version.{n} - $(REF): The git tag or revision (if in a git repository).{n} - You may also specify environment variables with \`$(\<VAR\_NAME\>)\`.{n} {n} If the \`version\` is not set in the lux.toml, lux will search the current commit for SemVer tags and if found, will use it to generate the package version

- lux-cli-util(1)

  Infrequently used commands such as for generating shell completions and man pages

- lux-cli-vendor(1)

  Vendor the dependencies of a project or RockSpec locally. When building or installing a package with the \`--vendor-dir\` option{n} or the \`\[vendor\_dir\]\` config option, Lux will fetch sources from the \<vendor-dir\>{n} instead of from a remote server

- lux-cli-which(1)

  Tell which file corresponds to a given module name

- lux-cli-shell(1)

  Spawns an interactive shell with PATH, LUA\_PATH, LUA\_CPATH and LUA\_INIT set

- lux-cli-sync(1)

  Synchronize the project tree with the current lux.toml,{n} ensuring all packages are installed correctly

- lux-cli-help(1)

  Print this message or the help of the given subcommand(s)

## VERSION

v0.52.2

## AUTHORS

vhyrro \<vhyrro@gmail.com\>, mrcjkb \<marc@jakobi.dev\>
