85 lines
1.8 KiB
Nix
85 lines
1.8 KiB
Nix
{
|
|
name,
|
|
pkgs,
|
|
lib,
|
|
hostInfo,
|
|
dsl,
|
|
inputs,
|
|
...
|
|
}:
|
|
let
|
|
inherit (dsl) mkContainer mkService;
|
|
inherit (hostInfo.paths) data secrets;
|
|
inherit (inputs) mtce;
|
|
dataDir = "/var/lib/mtce-bot";
|
|
|
|
threads = 64;
|
|
timeout = 1800;
|
|
|
|
configJson = pkgs.writeText "mtce-bot-config.json" (
|
|
builtins.toJSON {
|
|
inherit threads timeout;
|
|
}
|
|
);
|
|
|
|
mtce-engine = mtce.lib.mkMtce pkgs {
|
|
cpuFlags = [
|
|
"-O3"
|
|
"-march=cascadelake"
|
|
];
|
|
vectorizedBitSize = 512;
|
|
};
|
|
mtce-bot = mtce.lib.mkBot pkgs;
|
|
in
|
|
mkContainer {
|
|
inherit name;
|
|
svc.autoStart = true;
|
|
resources.fs = {
|
|
"${dataDir}/data.json" = {
|
|
hostPath = "${data}/misc/mtce-discord-bot/data.json";
|
|
isReadOnly = false;
|
|
};
|
|
"${dataDir}/audit" = {
|
|
hostPath = "${data}/misc/mtce-discord-bot/audit";
|
|
isReadOnly = false;
|
|
};
|
|
"${dataDir}/config.json" = {
|
|
hostPath = "${configJson}";
|
|
isReadOnly = true;
|
|
};
|
|
"${dataDir}/mtce" = {
|
|
hostPath = lib.getExe' mtce-engine "mtce";
|
|
isReadOnly = true;
|
|
};
|
|
"/run/secrets/mtce-discord-bot-env" = {
|
|
hostPath = "${secrets}/mtce-discord-bot-env";
|
|
isReadOnly = true;
|
|
};
|
|
};
|
|
users = [
|
|
{
|
|
name = "bot";
|
|
uid = 1000;
|
|
}
|
|
];
|
|
service =
|
|
_:
|
|
mkService {
|
|
description = "Discord bot (monumenta-charm-eval)";
|
|
execStart = lib.getExe' mtce-bot "mtce-bot";
|
|
workingDir = dataDir;
|
|
networkOnline = true;
|
|
serviceConfig = {
|
|
User = "bot";
|
|
EnvironmentFile = "/run/secrets/mtce-discord-bot-env";
|
|
PrivateTmp = true;
|
|
CapabilityBoundingSet = "";
|
|
ReadWritePaths = [ dataDir ];
|
|
};
|
|
};
|
|
resources.mem = "2G";
|
|
resources.cpu = 64;
|
|
net.access = [ { to = "@internet"; } ];
|
|
includedInTests = false;
|
|
}
|