This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

1{ self, pkgs, ... }: 2let 3 send_to_radio = pkgs.writers.writeDashBin "send_to_radio" '' 4 ${pkgs.vorbis-tools}/bin/oggenc - | 5 ${pkgs.cyberlocker-tools}/bin/cput news.ogg 6 ${pkgs.curl}/bin/curl -fSs -X POST http://localhost:8002/newsshow 7 ''; 8 9 gc_news = pkgs.writers.writeDashBin "gc_news" '' 10 set -xefu 11 export TZ=UTC #workaround for jq parsing wrong timestamp 12 ${pkgs.coreutils}/bin/cat $HOME/news | ${pkgs.jq}/bin/jq -cs 'map(select((.to|fromdateiso8601) > now)) | .[]' > $HOME/bla-news.tmp 13 ${pkgs.coreutils}/bin/mv $HOME/bla-news.tmp $HOME/news 14 ''; 15 16 get_current_news = pkgs.writers.writeDashBin "get_current_news" '' 17 set -xefu 18 export TZ=UTC #workaround for jq parsing wrong timestamp 19 ${pkgs.coreutils}/bin/cat $HOME/news | ${pkgs.jq}/bin/jq -rs ' 20 sort_by(.priority) | 21 map(select( 22 ((.to | fromdateiso8601) > now) and 23 (.from|fromdateiso8601) < now) | 24 .text 25 ) | .[]' 26 ''; 27 28 newsshow = 29 pkgs.writers.writeDashBin "newsshow" # sh 30 '' 31 cat << EOF 32 hello crabpeople! 33 $(${pkgs.ddate}/bin/ddate +'Today is %{%A, the %e of %B%}, %Y. %N%nCelebrate %H') 34 It is $(date --utc +%H) o clock UTC. 35 todays news: 36 $(get_current_news) 37 $(gc_news) 38 EOF 39 ''; 40in 41{ 42 systemd.services.newsshow = { 43 path = [ 44 newsshow 45 send_to_radio 46 gc_news 47 get_current_news 48 pkgs.retry 49 ]; 50 script = '' 51 set -efu 52 retry -t 5 -d 10 -- newsshow | 53 retry -t 5 -d 10 -- /run/current-system/sw/bin/tts | 54 retry -t 5 -d 10 -- send_to_radio 55 ''; 56 startAt = "*:00:00"; 57 serviceConfig = { 58 User = "radio-news"; 59 }; 60 }; 61 62 services.nginx.virtualHosts."radio-news.r" = { 63 locations."/" = { 64 proxyPass = "http://localhost:7999"; 65 proxyWebsockets = true; 66 extraConfig = '' 67 add_header 'Access-Control-Allow-Origin' '*'; 68 add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 69 ''; 70 }; 71 }; 72 imports = [ 73 self.inputs.stockholm.nixosModules.htgen 74 ./tts.nix 75 ]; 76 krebs.htgen.news = { 77 port = 7999; 78 user = { 79 name = "radio-news"; 80 }; 81 script = ''. ${pkgs.writers.writeDash "htgen-news" '' 82 set -xefu 83 case "''${Method:-GET} $Request_URI" in 84 "GET /") 85 printf 'HTTP/1.1 200 OK\r\n' 86 printf 'Connection: close\r\n' 87 printf '\r\n' 88 cat "$HOME"/news | jq -sc . 89 exit 90 ;; 91 "POST /") 92 payload=$(head -c "$req_content_length") 93 printf '%s' "$payload" | jq 'has("from") and has("to") and has("text")' >&2 94 printf '%s' "$payload" | jq -c '{ from: .from, to: .to, text: .text, priority: (.priority // 0)}' >> "$HOME"/news 95 printf 'HTTP/1.1 200 OK\r\n' 96 printf 'Connection: close\r\n' 97 printf '\r\n' 98 exit 99 ;; 100 esac 101 ''}''; 102 }; 103 104 # debug 105 environment.systemPackages = [ 106 send_to_radio 107 newsshow 108 ]; 109}