setup factorio server
This commit is contained in:
parent
600aed0b28
commit
2d6fecf8f6
18
flake.lock
18
flake.lock
|
@ -382,11 +382,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713077896,
|
"lastModified": 1713166971,
|
||||||
"narHash": "sha256-Noot8H0EZEAFRQWyGxh9ryvhK96xpIqKbh78X447JWs=",
|
"narHash": "sha256-t0P/rKlsE5l1O3O2LYtAelLzp7PeoPCSzsIietQ1hSM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "630a0992b3627c64e34f179fab68e3d48c6991c0",
|
"rev": "1c43dcfac48a2d622797f7ab741670fdbcf8f609",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -477,11 +477,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712791164,
|
"lastModified": 1713297878,
|
||||||
"narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=",
|
"narHash": "sha256-hOkzkhLT59wR8VaMbh1ESjtZLbGi+XNaBN6h49SPqEc=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5",
|
"rev": "66adc1e47f8784803f2deb6cacd5e07264ec2d5c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -809,11 +809,11 @@
|
||||||
},
|
},
|
||||||
"unstable_2": {
|
"unstable_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712791164,
|
"lastModified": 1712963716,
|
||||||
"narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=",
|
"narHash": "sha256-WKm9CvgCldeIVvRz87iOMi8CFVB1apJlkUT4GGvA0iM=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5",
|
"rev": "cfd6b5fc90b15709b780a5a1619695a88505a176",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
36
modules/nixos/apps/factorio-server/default.nix
Normal file
36
modules/nixos/apps/factorio-server/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib;
|
||||||
|
with lib.wyrdgard;
|
||||||
|
let
|
||||||
|
cfg = config.wyrdgard.apps.factorio-server;
|
||||||
|
inherit (config.wyrdgard.user) name;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.wyrdgard.apps.factorio-server = with types; {
|
||||||
|
enable = mkEnableOption "Enable Factorio Headless Server";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [ factorio-headless-experimental ];
|
||||||
|
|
||||||
|
services.factorio = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
public = true;
|
||||||
|
lan = true;
|
||||||
|
bind = "[::]";
|
||||||
|
nonBlockingSaving = true;
|
||||||
|
autosave-interval = 5;
|
||||||
|
loadLatestSave = true;
|
||||||
|
username = "DaHolli";
|
||||||
|
token = "4d4624ca9a23396e1955c1b4b364ff";
|
||||||
|
game-name = "Alles Nix!";
|
||||||
|
game-password = "1234";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -10,37 +10,14 @@ with lib;
|
||||||
with lib.wyrdgard;
|
with lib.wyrdgard;
|
||||||
let
|
let
|
||||||
cfg = config.wyrdgard.nix;
|
cfg = config.wyrdgard.nix;
|
||||||
|
|
||||||
substituters-submodule = types.submodule (
|
|
||||||
{ name, ... }:
|
|
||||||
{
|
|
||||||
options = with types; {
|
|
||||||
key = mkOpt (nullOr str) null "The trusted public key for this substituter.";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.wyrdgard.nix = with types; {
|
options.wyrdgard.nix = with types; {
|
||||||
enable = mkBoolOpt true "Whether or not to manage nix configuration.";
|
enable = mkBoolOpt true "Whether or not to manage nix configuration.";
|
||||||
package = mkOpt package pkgs.nixUnstable "Which nix package to use.";
|
package = mkOpt package pkgs.nixUnstable "Which nix package to use.";
|
||||||
|
|
||||||
default-substituter = {
|
|
||||||
url = mkOpt str "https://cache.nixos.org" "The url for the substituter.";
|
|
||||||
key =
|
|
||||||
mkOpt str "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
|
||||||
"The trusted public key for the substituter.";
|
|
||||||
};
|
|
||||||
|
|
||||||
extra-substituters = mkOpt (attrsOf substituters-submodule) { } "Extra substituters to configure.";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
assertions = mapAttrsToList (name: value: {
|
|
||||||
assertion = value.key != null;
|
|
||||||
message = "wyrdgard.nix.extra-substituters.${name}.key must be set";
|
|
||||||
}) cfg.extra-substituters;
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
snowfallorg.flake
|
snowfallorg.flake
|
||||||
nixfmt
|
nixfmt
|
||||||
|
@ -53,7 +30,7 @@ in
|
||||||
users = [
|
users = [
|
||||||
"root"
|
"root"
|
||||||
config.wyrdgard.user.name
|
config.wyrdgard.user.name
|
||||||
] ++ optional config.services.hydra.enable "hydra";
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
package = cfg.package;
|
package = cfg.package;
|
||||||
|
@ -68,13 +45,6 @@ in
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
trusted-users = users;
|
trusted-users = users;
|
||||||
allowed-users = users;
|
allowed-users = users;
|
||||||
|
|
||||||
substituters = [
|
|
||||||
cfg.default-substituter.url
|
|
||||||
] ++ (mapAttrsToList (name: value: name) cfg.extra-substituters);
|
|
||||||
trusted-public-keys = [
|
|
||||||
cfg.default-substituter.key
|
|
||||||
] ++ (mapAttrsToList (name: value: value.key) cfg.extra-substituters);
|
|
||||||
}
|
}
|
||||||
// (lib.optionalAttrs config.wyrdgard.tools.direnv.enable {
|
// (lib.optionalAttrs config.wyrdgard.tools.direnv.enable {
|
||||||
keep-outputs = true;
|
keep-outputs = true;
|
||||||
|
|
|
@ -23,6 +23,7 @@ with lib.wyrdgard;
|
||||||
discord = enabled;
|
discord = enabled;
|
||||||
_1password = enabled;
|
_1password = enabled;
|
||||||
onedrive = enabled;
|
onedrive = enabled;
|
||||||
|
factorio-server = enabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
system = {
|
system = {
|
||||||
|
|
Loading…
Reference in a new issue