# I don’t do this, because I want to. # I think I might have to do this because of § 8.2 of Hetzner’s ToS. { config, lib, ... }: let serviceBlocks = { nitter = [ { path = "/ks1v/status/1439866313476689924"; report = "2023-04-21-Hetzner-C591581F-ROSKOMNADZOR.txt"; } ]; iv = [ { video = "NR57D2UVqm4"; report = "2023-04-28-Hetzner-C633C02D-ROSKOMNADZOR.txt"; } ]; libreddit = [ ]; }; in { services.nginx.virtualHosts = lib.mapAttrs' (domain: blocks: lib.nameValuePair "${domain}.sbruder.xyz" { locations = lib.listToAttrs (map (block: let # workaround for nginx dropping parent headers # see https://github.com/yandex/gixy/blob/master/docs/en/plugins/addheaderredefinition.md parentHeaders = lib.concatStringsSep "\n" (lib.filter (lib.hasPrefix "add_header ") (lib.splitString "\n" config.services.nginx.commonHttpConfig)); transparency_url = "https://sbruder.xyz/transparency/${block.report}"; return_statement = '' ${parentHeaders} add_header Link "<${transparency_url}>; rel=blocked-by" always; add_header Content-Type text/html always; return 451 '