Discord bot working!

This commit is contained in:
Jurn Wubben 2025-04-02 12:15:05 +02:00
parent 215a8d138a
commit 5aa80f4491
4 changed files with 48 additions and 19 deletions

BIN
secrets/dcbot.age Normal file

Binary file not shown.

View file

@ -4,6 +4,10 @@
file = ./transfer-sh.age; file = ./transfer-sh.age;
owner = "jsw"; owner = "jsw";
}; };
dcbot = {
file = ./dcbot.age;
owner = "dcbot";
};
password.file = ./password.age; password.file = ./password.age;
}; };
} }

View file

@ -9,4 +9,5 @@ let
in { in {
"transfer-sh.age".publicKeys = systems; "transfer-sh.age".publicKeys = systems;
"password.age".publicKeys = systems; "password.age".publicKeys = systems;
"dcbot.age".publicKeys = systems;
} }

View file

@ -1,37 +1,61 @@
{ {
inputs, config,
pkgs, pkgs,
lib, lib,
inputs,
... ...
}: let }: let
deno = lib.getExe pkgs.deno; deno = lib.getExe pkgs.deno;
bash = lib.getExe pkgs.bash;
mainDir = "/var/lib/dcbot/"; mainDir = "/var/lib/dcbot/";
programDir = mainDir + "program"; programDir = mainDir + "program";
dataDir = mainDir + "data"; dataDir = mainDir + "data";
denoDir = mainDir + "deno";
config = pkgs.writeText ".env" '' path = builtins.concatStringsSep ":" (map (x: "${x}/bin/") [pkgs.coreutils pkgs.typst pkgs.deno]);
config
'';
in { in {
systemd.services.dcbot = { config = lib.mkIf config.niksos.server {
enable = true; systemd.services.dcbot = {
after = ["network.target"]; enable = true;
wantedBy = ["default.target"]; after = ["network.target"];
description = "Jsw's slaafje, discord bot."; wantedBy = ["default.target"];
description = "Jsw's slaafje, discord bot.";
preStart = '' environment = {
mkdir -p "${programDir}" "${dataDir}/" "DENO_DIR" = denoDir;
"PATH" = lib.mkForce path;
};
cp -r ${inputs.dcbot}/* "${programDir}/" preStart = ''
cp -r "${config}" "${programDir}/.env" export PATH=${path}
cd "${programDir}" cd "${mainDir}"
${deno} i chown -R dcbot:dcbot ${mainDir}* || echo
''; chmod -R 750 ${mainDir}* || echo
serviceConfig = {
StateDirectory = "dcbot"; mkdir -p "${programDir}" "${dataDir}" "${denoDir}"
ExecStart = "${deno} run -A ${programDir}/src/main.ts"; cp --no-preserve=mode,ownership -r ${inputs.dcbot}/* "${programDir}/"
rm "${dataDir}/.env"
ln -s "${config.age.secrets.dcbot.path}" "${dataDir}/.env"
cd "${programDir}"
DENO_DIR=${denoDir} deno i
'';
serviceConfig = {
StateDirectory = "dcbot";
ExecStart = "${bash} -c 'cd ${dataDir} && deno run -A ${programDir}/src/main.ts'";
User = "dcbot";
group = "dcbot";
};
};
users.groups."dcbot" = {};
users.users."dcbot" = {
group = "dcbot";
isSystemUser = true;
}; };
}; };
} }