15 deps = map (package: stdenv.mkDerivation (with package; {
19 buildInputs = [ unzip ];
23 function traverseRename () {
26 t="$(echo "$e" | sed -e "s/%20/\ /g" -e "s/%2B/+/g")"
27 [ "$t" != "$e" ] && mv -vn "$e" "$t"
43 package=$out/lib/dotnet/${name}/${version}
46 echo "{}" > $package/.nupkg.metadata
53 (import ./deps.nix { inherit fetchurl; });
55 nuget-config = writeText "NuGet.Config" ''
56 <?xml version="1.0" encoding="utf-8"?>
64 packages = symlinkJoin { name = "roslyn-deps"; paths = deps; };
66 packageVersion = "3.10.0";
68 in stdenv.mkDerivation rec {
71 version = "${packageVersion}-1.21102.26";
73 src = fetchFromGitHub {
77 sha256 = "0yf4f4vpqn9lixr37lkp29m2mk51xcm3ysv2ag332xn6zm5zpm2b";
80 nativeBuildInputs = [ makeWrapper dotnet-sdk_5 unzip ];
86 install -m644 -D ${nuget-config} fake-home/.nuget/NuGet/NuGet.Config
87 ln -s ${packages}/lib/dotnet fake-home/.nuget/packages
88 HOME=$(pwd)/fake-home dotnet add \
89 src/NuGet/Microsoft.Net.Compilers.Toolset/Microsoft.Net.Compilers.Toolset.Package.csproj \
90 package -n -v 5.10.0-preview.2.7169 nuget.build.tasks.pack
91 HOME=$(pwd)/fake-home dotnet msbuild -r -v:m -t:pack \
92 -p:Configuration=Release \
93 -p:RepositoryUrl="${meta.homepage}" \
94 -p:RepositoryCommit="v${version}" \
95 src/NuGet/Microsoft.Net.Compilers.Toolset/Microsoft.Net.Compilers.Toolset.Package.csproj
101 pkg=$out/lib/dotnet/microsoft.net.compilers.toolset/${packageVersion}
102 mkdir -p $out/bin $pkg
103 unzip -q artifacts/packages/Release/Shipping/Microsoft.Net.Compilers.Toolset.${packageVersion}-dev.nupkg \
105 # nupkg has 0 permissions for a bunch of things
108 makeWrapper ${mono}/bin/mono $out/bin/csc \
109 --add-flags "$pkg/tasks/net472/csc.exe"
110 makeWrapper ${mono}/bin/mono $out/bin/vbs \
111 --add-flags "$pkg/tasks/net472/vbs.exe"
115 description = ".NET C# and Visual Basic compiler";
116 homepage = "https://github.com/dotnet/roslyn";
117 platforms = platforms.linux;
118 license = licenses.mit;
119 maintainers = with maintainers; [ corngood ];