{"id":31270672,"url":"https://github.com/lumen-oss/lux","last_synced_at":"2026-05-27T23:01:30.027Z","repository":{"id":216635835,"uuid":"741839850","full_name":"lumen-oss/lux","owner":"lumen-oss","description":"A luxurious package manager for Lua","archived":false,"fork":false,"pushed_at":"2026-05-25T17:51:32.000Z","size":4397,"stargazers_count":955,"open_issues_count":104,"forks_count":23,"subscribers_count":11,"default_branch":"main","last_synced_at":"2026-05-25T19:31:05.063Z","etag":null,"topics":["luarocks","package-manager"],"latest_commit_sha":null,"homepage":"https://lux.lumen-labs.org/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lumen-oss.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"open_collective":"lumen-labs"}},"created_at":"2024-01-11T08:11:52.000Z","updated_at":"2026-05-25T17:48:55.000Z","dependencies_parsed_at":"2026-04-15T00:01:21.439Z","dependency_job_id":null,"html_url":"https://github.com/lumen-oss/lux","commit_stats":{"total_commits":275,"total_committers":7,"mean_commits":"39.285714285714285","dds":"0.38909090909090904","last_synced_commit":"d11209779b008188e915c93a8d7342b3def4a220"},"previous_names":["nvim-neorocks/rocks","nvim-neorocks/lux","lumen-oss/lux"],"tags_count":223,"template":false,"template_full_name":null,"purl":"pkg:github/lumen-oss/lux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumen-oss%2Flux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumen-oss%2Flux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumen-oss%2Flux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumen-oss%2Flux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lumen-oss","download_url":"https://codeload.github.com/lumen-oss/lux/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumen-oss%2Flux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33586821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["luarocks","package-manager"],"created_at":"2025-09-23T19:02:25.805Z","updated_at":"2026-05-27T23:01:30.021Z","avatar_url":"https://github.com/lumen-oss.png","language":"Rust","funding_links":["https://opencollective.com/lumen-labs"],"categories":["Rust"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://lux.lumen-labs.org/tutorial/getting-started\"\u003e\u003cimg src=\"./lux-logo.svg\" alt=\"Lux\" width=\"200\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n  \u003cspan\u003eLux\u003c/span\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eA luxurious package manager for \u003ca href=\"https://www.lua.org/\" target=\"_blank\"\u003eLua\u003c/a\u003e.\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"GitHub Actions Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/lumen-oss/lux/integration-tests.yml?style=for-the-badge\"\u003e\n  \u003cimg alt=\"GitHub Top Language\" src=\"https://img.shields.io/github/languages/top/lumen-oss/lux?style=for-the-badge\"\u003e\n  \u003cimg alt=\"GitHub License\" src=\"https://img.shields.io/github/license/lumen-oss/lux?style=for-the-badge\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#star2-key-features\"\u003eKey Features\u003c/a\u003e •\n  \u003ca href=\"#gear-how-to-use\"\u003eHow To Use\u003c/a\u003e •\n  \u003ca href=\"#bar_chart-comparison-with-luarocks\"\u003eComparison with LuaRocks\u003c/a\u003e •\n  \u003ca href=\"#bulb-you-may-also-like\"\u003eRelated Projects\u003c/a\u003e •\n  \u003ca href=\"#green_heart-contributing\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n## :star2: Key Features\n\n* Create and manage Lua projects\n  - Easily manage dependencies, build steps and more through the `lux.toml` file.\n* Parallel builds and installs :rocket:\n* Add/remove dependencies with simple CLI commands\n* Automatic generation of rockspecs\n  - Say goodbye to managing 10 different rockspec files in your source code :tada:\n* Integrated code formatting via `lx fmt`\n  - Powered by [`stylua`](https://github.com/JohnnyMorganz/StyLua),\n    [`emmylua_formatter`](https://github.com/EmmyLuaLs/emmylua-analyzer-rust/tree/main/crates/emmylua_formatter#emmylua-formatter),\n    or [`emmylua_codestyle`](https://github.com/CppCXY/EmmyLuaCodeStyle).\n* Easily specify compatible Lua versions\n  - Lux will take care of Lua header installation automatically\n  - Forget about users complaining they have the wrong Lua headers installed on their system\n* Automatic EmmyLua/LuaCATS based type checking via `lx check`\n  - Powered by [`emmylua-analyzer-rust`](https://github.com/EmmyLuaLs/emmylua-analyzer-rust)\n* Automatic code linting via `lx lint`\n  - Powered by [`luacheck`](https://github.com/lunarmodules/luacheck)\n* Powerful lockfile support\n  - Makes for fully reproducible developer environments.\n  - Makes Lux easy to integrate with Nix!\n* Fully compatible\n  - Works with existing LuaRocks packages.\n  - Have a complex rockspec that you don't want to rewrite to TOML? No problem!\n    Lux allows the creation of an `extra.rockspec` file, everything just works.\n  - Have a very complex build script? Lux can shell out to `luarocks` if it knows it has\n    to preserve maximum compatibility.\n* Automatically adds project dependencies to a [`.luarc.json`](https://luals.github.io/wiki/configuration/#luarcjson-file)\n  file so they can be picked up by [`lua-language-server`](https://luals.github.io/).\n\n\u003e [!WARNING]\n\u003e\n\u003e **Lux, while generally functional, is a work in progress\n\u003e and does not have a `1.0` release yet.**\n\n## :gear: How To Use\n\nFeel free to consult the [documentation](https://lux.lumen-labs.org/tutorial/getting-started) on how to get started with Lux!\n\nIt features a tutorial and several guides to make you good at managing Lua projects.\n\n## :bar_chart: Comparison with LuaRocks\n\nAs this project is still a work in progress, some LuaRocks features\nhave not been (fully) implemented yet.\nOn the other hand, Lux has some features that are not present in LuaRocks.\n\nThe following table provides a brief comparison:\n\n|                                                                                         | Lux                          | LuaRocks v3.13.0   |\n| ---                                                                                     | ---                          | ---                |\n| Project format                                                                          | TOML / Lua                   | Lua                |\n| Add/remove dependencies                                                                 | :white_check_mark:           | :x:                |\n| Parallel builds/installs                                                                | :white_check_mark:           | :x:                |\n| Proper lockfile support with integrity checks                                           | :white_check_mark:           | :x: (basic, dependency versions only) |\n| Run tests with busted                                                                   | :white_check_mark:           | :white_check_mark: |\n| Linting with luacheck                                                                   | :white_check_mark:           | :x:                |\n| Code formatting with stylua, luafmt, or emmylua_codestyle                               | :white_check_mark:           | :x:                |\n| Automatic lua detection/installation                                                    | :white_check_mark:           | :x:                |\n| Default build specs                                                                     | :white_check_mark:           | :white_check_mark: |\n| Custom build backends                                                                   | :white_check_mark:[^1]       | :white_check_mark: |\n| `rust-mlua` build spec                                                                  | :white_check_mark: (builtin) | :white_check_mark: (external build backend) |\n| `treesitter-parser` build spec                                                          | :white_check_mark: (builtin) | :white_check_mark: (external build backend) |\n| Install prebuilt binary rocks                                                           | :white_check_mark:           | :white_check_mark: |\n| Install multiple packages with a single command                                         | :white_check_mark:           | :x:                |\n| Install packages using version constraints                                              | :white_check_mark:           | :x:                |\n| Auto-detect external dependencies and Lua headers with `pkg-config`                     | :white_check_mark:           | :x:                |\n| Resolve multiple versions of the same dependency at runtime                             | :white_check_mark:           | :white_check_mark: |\n| Pack and upload prebuilt binary rocks                                                   | :white_check_mark:           | :white_check_mark: |\n| Luarocks.org manifest namespaces                                                        | :white_check_mark:           | :white_check_mark: |\n| Luarocks.org dev packages                                                               | :white_check_mark:           | :white_check_mark: |\n| Versioning                                                                              | SemVer[^2]                   | arbitrary          |\n| Rockspecs with CVS/Mercurial/SVN/SSCM sources                                           | :x: (YAGNI[^3])              | :white_check_mark: |\n| Load installed packages from multiple install trees                                     | :x: ([#1493](https://github.com/lumen-oss/lux/issues/1493)) | :white_check_mark: |\n| Static type checking                                                                    | :white_check_mark:           | :x:                |\n| Generate a `.luarc` file with dependencies                                              | :white_check_mark:           | :x:                |\n| Git dependencies in local projects                                                      | :white_check_mark:           | :x:                |\n| Local dependencies in local projects                                                    | :white_check_mark:           | :x:                |\n| Multiple projects in a single workspace                                                 | :white_check_mark:           | :x:                |\n| Vendor sources for offline use                                                          | :white_check_mark:           | :x:                |\n| Load RockSpecs and LuaRocks manifests with [full sandboxing](https://github.com/kyren/piccolo) | :white_check_mark:       | :x:                |\n\n[^1]: Supported via a compatibility layer that uses LuaRocks as a backend.\n[^2]: Mostly compatible with the LuaRocks version parser,\n      which allows an arbitrary number of version components.\n      To comply with SemVer, we treat anything after the third version component\n      (except for the specrev) as a prerelease/build version.\n[^3]: [You Aren't Gonna Need It.](https://martinfowler.com/bliki/Yagni.html)\n\n## :package: Packages\n\n\u003ca href=\"https://repology.org/project/lux-lua-package-manager/versions\"\u003e\n    \u003cimg src=\"https://repology.org/badge/vertical-allrepos/lux-lua-package-manager.svg?header=lux\u0026exclude_unsupported=1\" alt=\"lux packaging status\" align=\"right\"\u003e\n\u003c/a\u003e\n\nLux includes the following packages and libraries:\n\n- `lux-cli`: The main CLI for interacting with projects and installing Lua packages\n  from the command line.\n\n- `lux-lua`: The Lux Lua API, which provides:\n  - `lux.loader` for resolving dependencies on `require` at runtime.\n  - A work-in-progress API for embedding Lux into Lua applications.\n  We provide builds of `lux-lua` for Lua 5.1, 5.2, 5.3, 5.4, 5.5 and LuaJIT.\n  `lux-cli` uses `lux-lua` for commands like `lx lua`, `lx run` and `lx path`.\n\n- `lux-lib`: The Lux library for Rust. A dependency of `lux-cli` and `lux-lua`.\n\n\u003e [!NOTE]\n\u003e\n\u003e We do not yet provide a way to install `lux-lua` as a Lua library using Lux.\n\u003e See [#663](https://github.com/lumen-oss/lux/issues/663).\n\u003e Lux can detect a lux-lua installation using pkg-config\n\u003e or via the `LUX_LIB_DIR` environment variable.\n\u003e\n\u003e Our [prebuilt binary release artifacts](https://github.com/lumen-oss/lux/releases/latest)\n\u003e are bundled with `lux-lua`.\n\n## :wrench: Building from source\n\nDependencies:\n\n- `gnupg`, `libgpg-error` and `gpgme` (*nix only)\n\nIf building without the `vendored` feature:\n\n- `libgit2`\n- `openssl`\n\nIf building with the `vendored` feature:\n\n- `perl` and `perl-core`\n- `make`\n\nTo link `gpgme` statically on Linux and macOS, set the environment variable\n`SYSTEM_DEPS_LINK=static`.\n\nWe usually recommend building with the `vendored` feature enabled,\nto statically link `libgit2` and `openssl`:\n\n```bash\nSYSTEM_DEPS_LINK=\"static\" cargo build --locked --profile release --features vendored\n```\n\nOr, to build with dynamically linked libraries:\n\n```bash\ncargo build --locked --profile release\n```\n\nOn Windows/MSVC, you must disable the `gpgme` feature:\n\n```bash\ncargo build --locked --profile release --no-default-features --features vendored\n```\n\nYou can build `lux-lua` for a given Lua version with:\n\n```bash\ncargo xtask51 dist-lua # lux-lua for Lua 5.1\ncargo xtask52 dist-lua # for Lua 5.2\ncargo xtask53 dist-lua # ...\ncargo xtask54 dist-lua\ncargo xtask55 dist-lua\ncargo xtaskjit dist-lua\n```\n\nThis will install `lux-lua` to `target/dist/share/lux-lua/\u003clua\u003e/lux.so`\nand a pkg-config `.pc` file to `target/dist/lib/lux-lua*.pc`.\n\nTo build completions:\n\n```bash\ncargo xtask dist-completions\n```\n\nTo build man pages:\n\n```bash\ncargo xtask dist-man\n```\n\nTo build the binary distributions for your platform,\nbundled with completions, man pages and `lux-lua`:\n\n```bash\ncargo xtask dist-package\n```\n\n## :snowflake: Nix flake\n\nIf you would like to use the latest version of Lux with Nix,\nyou can import our flake.\nIt provides an overlay and packages for:\n\n- `lux-cli`: The Lux CLI package.\n- `lux-lua51` The Lux Lua API for Lua 5.1\n- `lux-lua52` The Lux Lua API for Lua 5.2\n- `lux-lua53` The Lux Lua API for Lua 5.3\n- `lux-lua54` The Lux Lua API for Lua 5.4\n- `lux-lua55` The Lux Lua API for Lua 5.5\n- `lux-luajit` The Lux Lua API for LuaJIT\n\nIf you have a `lux-lua` build and `pkg-config` in a Nix devShell,\nLux will auto-detect `lux-lua`.\n\n## :bulb: You may also like...\n\n- [LuaRocks](https://github.com/luarocks/luarocks) - The original Lua package manager\n- [rocks.nvim](https://github.com/lumen-oss/rocks.nvim) - A Neovim plugin manager that uses `luarocks` under the hood, and will soon be undergoing a rewrite to use Lux instead.\n\n## :purple_heart: Credits\n\nCredits go to the LuaRocks team for maintaining [LuaRocks](https://github.com/luarocks/luarocks) and [luarocks.org](https://luarocks.org) for as long as they have.\nWithout their prior work Lux would not be possible.\n\n## :green_heart: Contributing\n\nContributions are more than welcome!\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for a guide.\n\n## :book: License\n\n- Lux is licensed under [LGPL-3.0+](./LICENSE).\n- The Lux logo © 2025 by Kai Jakobi is licensed under [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flumen-oss%2Flux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flumen-oss%2Flux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flumen-oss%2Flux/lists"}