{ wezterm, makeWrapper, symlinkJoin, 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 wezterm = require('wezterm') wezterm.config_dir = cfgDir -- package.path = package.path .. ';' .. cfgDir .. '/?.lua' package.path = cfgDir .. '/?.lua' package.cpath = package.cpath .. ';' .. cfgDir .. '/?.so' return require('init') ''; wrapperArgs = [ "--set" "WEZTERM_CONFIG_FILE" (toString wezinit) ] ++ lib.optionals (extraPATH != []) [ "--prefix" "PATH" ":" (lib.makeBinPath extraPATH) ] ++ extraWrapperArgs; in (symlinkJoin { name = "wezterm"; nativeBuildInputs = [ makeWrapper ]; paths = [ wezterm ]; postBuild = # bash '' for bin in $out/bin/wezterm*; do wrapProgram "$bin" ${lib.escapeShellArgs wrapperArgs} done ''; }) // { inherit (wezterm) version name passthru meta; } # 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 # ''; # })