{ config, lib, options, pkgs, ... }: with lib; let cfg = config.services.malobeo; in { options = { services.malobeo = { enable = mkOption { default = false; type = types.bool; description = lib.mdDoc "Enable malobeo infrastructure."; }; host_ip = mkOption { type = types.str; default = ""; description = lib.mdDoc "ip of nix container provided for malo"; }; }; }; config = mkIf cfg.enable { assertions = [ { assertion = cfg.host_ip != ""; message = '' You need to specify host_ip of the nix container ''; } ]; services.nginx.virtualHosts."docs.malobeo.org" = { forceSSL = true; enableACME= true; locations."/" = { proxyPass = "http://10.0.0.10"; extraConfig = '' ''; }; }; services.nginx.virtualHosts."cloud.malobeo.org" = { forceSSL = true; enableACME= true; locations."/" = { proxyPass = "http://10.0.0.10"; extraConfig = '' client_max_body_size 10G; client_body_timeout 3600s; send_timeout 3600s; fastcgi_buffers 64 4K; ''; }; }; services.nginx.virtualHosts."grafana.malobeo.org" = { forceSSL = true; enableACME= true; locations."/" = { proxyPass = "http://10.0.0.10"; extraConfig = '' ''; }; }; services.nginx.virtualHosts."tasklist.malobeo.org" = { forceSSL = true; enableACME= true; locations."/" = { proxyPass = "http://10.0.0.10"; extraConfig = '' ''; }; }; services.nginx.virtualHosts."zines.malobeo.org" = { forceSSL = true; enableACME= true; locations."/" = { proxyPass = "http://10.0.0.10"; extraConfig = '' client_body_in_file_only clean; client_body_buffer_size 32K; client_max_body_size 50M; sendfile on; send_timeout 300s; ''; }; }; services.nginx.virtualHosts."status.malobeo.org" = { forceSSL = true; enableACME= true; locations."/" = { proxyPass = "http://10.0.0.12"; extraConfig = '' ''; }; }; }; }