about summary refs log tree commit diff
path: root/pkgs/development/tools/omnisharp-roslyn/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/omnisharp-roslyn/default.nix')
-rw-r--r--pkgs/development/tools/omnisharp-roslyn/default.nix107
1 files changed, 18 insertions, 89 deletions
diff --git a/pkgs/development/tools/omnisharp-roslyn/default.nix b/pkgs/development/tools/omnisharp-roslyn/default.nix
index a76e57ad4265b..7818273f80f3b 100644
--- a/pkgs/development/tools/omnisharp-roslyn/default.nix
+++ b/pkgs/development/tools/omnisharp-roslyn/default.nix
@@ -1,68 +1,9 @@
-{ lib, stdenv
-, fetchFromGitHub
-, fetchurl
-, dotnetCorePackages
-, makeWrapper
-, unzip
-, writeText
-}:
+{ lib, fetchFromGitHub, buildDotnetModule, dotnetCorePackages }:
 
 let
-
-  dotnet-sdk = dotnetCorePackages.sdk_6_0;
-
-  deps = map (package: stdenv.mkDerivation (with package; {
-    inherit pname version src;
-
-    buildInputs = [ unzip ];
-    unpackPhase = ''
-      unzip $src
-      chmod -R u+r .
-      function traverseRename () {
-        for e in *
-        do
-          t="$(echo "$e" | sed -e "s/%20/\ /g" -e "s/%2B/+/g")"
-          [ "$t" != "$e" ] && mv -vn "$e" "$t"
-          if [ -d "$t" ]
-          then
-            cd "$t"
-            traverseRename
-            cd ..
-          fi
-        done
-      }
-
-      traverseRename
-    '';
-
-    installPhase = ''
-      runHook preInstall
-
-      package=$out/lib/dotnet/${pname}/${version}
-      mkdir -p $package
-      cp -r . $package
-      echo "{}" > $package/.nupkg.metadata
-
-      runHook postInstall
-    '';
-
-    dontFixup = true;
-  }))
-    (import ./deps.nix { inherit fetchurl; });
-
-  nuget-config = writeText "NuGet.Config" ''
-    <?xml version="1.0" encoding="utf-8"?>
-    <configuration>
-      <packageSources>
-        <clear />
-      </packageSources>
-      <fallbackPackageFolders>
-        ${lib.concatStringsSep "\n" (map (package: "<add key=\"${package}\" value=\"${package}/lib/dotnet\"/>") deps)}
-      </fallbackPackageFolders>
-    </configuration>
-  '';
-
-in stdenv.mkDerivation rec {
+  sdkVersion = dotnetCorePackages.sdk_6_0.version;
+in
+buildDotnetModule rec {
   pname = "omnisharp-roslyn";
   version = "1.38.2";
 
@@ -73,45 +14,33 @@ in stdenv.mkDerivation rec {
     sha256 = "7XJIdotfffu8xo+S6xlc1zcK3oY9QIg1CJhCNJh5co0=";
   };
 
-  nativeBuildInputs = [ makeWrapper dotnet-sdk ];
+  projectFile = "src/OmniSharp.Stdio.Driver/OmniSharp.Stdio.Driver.csproj";
+  nugetDeps = ./deps.nix;
+
+  dotnetInstallFlags = [ "--framework net6.0" ];
 
   postPatch = ''
     # Relax the version requirement
     substituteInPlace global.json \
-      --replace '6.0.100' '${dotnet-sdk.version}'
+      --replace '6.0.100' '${sdkVersion}'
   '';
 
-  buildPhase = ''
-    runHook preBuild
-
-    HOME=$(pwd)/fake-home dotnet msbuild -r \
-      -p:Configuration=Release \
-      -p:RestoreConfigFile=${nuget-config} \
-      src/OmniSharp.Stdio.Driver/OmniSharp.Stdio.Driver.csproj
-
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    mkdir -p $out/bin
-    cp -r bin/Release/OmniSharp.Stdio.Driver/net6.0 $out/src
-
+  postFixup = ''
     # Delete files to mimick hacks in https://github.com/OmniSharp/omnisharp-roslyn/blob/bdc14ca/build.cake#L594
-    rm $out/src/NuGet.*.dll
-    rm $out/src/System.Configuration.ConfigurationManager.dll
-
-    makeWrapper $out/src/OmniSharp $out/bin/omnisharp \
-      --prefix DOTNET_ROOT : ${dotnet-sdk} \
-      --suffix PATH : ${dotnet-sdk}/bin
+    rm $out/lib/omnisharp-roslyn/NuGet.*.dll
+    rm $out/lib/omnisharp-roslyn/System.Configuration.ConfigurationManager.dll
   '';
 
   meta = with lib; {
     description = "OmniSharp based on roslyn workspaces";
     homepage = "https://github.com/OmniSharp/omnisharp-roslyn";
     platforms = platforms.unix;
+    sourceProvenance = with sourceTypes; [
+      fromSource
+      binaryNativeCode  # dependencies
+    ];
     license = licenses.mit;
-    maintainers = with maintainers; [ tesq0 ericdallo corngood ];
-    mainProgram = "omnisharp";
+    maintainers = with maintainers; [ tesq0 ericdallo corngood mdarocha ];
+    mainProgram = "OmniSharp";
   };
-
 }