This repository has no description
0

Configure Feed

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

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