{ lua , lib , fennel , stdenv }: name : packages : source : let luapath = builtins.map (f: "${f}/share/lua/${lua.luaversion}/?.lua;" + "${f}/share/lua/${lua.luaversion}/?/init.lua;") packages; luacpath = builtins.map (f: "${f}/lib/lua/${lua.luaversion}/?.so;") packages; in stdenv.mkDerivation { inherit name; src = ./.; nativeBuildInputs = [ fennel ]; buildPhase = '' ( echo "#!${lua}/bin/lua" echo "package.path = ${lib.strings.escapeShellArg (builtins.concatStringsSep "" luapath)} .. package.path" echo "package.cpath = ${lib.strings.escapeShellArg (builtins.concatStringsSep "" luacpath)} .. package.cpath" fennel --correlate --compile ${source} ) > ${name}.lua ''; installPhase = '' cp ${name}.lua $out chmod +x $out ''; }