summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-01-16 00:00:57 +0000
committerpolwex <polwex@sortug.com>2025-01-16 00:00:57 +0000
commit44857f873bf0de923b9078b593391d4ff6908acb (patch)
tree41bb63961586e58075723d27653d20430850153d
parentd6f25499c7dc26c158333827e11b824a745e5e93 (diff)
m
-rw-r--r--hosts/local/s15/configuration.nix55
1 files changed, 53 insertions, 2 deletions
diff --git a/hosts/local/s15/configuration.nix b/hosts/local/s15/configuration.nix
index a913983..ed159df 100644
--- a/hosts/local/s15/configuration.nix
+++ b/hosts/local/s15/configuration.nix
@@ -5,8 +5,6 @@
# https://github.com/nix-community/NixOS-WSL
{
inputs,
- config,
- lib,
pkgs,
...
}: let
@@ -41,4 +39,57 @@ in {
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "24.05"; # Did you read the comment?
+
+ systemd.services.periodic-http-request = {
+ description = "Periodic HTTP Request Service";
+
+ # Run every 15 minutes
+ startAt = "*:0/30";
+
+ # Service configuration
+ serviceConfig = {
+ Type = "oneshot";
+ User = "nobody"; # Run as unprivileged user
+ DynamicUser = true;
+ PrivateTmp = true;
+ ProtectSystem = "strict";
+ ProtectHome = true;
+ NoNewPrivileges = true;
+ };
+
+ path = [pkgs.curl];
+
+ script = ''
+ TOKEN="1993620520:AAE-RACWzn8YuQOkBfDxbkuKBigZQb-w9wE"
+ URL="https://api.telegram.org/bot$TOKEN/sendMessage"
+
+ get_public_ipv4() {
+ # Try ipify first
+ IP=$(curl -s https://api.ipify.org)
+ if [ -n "$IP" ]; then
+ echo "$IP"
+ return
+ fi
+
+ # Fallback to icanhazip
+ IP=$(curl -s https://ipv4.icanhazip.com)
+ if [ -n "$IP" ]; then
+ echo "$IP"
+ return
+ fi
+
+ # Last resort: ipecho
+ curl -s https://ipecho.net/plain
+ }
+
+ curl -s -X POST "$URL" \
+ -H "User-Agent: NixOS-Periodic-Request" \
+ -H 'Content-Type: application/json' \
+ -d "{\"chat_id\": \"547865560\", \"text\": \"s15 reporting for duty $(get_public_ipv4)\"}" \
+ --retry 3 \
+ --retry-delay 5 \
+ --max-time 30 \
+ -o /dev/null
+ '';
+ };
}