{ ... }: { services.nginx.virtualHosts = { "ping.clerie.de" = { enableACME = true; addSSL = true; locations."= /" = { return = ''200 "This domain is used for connectivity checking and captive portal detection\n"''; extraConfig = '' types { } default_type "text/plain; charset=utf-8"; ''; }; locations."= /nm-check.txt" = { return = ''200 "NetworkManager is online\n"''; extraConfig = '' types { } default_type "text_plain; charset=utf-8"; add_header Cache-Control "max-age=0, must-revalidate"; ''; }; # Provide an endpoint to simulate a captive portal redirect for testing locations."= /nm-check-test.txt" = { return = ''302 "http://clerie.de"''; extraConfig = '' types { } default_type "text_plain; charset=utf-8"; add_header Cache-Control "max-age=0, must-revalidate"; ''; }; locations."/" = { return = ''404''; }; extraConfig = '' access_log off; ''; }; }; }