diff options
Diffstat (limited to 'srcds-pkgs/mkdepot.nix')
-rw-r--r-- | srcds-pkgs/mkdepot.nix | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/srcds-pkgs/mkdepot.nix b/srcds-pkgs/mkdepot.nix new file mode 100644 index 0000000..8c1acaa --- /dev/null +++ b/srcds-pkgs/mkdepot.nix @@ -0,0 +1,19 @@ +{ lib, runCommand, fetchDepotFile }: +name: caches: ps: +with lib; +let + emitStep = { FileName, Flags, Chunks, ... }@file: + if bitAnd Flags 64 != 0 || Chunks == [] then '' + mkdir -p $out/'${FileName}' + '' else let drv = fetchDepotFile file; in '' + mkdir -p $out/'${drv.passthru.dirname}' + ln -s '${drv}' $out/'${FileName}' + ''; + emitManifest = cache: with cache.passthru; let + json = "${cache}/.DepotDownloader/${toString depot}_${manifest}.json"; + mkStep = file: emitStep (file // { inherit cache; }); + in concatMapStrings mkStep (importJSON json).Files; +in runCommand name {} '' + ${concatMapStringsSep "\n" emitManifest caches} + ${ps} +'' |