{ pkgs, ... }: let domain = "nettika.leaf.ninja"; root = "/srv/links"; webhookHandler = pkgs.writeScript "webhook-handler.py" '' #!${pkgs.python3}/bin/python3 import http.server import socketserver import subprocess import os class WebhookHandler(http.server.SimpleHTTPRequestHandler): def do_POST(self): os.chdir('${root}') subprocess.run(['${pkgs.git}/bin/git', 'pull'], check=True) self.send_response(200) self.end_headers() self.wfile.write(b'OK') with socketserver.TCPServer(("127.0.0.1", 8081), WebhookHandler) as httpd: httpd.serve_forever() ''; in { # systemd.services.links-webhook = { # wantedBy = [ "multi-user.target" ]; # after = [ "network.target" ]; # serviceConfig = { # Type = "simple"; # ExecStart = "${pkgs.python3}/bin/python3 ${webhookHandler}"; # Restart = "always"; # }; # }; services.caddy.virtualHosts.${domain}.extraConfig = '' root * ${root} file_server ''; }