Factorio: Difference between revisions
Overhaul page per the MoS. |
|||
Line 1: | Line 1: | ||
[https:// | <strong>[https://www.factorio.com Factorio]</strong> is a video game created by [https://www.factorio.com/game/about Wube Software]. Factorio has a multiplayer mode that requires a dedicated server, which is available on Nixpkgs and can be installed on NixOS. | ||
== Installation == | |||
{{Unfree}} | |||
To install the Factorio server, add | To install the Factorio server, add the following to your [[Overview_of_the_NixOS_Linux_distribution#Declarative_Configuration|NixOS configuration]]: | ||
< | {{file|configuration.nix|nix| | ||
environment.systemPackages = | <nowiki> | ||
{ | |||
]; | environment.systemPackages = [ pkgs.factorio-headless ]; | ||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ | |||
nixpkgs.config. | "factorio-headless" | ||
</ | ]; | ||
} | |||
</nowiki> | |||
}} | |||
{{Evaluate}} | |||
It | It is important to only install <code>factorio-headless</code> instead of <code>factorio</code> because the headless version is a redistributable download that does not require login credentials. | ||
== Configuration == | == Configuration == | ||
Here is a minimum viable configuration for the Factorio server | Here is a minimum viable configuration for the Factorio server: | ||
< | {{file|configuration.nix|nix| | ||
services.factorio = { | <nowiki> | ||
{ | |||
services.factorio = { | |||
}; | enable = true; | ||
</ | openFirewall = true; | ||
}; | |||
} | |||
</nowiki> | |||
}} | |||
This will run a | This will run a unprotected server that binds to the <code>0.0.0.0</code> local IP address and uses the default UDP port of <code>34197</code>, with an auto-generated save file. Factorio servers support IPv6 by setting <code>bind = "[::]";</code>. All default settings can be seen here: {{nixos:option|services.factorio.*}} | ||
== Mods == | === Mods === | ||
The NixOS module for Factorio supports [https://wiki.factorio.com/Modding Factorio mods | The NixOS module for Factorio supports [https://wiki.factorio.com/Modding Factorio third-party modifications], or <i>mods</i>, which are just zip files with extra game content. While technically you can create a full derivation for mods, in practice this can get complicated, especially since authentication is required to download mods from the official mod site. | ||
Instead, you can download the mods you need separately from https://mods.factorio.com/, place them in a folder such as <code>/home/username/factorio-mods</code>, and put this code in your configuration. | Instead, you can download the mods you need separately from https://mods.factorio.com/, place them in a folder such as <code>/home/username/factorio-mods</code>, and put this code in your [[Overview_of_the_NixOS_Linux_distribution#Declarative_Configuration|NixOS configuration]]. (credit to [https://github.com/nicball/nuc-nixos-configuration/blob/f70f2c4d8da1f2648b5e595d9058e0f105409fd7/factorio.nix#L16 nicball]): | ||
< | {{file|configuration.nix|nix| | ||
services.factorio | <nowiki> | ||
{ | |||
services.factorio.mods = | |||
let | let | ||
inherit (pkgs) lib; | inherit (pkgs) lib; | ||
Line 54: | Line 62: | ||
cp ${modDir + "/${modFileName}"} $out/${modFileName} | cp ${modDir + "/${modFileName}"} $out/${modFileName} | ||
'' | '' | ||
// { deps = []; }; | |||
in | |||
builtins.map modToDrv modList; | |||
} | } | ||
</ | </nowiki> | ||
}} | |||
== See also == | |||
* [https://wiki.factorio.com/Multiplayer The Factorio wiki page on Multiplayer] | |||
[[Category:Gaming]] | [[Category:Gaming]] | ||
[[Category:Server]] | [[Category:Server]] |