summaryrefslogtreecommitdiffstats
path: root/pkgs/games/factorio
diff options
context:
space:
mode:
authorLuke Granger-Brown <git@lukegb.com>2022-12-11 21:17:05 +0000
committerGitHub <noreply@github.com>2022-12-11 21:17:05 +0000
commit36c0938cc5525dd6e2a84bc9b7751f8908b7472e (patch)
tree8d9e21b37c72ce2e353a6c1c5e2e39d0a950428f /pkgs/games/factorio
parent823d4b7e8cae198ed3cbbb52a00fe9e7eaef27e6 (diff)
parent5faeb3ba2db1f599ab55d48dddf4f1ff54eaa47f (diff)
Merge pull request #198835 from YellowOnion/factorio-patch
factorio: better mod support
Diffstat (limited to 'pkgs/games/factorio')
-rw-r--r--pkgs/games/factorio/default.nix6
-rw-r--r--pkgs/games/factorio/utils.nix6
2 files changed, 8 insertions, 4 deletions
diff --git a/pkgs/games/factorio/default.nix b/pkgs/games/factorio/default.nix
index 17f9947b4982..a65ce6bac0db 100644
--- a/pkgs/games/factorio/default.nix
+++ b/pkgs/games/factorio/default.nix
@@ -3,6 +3,8 @@
, libSM, libICE, libXext, factorio-utils
, releaseType
, mods ? []
+, mods-dat ? null
+, versionsJson ? ./versions.json
, username ? "", token ? "" # get/reset token at https://factorio.com/profile
, experimental ? false # true means to always use the latest branch
}:
@@ -60,7 +62,7 @@ let
# NB `experimental` directs us to take the latest build, regardless of its branch;
# hence the (stable, experimental) pairs may sometimes refer to the same distributable.
- versions = importJSON ./versions.json;
+ versions = importJSON versionsJson;
binDists = makeBinDists versions;
actual = binDists.${stdenv.hostPlatform.system}.${releaseType}.${branch} or (throw "Factorio ${releaseType}-${branch} binaries for ${stdenv.hostPlatform.system} are not available for download.");
@@ -129,7 +131,7 @@ let
fi
'';
- modDir = factorio-utils.mkModDirDrv mods;
+ modDir = factorio-utils.mkModDirDrv mods mods-dat;
base = with actual; {
pname = "factorio-${releaseType}";
diff --git a/pkgs/games/factorio/utils.nix b/pkgs/games/factorio/utils.nix
index be5b7fd5eccc..d2b52ae48366 100644
--- a/pkgs/games/factorio/utils.nix
+++ b/pkgs/games/factorio/utils.nix
@@ -3,7 +3,7 @@
{ lib, stdenv }:
with lib;
{
- mkModDirDrv = mods: # a list of mod derivations
+ mkModDirDrv = mods: modsDatFile: # a list of mod derivations
let
recursiveDeps = modDrv: [modDrv] ++ map recursiveDeps modDrv.deps;
modDrvs = unique (flatten (map recursiveDeps mods));
@@ -18,7 +18,9 @@ with lib;
# NB: there will only ever be a single zip file in each mod derivation's output dir
ln -s $modDrv/*.zip $out
done
- '';
+ '' + (lib.optionalString (modsDatFile != null) ''
+ cp ${modsDatFile} $out/mod-settings.dat
+ '');
};
modDrv = { allRecommendedMods, allOptionalMods }: