Compare commits
4 commits
0406d043bd
...
93086ad9a4
| Author | SHA1 | Date | |
|---|---|---|---|
| 93086ad9a4 | |||
|
|
71b64d8edc | ||
|
|
6b97209703 | ||
|
|
e6197316cc |
5 changed files with 113 additions and 1 deletions
16
secrets/bread-dcbot.age
Normal file
16
secrets/bread-dcbot.age
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 GQzYWA oxKOXLokaA47vSPUhCobKZnSJSmTXY5HFbOm72XcLho
|
||||||
|
RhWCfWMIgacKpR0Yy9m7PN+e0aUx2qp73YQKoMsvq7Y
|
||||||
|
-> ssh-ed25519 MfR7VA mUCKaE6KtLwEqx1HUJLCdwLCLE/JmbrsluWFCNnE0zc
|
||||||
|
XW8ixc5VPYSiBvtFtOG1SIayrmR7smu0Y+WSChqIrOI
|
||||||
|
-> ssh-ed25519 +cvRTg Z5EeXPZ4uK9qpTn3X9QkNgmqVSScY+5SNyW1ff+a9WI
|
||||||
|
QTgv8WV+pM32OeAR7IdAIeqdYSyjGRz3DiOT+hP7qzc
|
||||||
|
-> ssh-ed25519 WCPLrA 6d7Tu27YChuazPy+A1a58nLCIIIK7aFimMSCW18Wahg
|
||||||
|
4XaJsMe97L0y3TH6ytrHa8YJIIXQMPV60Omp6RaepPs
|
||||||
|
-> ssh-ed25519 7/ziYw 7L1sXK+Cd2hLne2Vdr0dslWgmZJH0gRWlSPyxDxy8Ro
|
||||||
|
reoZzk6rUDLwIUXIz2mlIwRsEJoJp0KGmdZNXVN7/VQ
|
||||||
|
-> ssh-ed25519 VQy60Q n1Yq+hoUwjirJusbHSXhAlJDQFE8hLwouFfh8bPcTUc
|
||||||
|
YRVEgRbG2lEJ5pz6V1owgQ5etWnh81zwunUvQRzegQM
|
||||||
|
--- az5zrd8PDMTJJW//qtDTp1qw0M0ePTBZwYRnD4UJgxs
|
||||||
|
‡µÃfЦ¯0"Œ=ÜÁk
|
||||||
|
ÕÚf‹bPJ¶ž½JcÂR–å}sP¤‘– î±þÚ×¶÷ÖÓafƒLÇ*ˆ‰ÔÃó;»U ]ywÞø:—ÌžéŪç%A,€oÊFTM¦-Vµì{ó\ÍÁßi]6alg2é6¬½øl2ÏžN>èÇÖsq2U#˜0<CB9C>ò<EFBFBD>ïA¼,“pâ¤xYúÝg›»RÌ{²ê<C2B2>Âö<C382>à÷ÛÛÐ<C39B>ÁVS£ÈI~Y‹ ^P(é¿?•š±²
þ7›D46å6ßEu«¬œÔQ¹ôåÙ<C3A5>€¾zrm_¬–Íü9f1&y¥;Ï/—Ï÷—>˜2Äì«—³£lé><3E>ë+¡Nµ¯5м˜Lo€\hצ463ó0³?
|
||||||
|
|
@ -13,6 +13,13 @@ in {
|
||||||
then serviceUser "dcbot" # "dcbot" doesn't exist on e.g laptop.
|
then serviceUser "dcbot" # "dcbot" doesn't exist on e.g laptop.
|
||||||
else "root";
|
else "root";
|
||||||
};
|
};
|
||||||
|
bread-dcbot = {
|
||||||
|
file = ./bread-dcbot.age;
|
||||||
|
owner =
|
||||||
|
if config.niksos.server
|
||||||
|
then serviceUser "bread-dcbot" # "dcbot" doesn't exist on e.g laptop.
|
||||||
|
else "root";
|
||||||
|
};
|
||||||
password.file = ./password.age;
|
password.file = ./password.age;
|
||||||
matrix-registration = {
|
matrix-registration = {
|
||||||
file = ./matrix-registration.age;
|
file = ./matrix-registration.age;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ in {
|
||||||
"transfer-sh.age".publicKeys = keys;
|
"transfer-sh.age".publicKeys = keys;
|
||||||
"password.age".publicKeys = keys;
|
"password.age".publicKeys = keys;
|
||||||
"dcbot.age".publicKeys = keys;
|
"dcbot.age".publicKeys = keys;
|
||||||
|
"bread-dcbot.age".publicKeys = keys;
|
||||||
"matrix-registration.age".publicKeys = keys;
|
"matrix-registration.age".publicKeys = keys;
|
||||||
"cloudflare-acme.age".publicKeys = keys;
|
"cloudflare-acme.age".publicKeys = keys;
|
||||||
"mail-admin.age".publicKeys = keys;
|
"mail-admin.age".publicKeys = keys;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,15 @@
|
||||||
{lib, ...}: {
|
{lib, ...}: {
|
||||||
imports = [./caddy.nix ./index ./seafile.nix ./bot.nix ./immich.nix ./matrix.nix ./mail.nix ./forgejo.nix ./temp.nix];
|
imports = [
|
||||||
|
./bot.nix
|
||||||
|
./caddy.nix
|
||||||
|
./derekBot.nix
|
||||||
|
./forgejo.nix
|
||||||
|
./immich.nix
|
||||||
|
./index
|
||||||
|
./mail.nix
|
||||||
|
./matrix.nix
|
||||||
|
./seafile.nix
|
||||||
|
./temp.nix
|
||||||
|
];
|
||||||
options.niksos.server = lib.mkEnableOption "server servcies (such as caddy)."; #TODO: per service option.
|
options.niksos.server = lib.mkEnableOption "server servcies (such as caddy)."; #TODO: per service option.
|
||||||
}
|
}
|
||||||
|
|
|
||||||
77
system/server/derekBot.nix
Normal file
77
system/server/derekBot.nix
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.niksos.server;
|
||||||
|
userGroup = "bread-dcbot";
|
||||||
|
gitRepo = "https://github.com/The-Breadening/Breadener";
|
||||||
|
|
||||||
|
bash = lib.getExe pkgs.bash;
|
||||||
|
varLib = "/var/lib/";
|
||||||
|
mainDir =
|
||||||
|
varLib
|
||||||
|
+ (
|
||||||
|
if !cfg
|
||||||
|
then ""
|
||||||
|
else userGroup
|
||||||
|
)
|
||||||
|
+ "/";
|
||||||
|
programDir = mainDir + "program";
|
||||||
|
denoDir = mainDir + "deno";
|
||||||
|
tokenDir = mainDir + "Breadener-token";
|
||||||
|
path = builtins.concatStringsSep ":" (map (x: "${x}/bin/") [pkgs.coreutils pkgs.deno pkgs.git]);
|
||||||
|
in {
|
||||||
|
config = lib.mkIf config.niksos.server {
|
||||||
|
systemd.services.${userGroup} = {
|
||||||
|
enable = true;
|
||||||
|
after = ["network.target"];
|
||||||
|
wantedBy = ["default.target"];
|
||||||
|
description = userGroup;
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
"DENO_DIR" = denoDir;
|
||||||
|
"PATH" = lib.mkForce path;
|
||||||
|
};
|
||||||
|
|
||||||
|
preStart = ''
|
||||||
|
export PATH=${path}
|
||||||
|
|
||||||
|
cd "${mainDir}"
|
||||||
|
chown -R ${userGroup}:${userGroup} ${mainDir}* || echo
|
||||||
|
|
||||||
|
rm -rf "${tokenDir}" || echo
|
||||||
|
mkdir -p "${denoDir}" "${tokenDir}"
|
||||||
|
ln -s "${config.age.secrets.${userGroup}.path}" "${tokenDir}/prodBot.json"
|
||||||
|
|
||||||
|
if [ ! -d "${programDir}" ]; then
|
||||||
|
git clone "${gitRepo}" "${programDir}"
|
||||||
|
fi
|
||||||
|
chmod -R 750 ${mainDir}* || echo
|
||||||
|
|
||||||
|
|
||||||
|
cd "${programDir}"
|
||||||
|
git fetch
|
||||||
|
git reset --hard HEAD
|
||||||
|
|
||||||
|
DENO_DIR=${denoDir} deno i
|
||||||
|
'';
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
StateDirectory = userGroup;
|
||||||
|
ExecStart = "${bash} -c 'cd ${programDir} && deno run prod'";
|
||||||
|
User = userGroup;
|
||||||
|
Group = userGroup;
|
||||||
|
Restart = "always";
|
||||||
|
RuntimeMaxSec = 6 * 60 * 60; # 6h * 60min * 60s
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups.${userGroup} = {};
|
||||||
|
users.users.${userGroup} = {
|
||||||
|
group = userGroup;
|
||||||
|
isSystemUser = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue