summaryrefslogtreecommitdiffstats
path: root/krebs/5pkgs/simple
diff options
context:
space:
mode:
Diffstat (limited to 'krebs/5pkgs/simple')
-rw-r--r--krebs/5pkgs/simple/nomads-cloud/default.nix3
-rw-r--r--krebs/5pkgs/simple/realwallpaper/default.nix82
-rw-r--r--krebs/5pkgs/simple/realwallpaper/get_constellations.py36
3 files changed, 115 insertions, 6 deletions
diff --git a/krebs/5pkgs/simple/nomads-cloud/default.nix b/krebs/5pkgs/simple/nomads-cloud/default.nix
index 6e4ace484..97cf10d1f 100644
--- a/krebs/5pkgs/simple/nomads-cloud/default.nix
+++ b/krebs/5pkgs/simple/nomads-cloud/default.nix
@@ -10,7 +10,8 @@ writers.writeDashBin "nomads-cloud" ''
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"
+ 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}%2Fatmos"
+ echo "$url"
${curl}/bin/curl -fsS "$url" > "$grib_path"
if [ "$?" -eq 0 ]; then
break
diff --git a/krebs/5pkgs/simple/realwallpaper/default.nix b/krebs/5pkgs/simple/realwallpaper/default.nix
index 04a2a6718..8728c0ae7 100644
--- a/krebs/5pkgs/simple/realwallpaper/default.nix
+++ b/krebs/5pkgs/simple/realwallpaper/default.nix
@@ -1,6 +1,21 @@
{ pkgs, ... }:
pkgs.writers.writeDashBin "generate-wallpaper" ''
- set -euf
+ set -xeuf
+
+ export PATH=${with pkgs; lib.makeBinPath [
+ coreutils
+ curl
+ gnugrep
+ gnused
+ file
+ findutils
+ grib2json
+ imagemagick
+ inkscape
+ jq
+ nomads-cloud
+ xplanet
+ ]}
# usage: getimg FILENAME URL
fetch() {
@@ -118,7 +133,7 @@ pkgs.writers.writeDashBin "generate-wallpaper" ''
# fetch clouds if they are older than 3h
if ! test "$(find clouds-raw.png -mmin -180)"; then
- ${pkgs.nomads-cloud}/bin/nomads-cloud clouds-raw.png
+ nomads-cloud clouds-raw.png
fi
in_size=3600x1800
@@ -161,14 +176,14 @@ pkgs.writers.writeDashBin "generate-wallpaper" ''
fi
if needs_rebuild krebs.png krebs-raw.svg; then
- inkscape -z -e krebs.png -w 16 -h 16 krebs-raw.svg
+ inkscape --export-type="png" --export-width=16 --export-height=16 --export-filename=krebs.png krebs-raw.svg
fi
# -- Planets --
for planet in mercury venus mars jupiter saturn uranus neptune; do
if needs_rebuild "$planet".png "$planet"-raw.svg; then
sed -i 's/#000/#FE8019/g' "$planet"-raw.svg
- inkscape -z -e "$planet".png -w 40 -h 40 "$planet"-raw.svg
+ inkscape --export-type="png" --export-width=40 --export-height=40 --export-filename="$planet.png" "$planet-raw.svg"
fi
done
@@ -256,6 +271,52 @@ pkgs.writers.writeDashBin "generate-wallpaper" ''
shade=15
''}
+ ${pkgs.writers.writePython3 "get_constellations" {
+ libraries = [ pkgs.python3Packages.astropy ];
+ } ./get_constellations.py} ${pkgs.fetchurl {
+ url = "https://raw.githubusercontent.com/ofrohn/d3-celestial/d2e20e104b86429d90ac8227a5b021262b45d75a/data/constellations.lines.json";
+ sha256 = "0g71fdrnxvxd6pcqvihj2q9iaynrl7px45kzw6qm1kymynz6ckr9";
+ }} > constellations.arcs
+
+ xplanet --num_times 1 --geometry $xplanet_out_size \
+ --output xplanet-krebs-stars-output.png --projection merc \
+ -config ${pkgs.writeText "xplanet-krebs-stars.config" ''
+ [default]
+
+ arc_thickness=1
+ arc_file=constellations.arcs
+
+ [earth]
+ "Earth"
+ map=daymap-final.png
+ night_map=nightmap-final.png
+ cloud_map=clouds.png
+ cloud_threshold=1
+ cloud_gamma=10
+ marker_file=marker_file
+ shade=15
+ ''}
+
+ xplanet --num_times 1 --geometry $xplanet_out_size \
+ --latitude 52.520008 --longitude 13.404954 \
+ --output xplanet-krebs-stars-berlin-output.png --projection merc \
+ -config ${pkgs.writeText "xplanet-krebs-stars.config" ''
+ [default]
+
+ arc_thickness=1
+ arc_file=constellations.arcs
+
+ [earth]
+ "Earth"
+ map=daymap-final.png
+ night_map=nightmap-final.png
+ cloud_map=clouds.png
+ cloud_threshold=1
+ cloud_gamma=10
+ marker_file=marker_file
+ shade=15
+ ''}
+
# trim xplanet output
if needs_rebuild realwallpaper.png xplanet-output.png; then
convert xplanet-output.png -crop $out_geometry \
@@ -263,7 +324,6 @@ pkgs.writers.writeDashBin "generate-wallpaper" ''
mv realwallpaper-tmp.png realwallpaper.png
fi
- # trim xplanet output
if needs_rebuild realwallpaper-marker.png xplanet-marker-output.png; then
convert xplanet-marker-output.png -crop $out_geometry \
realwallpaper-marker-tmp.png
@@ -277,6 +337,18 @@ pkgs.writers.writeDashBin "generate-wallpaper" ''
mkdir -p archive
convert realwallpaper-krebs.png archive/"$(date -Is)".jpg
fi
+
+ if needs_rebuild realwallpaper-krebs-stars.png xplanet-krebs-stars-output.png; then
+ convert xplanet-krebs-stars-output.png -crop $out_geometry \
+ realwallpaper-krebs-stars-tmp.png
+ mv realwallpaper-krebs-stars-tmp.png realwallpaper-krebs-stars.png
+ fi
+
+ if needs_rebuild realwallpaper-krebs-stars-berlin.png xplanet-krebs-stars-berlin-output.png; then
+ convert xplanet-krebs-stars-berlin-output.png -crop $out_geometry \
+ realwallpaper-krebs-stars-berlin-tmp.png
+ mv realwallpaper-krebs-stars-berlin-tmp.png realwallpaper-krebs-stars-berlin.png
+ fi
}
main "$@"
diff --git a/krebs/5pkgs/simple/realwallpaper/get_constellations.py b/krebs/5pkgs/simple/realwallpaper/get_constellations.py
new file mode 100644
index 000000000..5d8d3df5d
--- /dev/null
+++ b/krebs/5pkgs/simple/realwallpaper/get_constellations.py
@@ -0,0 +1,36 @@
+from astropy.coordinates import SkyCoord, ITRS, representation
+from astropy.time import Time
+import json
+import sys
+
+
+def convert_to_itrs(coord):
+ c = SkyCoord(coord[0], coord[1], unit='degree', frame='icrs')
+ c_itrs = c.transform_to(ITRS(obstime=Time.now()))
+ rep = c_itrs.represent_as(representation.UnitSphericalRepresentation)
+ return [rep.lat.deg, rep.lon.deg]
+
+
+def points_to_lines(points):
+ lines = []
+ for x in range(len(points) - 1):
+ lines.append([points[x], points[x+1]])
+ return lines
+
+
+with open(sys.argv[1]) as f:
+ constellations = json.load(f)['features']
+
+output = []
+
+for const in constellations:
+ for line in const['geometry']['coordinates']:
+ transformed_line = []
+ for point in line:
+ transformed_line.append(convert_to_itrs(point))
+
+ line_combined = points_to_lines(transformed_line)
+ for l in line_combined: # noqa
+ output.append(f'{l[0][0]} {l[0][1]} {l[1][0]} {l[1][1]} # {const["id"]}') # noqa
+
+print('\n'.join(output))