Files
homelab/hosts/mercury/configuration.nix
T

52 lines
2.0 KiB
Nix

{ config, pkgs, lib, ... }:
# mercury — Raspberry Pi 3B+ (aarch64). Network DNS + DHCP (+ adblock).
# Boots from an SD image (see flake: nixosConfigurations.mercury), so there is
# no disko / hardware-configuration here — the sd-image module provides them.
{
imports = [
../../common.nix # shared base: user / ssh / nix / firewall
../../services/unbound.nix # local recursive resolver (127.0.0.1:5335)
# ../../services/<dns>.nix # add once the adblock DNS engine is chosen (below)
];
networking.hostName = "mercury";
# ---- Static networking ----
# A DNS/DHCP server must have a fixed address. Fill in the Pi's real values
# (from `ip -brief a` / `ip route` on the running Pi). eth0 = the Pi's NIC.
networking.useDHCP = false;
networking.usePredictableInterfaceNames = false; # keep it named eth0
networking.interfaces.eth0.ipv4.addresses = [
{ address = "10.0.0.10"; prefixLength = 24; } # the Pi's current IP
];
# VERIFY with `ip route` on the Pi — assuming the router is .1.
networking.defaultGateway = { address = "10.0.0.1"; interface = "eth0"; };
# Upstream resolvers for the box itself (the adblock DNS forwards to these).
networking.nameservers = [ "1.1.1.1" "9.9.9.9" ];
# ---- DNS + adblock + DHCP — pick ONE, then open its ports below ----
#
# Option A: pihole (native module)
# services.pihole-ftl = {
# enable = true;
# # dhcp, lists, upstreams, local records...
# };
#
# Option B: AdGuard Home (native module, fully declarative)
# services.adguardhome = {
# enable = true;
# settings = {
# dns.upstream_dns = [ "1.1.1.1" "9.9.9.9" ];
# # filters (adlists), rewrites (local DNS), dhcp static leases...
# };
# };
#
# Then open the ports this service needs:
# networking.firewall.allowedTCPPorts = [ 53 80 ]; # DNS + web UI
# networking.firewall.allowedUDPPorts = [ 53 67 ]; # DNS + DHCP
# Do not modify after first flash.
system.stateVersion = "26.05";
}