diff --git a/hosts/pbx/services/fieldpoc/extensions.nix b/hosts/pbx/services/fieldpoc/extensions.nix index bf28d01..160b7f5 100644 --- a/hosts/pbx/services/fieldpoc/extensions.nix +++ b/hosts/pbx/services/fieldpoc/extensions.nix @@ -1,4 +1,9 @@ -{pkgs, ...}: let +{ + lib, + pkgs, + ... +}: let + domain = "tel.weinturm.de"; mkphonebook = pkgs.python3.pkgs.buildPythonPackage { pname = "fieldpoc-mkphonebook"; version = "1.0"; @@ -21,6 +26,45 @@ --set PYTHONPATH "${pkgs.python3.pkgs.pyyaml}/${pkgs.python3.sitePackages}" ''; }; + webmanifest = lib.generators.toJSON {} { + name = "Weinturm"; + short_name = "Telefonbuch"; + icons = [ + { + src = "/web-app-manifest-192x192.png"; + sizes = "192x192"; + type = "image/png"; + purpose = "maskable"; + } + { + src = "/web-app-manifest-512x512.png"; + sizes = "512x512"; + type = "image/png"; + purpose = "maskable"; + } + ]; + theme_color = "#ffffff"; + background_color = "#300a8d"; + display = "standalone"; + }; + webmanifestFile = pkgs.writeText "site.webmanifest" webmanifest; + webroot = pkgs.stdenvNoCC.mkDerivation { + name = "webroot-${domain}"; + src = ./html; + dontBuild = true; + installPhase = '' + export PATH="$PATH:${pkgs.lib.makeBinPath [pkgs.imagemagick]}" + mkdir $out + cp "$src/favicon.svg" "$out/favicon.svg" + convert -background transparent "$src/favicon.svg" -define icon:auto-resize=16,24,32,48,64,72,96,128,256 "$out/favicon.ico" + convert -background transparent "$src/favicon.svg" -resize 180x180 "$out/apple-touch-icon.png" + convert -background transparent "$src/favicon.svg" -resize 96x96 "$out/favicon-96x96.png" + convert -background transparent "$src/favicon.svg" -resize 192x192 "$out/web-app-manifest-192x192.png" + convert -background transparent "$src/favicon.svg" -resize 512x512 "$out/web-app-manifest-512x512.png" + cp "${webmanifestFile}" "$out/site.webmanifest" + ln -s /persist/html/index.html "$out/index.html" + ''; + }; in { environment.systemPackages = [ ( @@ -44,4 +88,13 @@ in { '' ) ]; + + services.nginx.virtualHosts = { + "${domain}" = { + serverAliases = ["tel.weinturm-open-air.de"]; + enableACME = true; + forceSSL = true; + root = webroot; + }; + }; } diff --git a/hosts/pbx/services/fieldpoc/html/favicon.svg b/hosts/pbx/services/fieldpoc/html/favicon.svg new file mode 100644 index 0000000..4ed0da0 --- /dev/null +++ b/hosts/pbx/services/fieldpoc/html/favicon.svg @@ -0,0 +1,162 @@ + + diff --git a/hosts/pbx/services/fieldpoc/mkphonebook.py b/hosts/pbx/services/fieldpoc/mkphonebook.py index 94221bf..5deff0b 100644 --- a/hosts/pbx/services/fieldpoc/mkphonebook.py +++ b/hosts/pbx/services/fieldpoc/mkphonebook.py @@ -35,6 +35,12 @@ def generate_html(extensions):