nix-dotfiles/nixosModules/services/caddy/service.nix
2025-09-16 18:45:24 -07:00

32 lines
851 B
Nix

{ config, pkgs, lib, ... }:
{
options.caddy = {
enable = lib.mkEnableOption "Enables caddy webserver";
vhosts = lib.mkOption {};
adminEmail = lib.mkOption { type = lib.types.str; };
environmentFile = lib.mkOption {};
};
config = lib.mkIf config.caddy.enable {
networking.firewall.allowedTCPPorts = [ 80 443 ];
services.caddy = {
enable = true;
globalConfig = ''
acme_dns porkbun {
api_key {$APIKEY}
api_secret_key {$APISECRETKEY}
}
'';
package = pkgs.caddy.withPlugins {
plugins = [ "github.com/caddy-dns/porkbun@0.3.1" ];
hash = "";
};
virtualHosts = config.caddy.vhosts;
email = config.caddy.adminEmail;
};
systemd.services.caddy.serviceConfig.EnvironmentFile = [
config.caddy.environmentFile
];
};
}