{ 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 = '' proxy_set_header Host $host; ''; }; }; services.nginx.virtualHosts."cloud.malobeo.org" = { forceSSL = true; enableACME= true; locations."/" = { proxyPass = "http://10.0.0.10"; extraConfig = '' proxy_set_header Host $host; ''; }; }; services.nginx.virtualHosts."status.malobeo.org" = { forceSSL = true; enableACME= true; locations."/" = { proxyPass = "http://10.0.0.12"; extraConfig = '' proxy_set_header Host $host; ''; }; }; services.nginx.virtualHosts."tasklist.malobeo.org" = { forceSSL = true; enableACME= true; locations."/".proxyPass = "http://${cfg.host_ip}:8080"; }; }; }