about summary refs log tree commit diff
path: root/nixpkgs/pkgs/by-name/ro/roslyn-ls/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/by-name/ro/roslyn-ls/package.nix')
-rw-r--r--nixpkgs/pkgs/by-name/ro/roslyn-ls/package.nix76
1 files changed, 76 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/ro/roslyn-ls/package.nix b/nixpkgs/pkgs/by-name/ro/roslyn-ls/package.nix
new file mode 100644
index 000000000000..b1afb62cd1ce
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ro/roslyn-ls/package.nix
@@ -0,0 +1,76 @@
+{ lib, fetchFromGitHub, buildDotnetModule, dotnetCorePackages, stdenvNoCC, testers, roslyn-ls }:
+let
+  pname = "roslyn-ls";
+  # see https://github.com/dotnet/roslyn/blob/main/eng/targets/TargetFrameworks.props
+  dotnet-sdk = with dotnetCorePackages; combinePackages [ sdk_7_0 sdk_8_0 ];
+  # need sdk on runtime as well
+  dotnet-runtime = dotnetCorePackages.sdk_8_0;
+
+  project = "Microsoft.CodeAnalysis.LanguageServer";
+in
+buildDotnetModule rec {
+  inherit pname dotnet-sdk dotnet-runtime;
+
+  vsVersion = "2.17.7";
+  src = fetchFromGitHub {
+    owner = "dotnet";
+    repo = "roslyn";
+    rev = "VSCode-CSharp-${vsVersion}";
+    hash = "sha256-afsYOMoM4I/CdP6IwThJpGl9M2xx/eDeuOj9CTk2fFI=";
+  };
+
+  # versioned independently from vscode-csharp
+  # "roslyn" in here:
+  # https://github.com/dotnet/vscode-csharp/blob/main/package.json
+  version = "4.10.0-2.24102.11";
+  projectFile = "src/Features/LanguageServer/${project}/${project}.csproj";
+  useDotnetFromEnv = true;
+  nugetDeps = ./deps.nix;
+
+  postPatch = ''
+    substituteInPlace $projectFile \
+      --replace-fail \
+        '<RuntimeIdentifiers>win-x64;win-x86;win-arm64;linux-x64;linux-arm64;alpine-x64;alpine-arm64;osx-x64;osx-arm64</RuntimeIdentifiers>' \
+        '<RuntimeIdentifiers>linux-x64;linux-arm64;osx-x64;osx-arm64</RuntimeIdentifiers>'
+  '';
+
+  # two problems solved here:
+  # 1. --no-build removed -> BuildHost project within roslyn is running Build target during publish
+  # 2. missing crossgen2 7.* in local nuget directory when PublishReadyToRun=true
+  # the latter should be fixable here but unsure how
+  installPhase =
+    let
+      rid = dotnetCorePackages.systemToDotnetRid stdenvNoCC.targetPlatform.system;
+    in
+    ''
+      runHook preInstall
+
+      env dotnet publish $projectFile \
+          -p:ContinuousIntegrationBuild=true \
+          -p:Deterministic=true \
+          -p:InformationalVersion=$version \
+          -p:UseAppHost=true \
+          -p:PublishTrimmed=false \
+          -p:PublishReadyToRun=false \
+          --configuration Release \
+          --no-self-contained \
+          --output "$out/lib/$pname" \
+          --runtime ${rid}
+
+      runHook postInstall
+    '';
+
+  passthru = {
+    tests.version = testers.testVersion { package = roslyn-ls; };
+    updateScript = ./update.sh;
+  };
+
+  meta = {
+    homepage = "https://github.com/dotnet/vscode-csharp";
+    description = "The language server behind C# Dev Kit for Visual Studio Code";
+    changelog = "https://github.com/dotnet/vscode-csharp/releases/tag/v${vsVersion}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ konradmalik ];
+    mainProgram = "Microsoft.CodeAnalysis.LanguageServer";
+  };
+}