mirror of
https://git.sr.ht/~roxwize/.dotfiles
synced 2025-03-13 16:03:25 +00:00
48 lines
No EOL
1.2 KiB
Nix
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);
|
|
};
|
|
}
|
|
]);
|
|
} |