summary refs log tree commit diff
path: root/pkgs/development/lua-modules/generic/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/lua-modules/generic/default.nix')
-rw-r--r--pkgs/development/lua-modules/generic/default.nix33
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
+      '';
     }
   )