diff options
| author | Linnea Gräf <nea@nea.moe> | 2024-12-13 02:34:55 +0100 |
|---|---|---|
| committer | Linnea Gräf <nea@nea.moe> | 2024-12-13 02:34:55 +0100 |
| commit | 9f5acfd0f7bda5d9de15d3eca01c7d2f1eafc52e (patch) | |
| tree | 1689bb2aa1b34abc2d8fe510c94c88083d9f37df /modules | |
| parent | 619b53b519d11afa8c2e3270c691420ac3d0927a (diff) | |
| download | nix-infra-9f5acfd0f7bda5d9de15d3eca01c7d2f1eafc52e.tar.gz nix-infra-9f5acfd0f7bda5d9de15d3eca01c7d2f1eafc52e.tar.bz2 nix-infra-9f5acfd0f7bda5d9de15d3eca01c7d2f1eafc52e.zip | |
Add caddy
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/caddy.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/modules/caddy.nix b/modules/caddy.nix new file mode 100644 index 0000000..b8711c6 --- /dev/null +++ b/modules/caddy.nix @@ -0,0 +1,49 @@ +{ + lib, + pkgs, + config, + ... +}: +with lib; +let + cfg = config.services.neaCaddy; +in +{ + options.services.neaCaddy = { + enable = mkEnableOption "Custom Caddy Service"; + baseUrl = mkOption { + type = types.str; + description = "The default domain under which all service subdomains get registered"; + example = "nea.moe"; + }; + reverseProxy = mkOption { + type = types.attrsOf ( + types.submodule { + port = mkOption { + type = int; + description = "The local port of the reverse proxied service"; + }; + } + ); + description = "List of reverse proxy hosts to enable"; + }; + + }; + config = mkIf cfg.enable { + services.caddy = ( + { + enable = true; + } + // ({ + virtualHosts = attrsets.mapAttrs' ( + name: value: + attrsets.nameValuePair (name + "." + cfg.baseUrl) { + extraConfig = '' + reverse_proxy http://localhost:${value.port}/ + ''; + } + ) cfg.reverseProxy; + }) + ); + }; +} |
