summaryrefslogtreecommitdiffstats
path: root/krebs/5pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'krebs/5pkgs')
-rw-r--r--krebs/5pkgs/simple/grib2json/default.nix19
-rw-r--r--krebs/5pkgs/simple/nomads-cloud/default.nix43
-rw-r--r--krebs/5pkgs/simple/realwallpaper/default.nix12
3 files changed, 69 insertions, 5 deletions
diff --git a/krebs/5pkgs/simple/grib2json/default.nix b/krebs/5pkgs/simple/grib2json/default.nix
new file mode 100644
index 000000000..2a7959a75
--- /dev/null
+++ b/krebs/5pkgs/simple/grib2json/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchzip, makeWrapper, jre }:
+
+stdenv.mkDerivation {
+ name = "grib2json";
+ src = fetchzip {
+ url = "https://github.com/krebs/grib2json-bin/archive/31efe677b40fe491c988d50f96b59b1b7e2d46f7.zip";
+ sha256 = "1h3yxg270bvac7kaqsbsv4f8nln1i03rfz4cm8cp7llhjj3s6a6b";
+ };
+ installPhase = ''
+ mkdir -p $out/bin
+ cp -r lib $out/
+ cat > $out/bin/grib2json << EOF
+ #!/bin/sh
+ set -x
+ ${jre}/bin/java -jar $out/lib/grib2json-0.8.0-SNAPSHOT.jar "\$@"
+ EOF
+ chmod +x $out/bin/grib2json
+ '';
+}
diff --git a/krebs/5pkgs/simple/nomads-cloud/default.nix b/krebs/5pkgs/simple/nomads-cloud/default.nix
new file mode 100644
index 000000000..2af74dc44
--- /dev/null
+++ b/krebs/5pkgs/simple/nomads-cloud/default.nix
@@ -0,0 +1,43 @@
+{ writers, coreutils, grib2json, curl, jq, findutils, imagemagick }:
+writers.writeDashBin "nomads-cloud" ''
+ prefix=$(mktemp -d)
+ grib_path=$prefix.grib
+ json_path=$prefix.json
+ pgm_path=$prefix.pgm
+ png_path="$1"
+
+ mkdir -p "$prefix"
+
+ date=$(${coreutils}/bin/date +%Y%m%d)
+ for hour in 18 12 06 00; do
+ url="https://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25_1hr.pl?file=gfs.t''${hour}z.pgrb2.0p25.anl&lev_entire_atmosphere_%5C%28considered_as_a_single_layer%5C%29=on&var_CWAT=on&leftlon=-180&rightlon=180&toplat=90&bottomlat=-90&dir=%2Fgfs.$date%2F$hour"
+ ${curl}/bin/curl -fsS "$url" > "$grib_path"
+ if [ "$?" -eq 0 ]; then
+ break
+ fi
+ done
+ ${grib2json}/bin/grib2json --data "$grib_path" > "$json_path"
+
+ width=$(${jq}/bin/jq '.[0].header.nx' < "$json_path")
+ height=$(${jq}/bin/jq '.[0].header.ny' < "$json_path")
+
+ # The maximum gray value. Must be bigger than 0 and less than 65536.
+ maxval=256
+
+ # pgm - Netpbm grayscale image format
+ # http://netpbm.sourceforge.net/doc/pgm.html
+ {
+ echo P2
+ echo "$width $height"
+ echo "$maxval"
+ cat "$json_path" |
+ ${jq}/bin/jq --argjson maxval "$maxval" -c '
+ .[0].data[] * $maxval | round
+ ' |
+ ${findutils}/bin/xargs -n "$width"
+ } > "$pgm_path"
+
+ ${imagemagick}/bin/convert -roll +50% "$pgm_path" "$png_path"
+
+ rm -r "$prefix"
+''
diff --git a/krebs/5pkgs/simple/realwallpaper/default.nix b/krebs/5pkgs/simple/realwallpaper/default.nix
index ef83d2e59..b46cf08c1 100644
--- a/krebs/5pkgs/simple/realwallpaper/default.nix
+++ b/krebs/5pkgs/simple/realwallpaper/default.nix
@@ -1,5 +1,5 @@
{ pkgs, ... }:
-pkgs.writeDashBin "generate-wallpaper" ''
+pkgs.writers.writeDashBin "generate-wallpaper" ''
set -euf
# usage: getimg FILENAME URL
@@ -68,15 +68,15 @@ pkgs.writeDashBin "generate-wallpaper" ''
"$nightmap_url" &
fetch daymap-raw.png \
"$daymap_url" &
- fetch clouds-raw.jpg \
- "$cloudmap_url" &
fetch marker.json \
"$marker_url" &
wait
+ ${pkgs.nomads-cloud}/bin/nomads-cloud clouds-raw.png
+
check_type nightmap-raw.jpg image
check_type daymap-raw.png image
- check_type clouds-raw.jpg image
+ check_type clouds-raw.png image
in_size=2048x1024
xplanet_out_size=1466x1200
@@ -87,7 +87,7 @@ pkgs.writeDashBin "generate-wallpaper" ''
for raw in \
nightmap-raw.jpg \
daymap-raw.png \
- clouds-raw.jpg \
+ clouds-raw.png \
;
do
normal=''${raw%-raw.*}.png
@@ -128,6 +128,8 @@ pkgs.writeDashBin "generate-wallpaper" ''
# create marker file from json
if [ -s marker.json ]; then
jq -r 'to_entries[] | @json "\(.value.latitude) \(.value.longitude)"' marker.json > marker_file
+ echo 'position=sun image=subsolar.png transparent={255,255,255}' >> marker_file
+ echo 'position=moon image=sublunar.png transparent={255,255,255}' >> marker_file
fi
# make all unmodified files as final