about summary refs log tree commit diff
path: root/pkgs/games/build-support/monogame-patcher/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/build-support/monogame-patcher/default.nix')
-rw-r--r--pkgs/games/build-support/monogame-patcher/default.nix31
1 files changed, 31 insertions, 0 deletions
diff --git a/pkgs/games/build-support/monogame-patcher/default.nix b/pkgs/games/build-support/monogame-patcher/default.nix
new file mode 100644
index 00000000..fffa6825
--- /dev/null
+++ b/pkgs/games/build-support/monogame-patcher/default.nix
@@ -0,0 +1,31 @@
+{ lib, runCommand, makeWrapper, fetchNuGet, mono, dotnetPackages }:
+
+runCommand "monogame-patcher" {
+  nativeBuildInputs = [ mono makeWrapper ];
+
+  src = ./patcher.cs;
+
+  cecil = "${fetchNuGet {
+    baseName = "Mono.Cecil";
+    version = "0.10-beta7";
+    sha256 = "03bina3llcnylrfrvp5psnwrfn757j7zch5r360rpdn7gmcjjcpl";
+    outputFiles = [ "lib/net40/*" ];
+  }}/lib/dotnet/Mono.Cecil";
+
+  cliparser = "${fetchNuGet {
+    baseName = "CommandLineParser";
+    version = "2.2.1";
+    sha256 = "0wf8mzr16d2ni008m60rrk738v8ypk74llk6g8mlyx7rrlchnxaf";
+    outputFiles = [ "lib/net45/*" ];
+  }}/lib/dotnet/CommandLineParser";
+
+} ''
+  mkdir -p "$out/bin" "$out/libexec/monogame-patcher"
+  mcs "$src" -out:"$out/libexec/monogame-patcher/patcher.exe" \
+    -lib:"$cecil" -lib:"$cliparser" \
+    -r:Mono.Cecil -r:Mono.Cecil.Rocks -r:CommandLine
+
+  makeWrapper ${lib.escapeShellArg "${mono}/bin/mono"} "$out/bin/$name" \
+    --set MONO_PATH "$cecil:$cliparser" \
+    --add-flags "$out/libexec/monogame-patcher/patcher.exe"
+''