···2233# TODO: maybe make this into a module or sth
44let
55- source = "git+https://tangled.org/did:plc:mlyxfgbugroxjmo7berpnowb/website3#website";
55+ source = "git+https://tangled.org/did:plc:mlyxfgbugroxjmo7berpnowb/website3#caddyfile";
66 dataDir = "/var/lib/website";
77 user = config.services.caddy.user;
88 group = config.services.caddy.group;
···1818 import bots
19192020 handle {
2121- # super secret sticker on my laptop
2222- # todo make actual nice link redirector service
2323- redir /l/hi0 /
2424-2525- root * ${dataDir}/current/var/www
2626- encode zstd gzip
2727- header {
2828- -Last-modified
2929- import ${dataDir}/etag
3030- }
3131- file_server
2121+ import ${dataDir}/current/etc/caddy/Caddyfile
3222 }
3323 '';
3424 };
···50405141 # atomically swap
5242 mv -T next current
5353- echo 'Etag "\"'"''${nextPath##*/}"'\""' > ${dataDir}/etag
5443 '';
5544 };
5645 in {
···6756 sudo -u ${user} -g ${group} \
6857 ${updater-unpriv}/bin/website-updater-unpriv
69587070- # reload bc etag changed
5959+ # reload because config changed
7160 systemctl is-active --quiet caddy.service &&
7261 systemctl reload --no-block caddy.service || true
7362 '';
7463 # --no-block because it seems systemd blocks
7564 # the reload until this service finishes...
7665 # so it deadlocks here if caddy is running
7777- # it's also fine because we only change Etag
7878- # which shouldn't have any syntax errors...
6666+ # it's also fine because we only change
6767+ # the config which should already be validated
6868+ # and formatted
7969 # so it's not really our problem if something
8070 # shits the bed
8171 serviceConfig = {