Files
Floweynt 76fa38e34c
flake-check / flake-check (push) Canceled after 0s
lint / lint (push) Canceled after 0s
diff-tag / dix (push) Canceled after 0s
initial commit
2026-08-31 08:41:45 -05:00

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;
}