{ dotnetenv }: { name, src, baseDir ? ".", slnFile, targets ? "ReBuild", verbosity ? "detailed", options ? "/p:Configuration=Debug;Platform=Win32", assemblyInputs ? [ ], preBuild ? "", namespace, mainClassName, mainClassFile, modifyPublicMain ? true, }: let application = dotnetenv.buildSolution { inherit name src baseDir slnFile targets verbosity ; inherit options assemblyInputs preBuild; inherit modifyPublicMain mainClassFile; }; in dotnetenv.buildSolution { name = "${name}-wrapper"; src = ./Wrapper; slnFile = "Wrapper.sln"; assemblyInputs = [ application ]; preBuild = '' addRuntimeDeps() { if [ -f $1/nix-support/dotnet-assemblies ] then for i in $(cat $1/nix-support/dotnet-assemblies) do windowsPath=$(cygpath --windows $i | sed 's|\\|\\\\|g') assemblySearchArray="$assemblySearchArray @\"$windowsPath\"" addRuntimeDeps $i done fi } export exePath=$(cygpath --windows $(find ${application} -name \*.exe) | sed 's|\\|\\\\|g') # Generate assemblySearchPaths string array contents for path in ${toString assemblyInputs} do assemblySearchArray="$assemblySearchArray @\"$(cygpath --windows $path | sed 's|\\|\\\\|g')\", " addRuntimeDeps $path done sed -e "s|@ROOTNAMESPACE@|${namespace}Wrapper|" \ -e "s|@ASSEMBLYNAME@|${namespace}|" \ Wrapper/Wrapper.csproj.in > Wrapper/Wrapper.csproj sed -e "s|@NAMESPACE@|${namespace}|g" \ -e "s|@MAINCLASSNAME@|${mainClassName}|g" \ -e "s|@EXEPATH@|$exePath|g" \ -e "s|@ASSEMBLYSEARCHPATH@|$assemblySearchArray|" \ Wrapper/Wrapper.cs.in > Wrapper/Wrapper.cs ''; }