l radio: use radio-news.r for weather report
This commit is contained in:
parent
8974ebb864
commit
e0aec32340
@ -107,6 +107,7 @@ let
|
||||
in {
|
||||
imports = [
|
||||
./news.nix
|
||||
./weather.nix
|
||||
];
|
||||
|
||||
users.users = {
|
||||
|
@ -1,31 +1,5 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
weather_for_ips = pkgs.writers.writePython3Bin "weather_for_ips" {
|
||||
libraries = [ pkgs.python3Packages.geoip2 ];
|
||||
flakeIgnore = [ "E501" ];
|
||||
} ./weather_for_ips.py;
|
||||
|
||||
weather_report = pkgs.writers.writeDashBin "weather_report" ''
|
||||
set -efu
|
||||
export PATH="${lib.makeBinPath [
|
||||
pkgs.coreutils
|
||||
pkgs.curl
|
||||
pkgs.iproute2
|
||||
pkgs.jc
|
||||
pkgs.jq
|
||||
]}"
|
||||
curl -z /tmp/GeoLite2-City.mmdb -o /tmp/GeoLite2-City.mmdb http://c.r/GeoLite2-City.mmdb
|
||||
MAXMIND_GEOIP_DB="/tmp/GeoLite2-City.mmdb"; export MAXMIND_GEOIP_DB
|
||||
OPENWEATHER_API_KEY=$(cat "$CREDENTIALS_DIRECTORY/openweather_api"); export OPENWEATHER_API_KEY
|
||||
ss -no 'sport = :8000' |
|
||||
jc --ss | jq -r '.[] |
|
||||
select(
|
||||
.local_address != "[::ffff:127.0.0.1]"
|
||||
and .local_address != "[::1]"
|
||||
) | .peer_address | gsub("[\\[\\]]"; "")
|
||||
' |
|
||||
${weather_for_ips}/bin/weather_for_ips
|
||||
'';
|
||||
|
||||
send_to_radio = pkgs.writers.writeDashBin "send_to_radio" ''
|
||||
${pkgs.vorbis-tools}/bin/oggenc - |
|
||||
@ -51,7 +25,6 @@ let
|
||||
todays news:
|
||||
$(get_current_news)
|
||||
$(gc_news)
|
||||
$(weather_report)
|
||||
EOF
|
||||
'';
|
||||
in
|
||||
@ -62,7 +35,6 @@ in
|
||||
send_to_radio
|
||||
gc_news
|
||||
get_current_news
|
||||
weather_report
|
||||
pkgs.curl
|
||||
pkgs.retry
|
||||
];
|
||||
@ -75,9 +47,6 @@ in
|
||||
startAt = "*:00:00";
|
||||
serviceConfig = {
|
||||
User = "radio-news";
|
||||
LoadCredential = [
|
||||
"openweather_api:${toString <secrets>}/openweather_api_key"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
|
55
lass/2configs/radio/weather.nix
Normal file
55
lass/2configs/radio/weather.nix
Normal file
@ -0,0 +1,55 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
weather_for_ips = pkgs.writers.writePython3Bin "weather_for_ips" {
|
||||
libraries = [ pkgs.python3Packages.geoip2 ];
|
||||
flakeIgnore = [ "E501" ];
|
||||
} ./weather_for_ips.py;
|
||||
|
||||
weather_report = pkgs.writers.writeDashBin "weather_report" ''
|
||||
set -efu
|
||||
export PATH="${lib.makeBinPath [
|
||||
pkgs.coreutils
|
||||
pkgs.curl
|
||||
pkgs.iproute2
|
||||
pkgs.jc
|
||||
pkgs.jq
|
||||
]}"
|
||||
curl -z /tmp/GeoLite2-City.mmdb -o /tmp/GeoLite2-City.mmdb http://c.r/GeoLite2-City.mmdb
|
||||
MAXMIND_GEOIP_DB="/tmp/GeoLite2-City.mmdb"; export MAXMIND_GEOIP_DB
|
||||
OPENWEATHER_API_KEY=$(cat "$CREDENTIALS_DIRECTORY/openweather_api"); export OPENWEATHER_API_KEY
|
||||
ss -no 'sport = :8000' |
|
||||
jc --ss | jq -r '.[] |
|
||||
select(
|
||||
.local_address != "[::ffff:127.0.0.1]"
|
||||
and .local_address != "[::1]"
|
||||
) | .peer_address | gsub("[\\[\\]]"; "")
|
||||
' |
|
||||
${weather_for_ips}/bin/weather_for_ips
|
||||
'';
|
||||
in {
|
||||
systemd.services.weather = {
|
||||
path = [
|
||||
weather_report
|
||||
pkgs.retry
|
||||
pkgs.jq
|
||||
pkgs.curl
|
||||
];
|
||||
script = ''
|
||||
set -xefu
|
||||
retry -t 5 -d 10 -- weather_report |
|
||||
jq \
|
||||
--arg from "$(date -u +'%FT%TZ')" \
|
||||
--arg to "$(date -u +'%FT%TZ' -d '+1 hours')" \
|
||||
--slurp --raw-input --compact-output --ascii-output \
|
||||
'{text: ., from: $from, to: $to, priority: 100}' |
|
||||
retry -t 5 -d 10 -- curl -v -d@- http://radio-news.r
|
||||
'';
|
||||
startAt = "*:58:00";
|
||||
serviceConfig = {
|
||||
User = "radio-news";
|
||||
LoadCredential = [
|
||||
"openweather_api:${toString <secrets>}/openweather_api_key"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user