diff options
author | polwex <polwex@sortug.com> | 2025-01-16 00:00:57 +0000 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-01-16 00:00:57 +0000 |
commit | 44857f873bf0de923b9078b593391d4ff6908acb (patch) | |
tree | 41bb63961586e58075723d27653d20430850153d | |
parent | d6f25499c7dc26c158333827e11b824a745e5e93 (diff) |
m
-rw-r--r-- | hosts/local/s15/configuration.nix | 55 |
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 + ''; + }; } |