about summary refs log tree commit diff
path: root/nixos/modules
diff options
context:
space:
mode:
authorDmitry Kalinkin <dmitry.kalinkin@gmail.com>2020-03-30 15:36:16 -0400
committerGitHub <noreply@github.com>2020-03-30 15:36:16 -0400
commit61a79754bd8ee47264859d3348e55efe68bd98df (patch)
tree59a2770b3f6b5b3edee3758cf995fe8528000486 /nixos/modules
parent76b1875a4012c58b105d5910b0a515d141e30e0e (diff)
parent637d7a5db9927a78c3b9e57ea3b2b22b27d8caa9 (diff)
downloadnixlib-61a79754bd8ee47264859d3348e55efe68bd98df.tar
nixlib-61a79754bd8ee47264859d3348e55efe68bd98df.tar.gz
nixlib-61a79754bd8ee47264859d3348e55efe68bd98df.tar.bz2
nixlib-61a79754bd8ee47264859d3348e55efe68bd98df.tar.lz
nixlib-61a79754bd8ee47264859d3348e55efe68bd98df.tar.xz
nixlib-61a79754bd8ee47264859d3348e55efe68bd98df.tar.zst
nixlib-61a79754bd8ee47264859d3348e55efe68bd98df.zip
Merge pull request #77478 from artemist/nixos-factorio
nixos/factorio: add extraSettings and package options
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/services/games/factorio.nix26
1 files changed, 21 insertions, 5 deletions
diff --git a/nixos/modules/services/games/factorio.nix b/nixos/modules/services/games/factorio.nix
index f3831156f453..4b2e1a3c07f0 100644
--- a/nixos/modules/services/games/factorio.nix
+++ b/nixos/modules/services/games/factorio.nix
@@ -4,14 +4,13 @@ with lib;
 
 let
   cfg = config.services.factorio;
-  factorio = pkgs.factorio-headless;
   name = "Factorio";
   stateDir = "/var/lib/${cfg.stateDirName}";
   mkSavePath = name: "${stateDir}/saves/${name}.zip";
   configFile = pkgs.writeText "factorio.conf" ''
     use-system-read-write-data-directories=true
     [path]
-    read-data=${factorio}/share/factorio/data
+    read-data=${cfg.package}/share/factorio/data
     write-data=${stateDir}
   '';
   serverSettings = {
@@ -37,7 +36,7 @@ let
     only_admins_can_pause_the_game = true;
     autosave_only_on_server = true;
     admins = [];
-  };
+  } // cfg.extraSettings;
   serverSettingsFile = pkgs.writeText "server-settings.json" (builtins.toJSON (filterAttrsRecursive (n: v: v != null) serverSettings));
   modDir = pkgs.factorio-utils.mkModDirDrv cfg.mods;
 in
@@ -115,6 +114,14 @@ in
           Description of the game that will appear in the listing.
         '';
       };
+      extraSettings = mkOption {
+        type = types.attrs;
+        default = {};
+        example = { admins = [ "username" ];};
+        description = ''
+          Extra game configuration that will go into server-settings.json
+        '';
+      };
       public = mkOption {
         type = types.bool;
         default = false;
@@ -136,6 +143,15 @@ in
           Your factorio.com login credentials. Required for games with visibility public.
         '';
       };
+      package = mkOption {
+        type = types.package;
+        default = pkgs.factorio-headless;
+        defaultText = "pkgs.factorio-headless";
+        example = "pkgs.factorio-headless-experimental";
+        description = ''
+          Factorio version to use. This defaults to the stable channel.
+        '';
+      };
       password = mkOption {
         type = types.nullOr types.str;
         default = null;
@@ -184,7 +200,7 @@ in
       preStart = toString [
         "test -e ${stateDir}/saves/${cfg.saveName}.zip"
         "||"
-        "${factorio}/bin/factorio"
+        "${cfg.package}/bin/factorio"
           "--config=${cfg.configFile}"
           "--create=${mkSavePath cfg.saveName}"
           (optionalString (cfg.mods != []) "--mod-directory=${modDir}")
@@ -197,7 +213,7 @@ in
         StateDirectory = cfg.stateDirName;
         UMask = "0007";
         ExecStart = toString [
-          "${factorio}/bin/factorio"
+          "${cfg.package}/bin/factorio"
           "--config=${cfg.configFile}"
           "--port=${toString cfg.port}"
           "--start-server=${mkSavePath cfg.saveName}"