hardware rewrite

This commit is contained in:
bogale 2026-10-07 09:54:55 +09:00
commit 277291f346
8 changed files with 40 additions and 50 deletions

85
server/mods/system.nix Normal file
View file

@ -0,0 +1,85 @@
{ config, lib, pkgs, ... }:
{
services = {
prometheus = {
enable = true;
exporters.node.enable = true;
scrapeConfigs = [ {
job_name = "node";
static_configs = [ { targets = [
"localhost:${toString config.services.prometheus.exporters.node.port}"
]; } ];
} ];
};
grafana = {
enable = true;
settings = {
security.secret_key = "$__file{/secrets/grafana-key}";
server = {
enable_gzip = true;
protocol = "socket";
socket_mode = "0666";
root_url = "https://bogaledev.ru/grafana";
};
};
};
};
systemd = {
timers = {
tgbot-send = {
wantedBy = [ "timers.target" ];
timerConfig = {
Persistent = true;
OnCalendar = "*-*-01 16:00";
};
};
network-watchdog = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = 30;
AccuracySec = 1;
OnUnitActiveSec = 10;
};
};
};
services = {
tgbot-send = {
serviceConfig.Type = "oneshot";
script = ''
. /secrets/tgbot.env
for msg in "''${MESSAGES[@]}"; do
TEXT="''${msg#*:}"
CHAT_ID="''${msg%%:*}"
${pkgs.curl}/bin/curl -X POST "https://api.telegram.org/$BOT/sendMessage" \
-d "chat_id=$CHAT_ID" -d "text=$TEXT" 2> /dev/null | ${pkgs.jq}/bin/jq
sleep 1
done
'';
};
network-watchdog = {
serviceConfig = {
Type = "oneshot";
LogLevelMax = "warning";
};
script = ''
if [ ! -e /run/network.failures ] || [ ! -e /run/network.limit ] || \
${pkgs.curl}/bin/curl --head --max-time 3 https://www.google.com; then
limit=3
failures=0
else
limit=$(cat /run/network.limit)
failures=$((1+$(cat /run/network.failures)))
fi
if [ $failures -ge $limit ]; then
echo "<4>restarting network"
systemctl restart NetworkManager.service
[ $limit -lt 360 ] && limit=$((2*$limit))
failures=0
fi
echo $limit > /run/network.limit
echo $failures > /run/network.failures
'';
};
};
};
}