aboutsummaryrefslogtreecommitdiff
path: root/srcds-pkgs/depotdownloader-json/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'srcds-pkgs/depotdownloader-json/default.nix')
-rw-r--r--srcds-pkgs/depotdownloader-json/default.nix88
1 files changed, 78 insertions, 10 deletions
diff --git a/srcds-pkgs/depotdownloader-json/default.nix b/srcds-pkgs/depotdownloader-json/default.nix
index 0f6f4c4..a447aa3 100644
--- a/srcds-pkgs/depotdownloader-json/default.nix
+++ b/srcds-pkgs/depotdownloader-json/default.nix
@@ -1,19 +1,87 @@
-{ depotdownloader }:
-depotdownloader.overrideAttrs({ patches ? [], version, ... }: {
- patches = if builtins.elem version [ "2.4.7" "2.5.0"] then
- [
+{ depotdownloader, callPackage, fetchNuGet, ed }:
+depotdownloader.overrideAttrs (
+{ patches ? []
+, buildInputs
+, nativeBuildInputs ? []
+, passthru ? {}
+, version
+, ...
+}:
+let
+ # see 2.7.3 below
+ "SteamKit2" = callPackage (
+ { lib, buildDotnetModule
+ , fetchFromGitHub, fetchNuGet
+ , dotnetCorePackages
+ , ed }:
+ buildDotnetModule rec {
+ pname = "SteamKit2";
+ version = "3.0.0-Beta.4";
+ src = fetchFromGitHub {
+ owner = "SteamRE";
+ repo = "SteamKit";
+ rev = version;
+ hash = "sha256-m4ppH3pTCeqs0PrUTVDErqq94CK0XCTWIvTLy1Ll2Cs=";
+ };
+
+ projectFile = "SteamKit2/SteamKit2.sln";
+
+ nugetDeps = buildInputs;
+ nativeBuildInputs = [ ed ];
+ dotnet-sdk = dotnetCorePackages.sdk_8_0;
+ dotnet-runtime = dotnetCorePackages.runtime_8_0;
+
+ patches = [ ./2_7/0001-NO-NO-AND-NO.patch ];
+ postPatch = ''
+ # nuclear option because tests pull in extra deps
+ rm -rf SteamKit2/Tests
+ ed ${projectFile} <<EOF
+ /Tests/;/EndProject/d
+ w
+ EOF
+ '';
+
+ packNupkg = true;
+ }
+ ) {};
+ replacePkgInList = n: v: l: let
+ toAttrs = builtins.listToAttrs
+ (map (p: { name = p.pname; value = p; }) l);
+ in builtins.attrValues (toAttrs // {
+ ${n} = v;
+ });
+ replaceSK2 = replacePkgInList "SteamKit2" SteamKit2;
+in
+if builtins.elem version [ "2.4.7" "2.5.0" ] then
+ {
+ patches = [
# with this, nix has access to the hashes in the manifest
./2_5/0001-emit-json-in-.DepotDownload.patch
# the manifest can arrive out of order across requests to the same build!
# luckily that singular reproducibility snag is patched in 1 line.
./2_5/0002-ProtoManifest-sort-files-in-constructor.patch
- ]
- else if builtins.elem version [ "2.7.3" ] then
- [
+ ];
+ }
+# the underlying version of steamkit2 here is kinda busted for nix purposes
+# so we have to get up to some crimes against humanity
+else if builtins.elem version [ "2.7.3" ] then
+ {
+ patches = [
./2_7/0001-ProtoManifest-sort-files-in-constructor.patch
./2_7/0002-emit-json-in-.DepotDownload.patch
# formatting very the epic
./2_7/0003-thats-just-like-your-opinion-man.patch
- ]
- else builtins.abort "version of DepotDownloader not covered by patches";
-})
+ ];
+ nugetDeps = replaceSK2 passthru.nugetDeps;
+ buildInputs = replaceSK2 buildInputs;
+ nativeBuildInputs = nativeBuildInputs ++ [ ed ];
+ postPatch = ''
+ ed DepotDownloader/DepotDownloader.csproj <<EOF
+ /SteamKit2/s/-[Bb]eta.[0-9]*//
+ w
+ EOF
+ '';
+ }
+else builtins.abort "version of DepotDownloader not covered by patches"
+)
+