{ lib, config, inputs, pkgs, ... }: let nyazoom = inputs.nyazoom.packages.${pkgs.system}.default; cfg = config.permafrost.nyazoom; ACMEEnabled = config.permafrost.acme.enable; in { options.permafrost.nyazoom = { enable = lib.mkEnableOption "permafrost nixos module"; }; config = lib.mkIf cfg.enable { systemd.services.nyazoom = { script = /* bash */'' export DATABASE_URL="sqlite:///var/lib/nyazoom/data" export DIST_DIR="${nyazoom}/dist" ${lib.getExe nyazoom} ''; wantedBy = [ "network.target" ]; wants = [ "network.target" ]; }; permafrost.nginx.enable = lib.mkDefault true; permafrost.acme.certDomains = lib.mkIf ACMEEnabled [ "nyazoom.zynh.me" ]; services.nginx.virtualHosts."nyazoom.zynh.me" = { serverName = "nyazoom.zynh.me"; forceSSL = lib.mkIf ACMEEnabled true; useACMEHost = lib.mkIf ACMEEnabled "permafrost"; locations."/" = { proxyPass = "http://localhost:3000"; extraConfig = /* nginx */ '' proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; client_max_body_size 11G; ''; }; }; }; }