blob: ed159dffa0d2c0e467410c939fd82db54d4d7d90 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
# NixOS-WSL specific options are documented on the NixOS-WSL repository:
# https://github.com/nix-community/NixOS-WSL
{
inputs,
pkgs,
...
}: let
wrappers =
inputs.wrapper-manager.lib.build
{
inherit pkgs;
modules = [
../../../wrappers/aerc
../../../wrappers/zellij
];
};
in {
wsl.enable = true;
wsl.defaultUser = "y";
imports = [
../../base.nix
../../users.nix
../../editors.nix
../../pkgs.nix
../../server.nix
../../gpg.nix
];
environment.systemPackages = [
wrappers
pkgs.superhtml
];
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It's perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# 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
'';
};
}
|