{pkgs, piston, ...}: let nugetPkg = pkgs.stdenv.mkDerivation { pname = "csharp-nuget-packages"; version = pkgs.dotnet-sdk.version; dontUnpack = true; dontBuild = true; dontConfigure = true; dontFixup = true; dontPatch = true; buildInputs = [ pkgs.dotnet-sdk ]; installPhase = '' mkdir $out cd $out export HOME=$PWD dotnet new console -o cache_application rm -rf cache_application ''; }; pkg = pkgs.dotnet-sdk; in piston.mkRuntime { language = "csharp"; version = pkg.version; runtime = "dotnet-sdk"; aliases = [ "csharp.net" "c#" "cs" "c#.net" "cs.net" "c#-dotnet" "cs-dotnet" "csharp-dotnet" "dotnet-c#" "dotnet-cs" "dotnet-csharp" ]; compile = '' export HOME=${nugetPkg} ${pkg}/dotnet build --help > /dev/null # Supress welcome message rename 's/$/\.cs/' "$@" # Add .cs extension ${pkg}/dotnet new console -o . --no-restore rm Program.cs ${pkg}/dotnet restore --source ${nugetPkg}/.nuget/packages ${pkg}/dotnet build --no-restore ''; run = '' export HOME=$PWD shift ${pkg}/dotnet bin/Debug/net6.0/$(basename $(realpath .)).dll "$@" ''; tests = [ (piston.mkTest { files = { "test.cs" = '' using System; public class Test { public static void Main(string[] args) { Console.WriteLine(args[0]); } } ''; }; args = ["OK"]; stdin = ""; packages = []; main = "test.cs"; }) ]; }