{ config, pkgs, lib, mkDomain, allSubdomains, ... }: let # TODO: support fully qualified urls as well customDescriptions = rec { index = "This page"; "links.pbsds.net" = "Linktree"; "i.kuklef.se" = pkgs.microbin.meta.description; www = "wwwwwwwwwwwwwww"; ${config.networking.fqdn} = www; refleksjon = "My dad is a cheapskate"; roroslyd = "My dad is a cheapskate"; docs = "Various documentation"; element = pkgs.element-web.meta.description; shlink = "Url shortener"; head = pkgs.headscale.meta.description; }; in { # list of other endpoints hosted with nginx # it assumes the owest subdomain equals a package name in pkgs or python3.pkgs. services.nginx.virtualHosts.${mkDomain "index"} = { forceSSL = true; # addSSL = true; enableACME = true; #useACMEHost = acmeDomain; root = with lib; let getName = domain: head (lib.splitString "." domain); getDomain = domain: concatStringsSep "." (tail (lib.splitString "." domain)); getDesc = domain: let name = getName domain; in if lib.hasAttr domain customDescriptions then customDescriptions.${domain} else if lib.hasAttr name customDescriptions then customDescriptions.${name} else if lib.hasAttr name pkgs then pkgs.${name}.meta.description else if lib.hasAttr name pkgs.python3Packages then pkgs.python3Packages.${name}.meta.description else if lib.hasAttrByPath [name "package"] config.services then config.services.${name}.package.meta.description else ""; mkRow = domain: ''
url | description ${lib.concatStringsSep "\n" (map mkRow allSubdomains)} |
---|