-
Notifications
You must be signed in to change notification settings - Fork 1
/
factorio.nix
106 lines (91 loc) · 2.46 KB
/
factorio.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
{...}: {
job.factorio = {
datacenters = ["dc1"];
group.factorio = {
count = 1;
volume = {
"factorio_data" = {
type = "csi";
source = "factorio_data";
readOnly = false;
attachmentMode = "file-system";
accessMode = "single-node-writer";
};
};
networks = [
{
mode = "bridge";
port.game.to = 34197;
port.game.static = 34197;
}
];
task.factorio-server = {
driver = "docker";
env = {
};
volumeMounts = [
{
volume = "factorio_data";
destination = "/opt/factorio";
readOnly = false;
}
];
config = {
image = "docker.io/justinrubek/factorio-server:c4aae5d13abfe240783b247f5c1647c9e7617755";
volumes = [
"local/server-settings.json:/etc/server-settings.json"
"local/factorio.conf:/etc/factorio.conf"
];
# Run /bin/factorio with the following arguments
# - the save to use `/opt/factorio/saves/new-save.zip`
command = "factorio";
args = [
"--config"
"/etc/factorio.conf"
"--start-server"
"/opt/factorio/saves/keghan-fixtrains.zip"
"--server-settings"
"/etc/server-settings.json"
];
};
templates = [
{
destination = "local/server-settings.json";
data = let
server-settings = {
name = "The Factory Must Grow.";
description = "I used to have a family, but now I have a factory.";
visibility.lan = true;
autosave_interval = 1;
autosave_slots = 10;
non_blocking_saving = true;
auto_pause = true;
};
json = builtins.toJSON server-settings;
in
json;
}
{
destination = "local/factorio.conf";
data = ''
use-system-read-write-data-directories=true
[path]
read-data=/share/factorio/data
write-data=/opt/factorio
'';
}
];
resources = {
cpu = 6000;
memory = 4096;
};
};
services = [
{
name = "factorio-game";
port = "game";
}
];
};
};
}