diff options
Diffstat (limited to 'pkgs/development/lua-modules/generic/default.nix')
-rw-r--r-- | pkgs/development/lua-modules/generic/default.nix | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/pkgs/development/lua-modules/generic/default.nix b/pkgs/development/lua-modules/generic/default.nix index 7152d0b9e36..091ae06ab91 100644 --- a/pkgs/development/lua-modules/generic/default.nix +++ b/pkgs/development/lua-modules/generic/default.nix @@ -1,4 +1,4 @@ -lua: +{ lua, writeText }: { buildInputs ? [], disabled ? false, ... } @ attrs: @@ -19,5 +19,36 @@ else { name = "lua${lua.luaversion}-" + attrs.name; buildInputs = buildInputs ++ [ lua ]; + + setupHook = writeText "setup-hook.sh" '' + # check for lua/clua modules and don't add duplicates + + addLuaLibPath() { + local package_path="$1/share/lua/${lua.luaversion}" + if [[ ! -d $package_path ]]; then return; fi + if [[ $LUA_PATH = *"$package_path"* ]]; then return; fi + + if [[ -z $LUA_PATH ]]; then + export LUA_PATH="$package_path/?.lua" + else + export LUA_PATH="$LUA_PATH;$package_path/?.lua" + fi + } + + addLuaLibCPath() { + local package_cpath="$1/lib/lua/${lua.luaversion}" + if [[ ! -d $package_cpath ]]; then return; fi + if [[ $LUA_CPATH = *"$package_cpath"* ]]; then return; fi + + if [[ -z $LUA_CPATH ]]; then + export LUA_CPATH="$package_cpath/?.so" + else + export LUA_CPATH="$LUA_CPATH;$package_cpath/?.so" + fi + } + + addEnvHooks "$hostOffset" addLuaLibPath + addEnvHooks "$hostOffset" addLuaLibCPath + ''; } ) |