{ services.caddy.virtualHosts."chandlerswift.com".extraConfig = '' encode zstd gzip file_server root * /srv/www/chandlerswift.com # hide .git # ??? @html_redirect { file {path}.html not path *.html } redir @html_redirect {path}.html 301 redir /.well-known/host-meta* https://social.chandlerswift.com{uri} permanent redir /.well-known/webfinger* https://social.chandlerswift.com{uri} permanent redir /.well-known/nodeinfo* https://social.chandlerswift.com{uri} permanent handle_errors { respond "{err.status_code} {err.status_text}" } ''; services.caddy.virtualHosts."blog.chandlerswift.com".extraConfig = '' redir /2018/auto-timed-fish-tank-light/ https://chandlerswift.com/projects/fish-tank-light.html permanent redir /2018/using-a-5-25-floppy-as-a-midi-instrument/ https://chandlerswift.com/projects/midi-floppy.html permanent redir /2017/building-a-midi-pedalboard/ https://chandlerswift.com/projects/midi-pedalboard.html permanent redir /2017/esp8266-light-switch-a-few-revisions/ https://chandlerswift.com/projects/light-switch.html permanent redir /2016/new-relic-and-appfog-2/ https://chandlerswift.com/2016/02/18/new-relic-appfog-v2.html permanent redir /2015/piano-heatmap-analysis-part-1/ https://chandlerswift.com/2015/09/10/piano-heatmap-part-1.html permanent redir /2015/solving-windows-update-error-8024402f/ https://chandlerswift.com/2015/08/31/solving-8024402F.html permanent redir /2015/enable-hotspot-rooted-s6/ https://chandlerswift.com/2015/08/30/enabling-s6-hotspot.html permanent redir /* https://chandlerswift.com/ handle_errors { respond "{err.status_code} {err.status_text}" } ''; services.caddy.virtualHosts."www.chandlerswift.com".extraConfig = "redir https://chandlerswift.com{uri}"; systemd.tmpfiles.settings."10-chandlerswift-com" = { "/srv/www/chandlerswift.com" = { d = {}; }; }; }