diff options
Diffstat (limited to 'srcds-pkgs/depotdownloader-json/default.nix')
-rw-r--r-- | srcds-pkgs/depotdownloader-json/default.nix | 88 |
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" +) + |