1
0
Fork 0
mirror of https://git.sr.ht/~roxwize/.dotfiles synced 2025-03-13 16:03:25 +00:00
.dotfiles/nixos/docker/pihole/default.nix
2025-03-08 22:11:17 -05:00

48 lines
No EOL
1.2 KiB
Nix

{ pkgs, lib, config, ... }: let
cfg = config.r5e.containers.pihole;
in with lib; {
options.r5e.containers.pihole = {
enable = mkEnableOption "Pi-hole";
openFirewall = mkOption {
type = types.bool;
default = false;
};
listenPortHTTP = mkOption {
type = types.int;
default = 80;
};
listenPortHTTPS = mkOption {
type = types.int;
default = 443;
};
api-password = mkOption {
type = types.str;
default = "";
};
dhcp = {
enable = mkEnableOption "the Pi-hole DHCP server";
};
};
config = mkIf cfg.enable (mkMerge [
(import ./docker-compose.nix { inherit pkgs lib; })
{
virtualisation.oci-containers.containers.pihole = {
environment = {
TZ = config.time.timeZone;
FTLCONF_webserver_api_password = mkIf (cfg.api-password != "") cfg.api-password;
};
ports = [
(builtins.toString cfg.listenPortHTTP + ":80/tcp")
(builtins.toString cfg.listenPortHTTPS + ":443/tcp")
] ++ (optional cfg.dhcp.enable "67:67/udp");
};
networking.firewall = mkIf cfg.openFirewall {
allowedTCPPorts = [ 53 cfg.listenPortHTTP cfg.listenPortHTTPS ];
allowedUDPPorts = [ 53 ] ++ (optional cfg.dhcp.enable 67);
};
}
]);
}