diff --git a/hyprpm/src/core/PluginManager.cpp b/hyprpm/src/core/PluginManager.cpp
index 6621a49f..3d260e82 100644
--- a/hyprpm/src/core/PluginManager.cpp
+++ b/hyprpm/src/core/PluginManager.cpp
@@ -313,8 +313,21 @@ bool CPluginManager::addNewPluginRepo(const std::string& url, const std::string&
 
         progress.printMessageAbove(infoString("Building {}", p.name));
 
+
+        std::string ENV = std::format("PKG_CONFIG_PATH=\"{}\"", getPkgConfigPath());
+
+#if defined(HYPRPM_GENTOO_LUA_CFLAGS)
+            if (std::string_view{HYPRPM_GENTOO_LUA_CFLAGS}.size() > 0) {
+                ENV += std::format(
+                    " CFLAGS=\"{} $CFLAGS\" CXXFLAGS=\"{} $CXXFLAGS\"",
+                    HYPRPM_GENTOO_LUA_CFLAGS,
+                    HYPRPM_GENTOO_LUA_CFLAGS
+                );
+            }
+#endif
+
         for (auto const& bs : p.buildSteps) {
-            const auto CMD_RAW = nixDevelopIfNeeded(std::format("cd {} && PKG_CONFIG_PATH=\"{}\" {}", m_szWorkingPluginDirectory, getPkgConfigPath(), bs), HLVER);
+            const auto CMD_RAW = nixDevelopIfNeeded(std::format("cd {} && {} {}", m_szWorkingPluginDirectory, ENV, bs), HLVER);
 
             if (!CMD_RAW) {
                 progress.printMessageAbove(failureString("Failed to build {}: {}", p.name, CMD_RAW.error()));
@@ -559,10 +572,42 @@ bool CPluginManager::updateHeaders(bool force) {
     if (m_bVerbose)
         progress.printMessageAbove(verboseString("setting PREFIX for cmake to {}", DataState::getHeadersPath()));
 
+#if defined(HYPRPM_GENTOO_LUA_PCFILE)
+    const auto wrapperDir =
+        DataState::getHeadersPath() + "/gentoo-lua/pkgconfig";
+
+    auto wrapper_cmd = "mkdir -p " + wrapperDir;
+
+    if (m_bVerbose)
+        std::println("\n{} will run as sudo.", wrapper_cmd);
+
+    ret = NSys::root::runAsSuperuserUnsafe(wrapper_cmd);
+
+    if (m_bVerbose)
+        std::println("\n{}", ret);
+
+    const std::string target = HYPRPM_GENTOO_LUA_PCFILE;
+
+    wrapper_cmd = std::format("ln -svf {} {}/lua.pc", target, wrapperDir);
+
+    if (m_bVerbose)
+        std::println("\n{} will run as sudo.", wrapper_cmd);
+
+    ret = NSys::root::runAsSuperuserUnsafe(wrapper_cmd);
+
+    if (m_bVerbose)
+        std::println("\n{}", ret);
+
+    const auto CONFIGURE_CMD =
+        nixDevelopIfNeeded(std::format("cd {} && PKG_CONFIG_PATH=\"{}:$PKG_CONFIG_PATH\" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:STRING=\"{}\" -S . -B ./build", WORKINGDIR, wrapperDir,
+                                       DataState::getHeadersPath()),
+                           HLVER);
+#else
     const auto CONFIGURE_CMD =
         nixDevelopIfNeeded(std::format("cd {} && cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:STRING=\"{}\" -S . -B ./build", WORKINGDIR,
                                        DataState::getHeadersPath()),
                            HLVER);
+#endif
 
     if (!CONFIGURE_CMD) {
         std::println(stderr, "\n{}", failureString("Could not configure hyprland: {}", CONFIGURE_CMD.error()));
@@ -766,8 +811,19 @@ bool CPluginManager::updatePlugins(bool forceUpdateAll) {
 
             progress.printMessageAbove(infoString("Building {}", p.name));
 
+            std::string ENV = std::format("PKG_CONFIG_PATH=\"{}\"", getPkgConfigPath());
+
+#if defined(HYPRPM_GENTOO_LUA_CFLAGS)
+            if (std::string_view{HYPRPM_GENTOO_LUA_CFLAGS}.size() > 0) {
+                ENV += std::format(
+                    " CFLAGS=\"{} $CFLAGS\" CXXFLAGS=\"{} $CXXFLAGS\"",
+                    HYPRPM_GENTOO_LUA_CFLAGS,
+                    HYPRPM_GENTOO_LUA_CFLAGS
+                );
+            }
+#endif
             for (auto const& bs : p.buildSteps) {
-                const auto CMD_RAW = nixDevelopIfNeeded(std::format("cd {} && PKG_CONFIG_PATH=\"{}\" {}", m_szWorkingPluginDirectory, getPkgConfigPath(), bs), HLVER);
+                const auto CMD_RAW = nixDevelopIfNeeded(std::format("cd {} && {} {}", m_szWorkingPluginDirectory, ENV, bs), HLVER);
 
                 if (!CMD_RAW) {
                     progress.printMessageAbove(failureString("Failed to build {}: {}", p.name, CMD_RAW.error()));
@@ -1036,7 +1092,15 @@ bool CPluginManager::hasDeps() {
 }
 
 const std::string& CPluginManager::getPkgConfigPath() {
+#if defined(HYPRPM_GENTOO_LUA_PCFILE)
+    static const auto str = std::format(
+        "{}/gentoo-lua/pkgconfig:{}/share/pkgconfig:$PKG_CONFIG_PATH",
+        DataState::getHeadersPath(),
+        DataState::getHeadersPath()
+    );
+#else
     static const auto str = std::format("{}/share/pkgconfig:$PKG_CONFIG_PATH", DataState::getHeadersPath());
+#endif
     return str;
 }
 
