{ wezterm, makeWrapper, writeText, nixToLua, lib, }: { configDirectory ? "~/.config/wezterm", wrapConfig ? "WEZDEV", luaPath, extraWrapperArgs ? [], extraPATH ? [], pass ? {}, }: let inherit (nixToLua) toLua; passables = { inherit configDirectory wrapConfig luaPath; wezterm = builtins.toString wezterm; } // pass; wezinit = writeText "wezterm.lua" # lua '' package.preload["weznix"] = function() return ${toLua passables} end weznix = require('weznix') local cfgDir = weznix.luaPath if (weznix.wrapConfig == false) or (type(weznix.wrapConfig) == "string" and os.getenv(weznix.wrapConfig == 1) then cfgDir = weznix.configDirectory end require('wezterm').config_dir = cfgDir package.path = package.path .. ';' .. cfgDir .. '/?.lua' package.cpath = package.cpath .. ';' .. cfgDir .. '/?.so' return require('init') ''; wrapperArgs = [ # "--prefix" "PATH" ":" (lib.makeBinPath extraPATH) "--set" "WEZTERM_CONFIG_FILE" (toString wezinit) ] ++ extraWrapperArgs; in wezterm.overrideAttrs ({ postInstall ? "", nativeBuildInputs ? [], buildInputs ? [], ... }: { nativeBuildInputs = nativeBuildInputs ++ [ makeWrapper ]; buildInputs = buildInputs ++ extraPATH; postInstall = # bash '' ${postInstall} for bin in $out/bin/wezterm*; do wrapProgram "$bin" ${lib.escapeShellArgs wrapperArgs} done ''; })