about summary refs log tree commit diff
path: root/pkgs/games/factorio
diff options
context:
space:
mode:
authorDaniel Hill <daniel@gluo.nz>2022-11-01 06:57:07 +1300
committerDaniel Hill <daniel@gluo.nz>2022-11-01 06:57:07 +1300
commitc6e6d44fe5f6c4ee4350ed330eb7996b57232ed8 (patch)
treea7ebb85155ecff80316f4e35110918f66035d139 /pkgs/games/factorio
parenta1115f5ea5a82c5758194e7ad72718237a85c1ba (diff)
factorio: let us change mod settings
Diffstat (limited to 'pkgs/games/factorio')
-rw-r--r--pkgs/games/factorio/default.nix3
-rw-r--r--pkgs/games/factorio/utils.nix6
2 files changed, 6 insertions, 3 deletions
diff --git a/pkgs/games/factorio/default.nix b/pkgs/games/factorio/default.nix
index f47eda65b6c1a..a65ce6bac0dbf 100644
--- a/pkgs/games/factorio/default.nix
+++ b/pkgs/games/factorio/default.nix
@@ -3,6 +3,7 @@
 , 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
@@ -130,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 be5b7fd5eccc8..86b0b2f851044 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
-      '';
+      '' + (if modsDatFile != null then ''
+       cp ${modsDatFile} $out/mod-settings.dat
+      '' else "");
     };
 
     modDrv = { allRecommendedMods, allOptionalMods }: