<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nixos.wiki/index.php?action=history&amp;feed=atom&amp;title=Pi-hole</id>
	<title>Pi-hole - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://nixos.wiki/index.php?action=history&amp;feed=atom&amp;title=Pi-hole"/>
	<link rel="alternate" type="text/html" href="https://nixos.wiki/index.php?title=Pi-hole&amp;action=history"/>
	<updated>2026-06-04T04:42:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://nixos.wiki/index.php?title=Pi-hole&amp;diff=14501&amp;oldid=prev</id>
		<title>Jkotran: Corrected booleans</title>
		<link rel="alternate" type="text/html" href="https://nixos.wiki/index.php?title=Pi-hole&amp;diff=14501&amp;oldid=prev"/>
		<updated>2026-05-28T03:44:24Z</updated>

		<summary type="html">&lt;p&gt;Corrected booleans&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:44, 28 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l154&quot;&gt;Line 154:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 154:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       settings = {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       settings = {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         Resolve = {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         Resolve = {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           DNSStubListener = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;no&quot;&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           DNSStubListener = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;false&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           MulticastDNS = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;no&quot;&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           MulticastDNS = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;false&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         };&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         };&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       };&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       };&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jkotran</name></author>
	</entry>
	<entry>
		<id>https://nixos.wiki/index.php?title=Pi-hole&amp;diff=14500&amp;oldid=prev</id>
		<title>Jkotran: Corrected MulticastDNS boolean</title>
		<link rel="alternate" type="text/html" href="https://nixos.wiki/index.php?title=Pi-hole&amp;diff=14500&amp;oldid=prev"/>
		<updated>2026-05-28T03:41:31Z</updated>

		<summary type="html">&lt;p&gt;Corrected MulticastDNS boolean&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:41, 28 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l155&quot;&gt;Line 155:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 155:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         Resolve = {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         Resolve = {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           DNSStubListener = &amp;quot;no&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           DNSStubListener = &amp;quot;no&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           MulticastDNS = &quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;off&lt;/del&gt;&quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           MulticastDNS = &quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;no&lt;/ins&gt;&quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         };&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         };&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       };&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       };&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jkotran</name></author>
	</entry>
	<entry>
		<id>https://nixos.wiki/index.php?title=Pi-hole&amp;diff=14499&amp;oldid=prev</id>
		<title>Jkotran: Updated services.resolved for NixOS 26.05 Yarara syntax.</title>
		<link rel="alternate" type="text/html" href="https://nixos.wiki/index.php?title=Pi-hole&amp;diff=14499&amp;oldid=prev"/>
		<updated>2026-05-28T03:39:43Z</updated>

		<summary type="html">&lt;p&gt;Updated services.resolved for NixOS 26.05 Yarara syntax.&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:39, 28 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Presumptions&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Presumptions&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* NixOS &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;25&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;11 xantusia &lt;/del&gt;(or newer)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* NixOS &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;26&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;05 Yarara &lt;/ins&gt;(or newer)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Classic channels configuration&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Classic channels configuration&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Personal home network&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Personal home network&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l152&quot;&gt;Line 152:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 152:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     resolved = {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     resolved = {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;extraConfig &lt;/del&gt;= &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;settings &lt;/ins&gt;= &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         DNSStubListener=no&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Resolve = {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/del&gt;MulticastDNS=off&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          &lt;/ins&gt;DNSStubListener = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/ins&gt;no&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          &lt;/ins&gt;MulticastDNS = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/ins&gt;off&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        };&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     };&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     };&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   };&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   };&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jkotran</name></author>
	</entry>
	<entry>
		<id>https://nixos.wiki/index.php?title=Pi-hole&amp;diff=14351&amp;oldid=prev</id>
		<title>Jkotran: Initial commit</title>
		<link rel="alternate" type="text/html" href="https://nixos.wiki/index.php?title=Pi-hole&amp;diff=14351&amp;oldid=prev"/>
		<updated>2025-12-18T22:47:45Z</updated>

		<summary type="html">&lt;p&gt;Initial commit&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Pi-hole is software that blocks ads and trackers across your entire network.&lt;br /&gt;
&lt;br /&gt;
It provides a mature, trusted, integrated service that includes a web interface, DHCP server, and DNS server.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Presumptions&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* NixOS 25.11 xantusia (or newer)&lt;br /&gt;
* Classic channels configuration&lt;br /&gt;
* Personal home network&lt;br /&gt;
* IPv4&lt;br /&gt;
* Homelab skills&lt;br /&gt;
* Patient users while you tinker and stabilize&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Please extrapolate for other NixOS versions, configurations, flakes, et cetera.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;basic-setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create /etc/nixos/pi-hole.nix and add the following. Replace &amp;#039;&amp;#039;homelab.me&amp;#039;&amp;#039; and the IPs with your own DNS domain and network addresses. If you don’t have a DNS domain, you can create your own. No fee or registration is required. It’s private to your network.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nix&amp;quot;&amp;gt;#&lt;br /&gt;
# pi-hole.nix&lt;br /&gt;
#&lt;br /&gt;
# Notes&lt;br /&gt;
# - Pi-hole doesn&amp;#039;t have a mechanism to manage Groups, Clients, or&lt;br /&gt;
#   Domains. Use the web gui.&lt;br /&gt;
#   - https://docs.pi-hole.net/group_management/example/&lt;br /&gt;
#&lt;br /&gt;
{lib, ...}: {&lt;br /&gt;
  #&lt;br /&gt;
  # Networking&lt;br /&gt;
  #&lt;br /&gt;
  # Essential infrastructure&lt;br /&gt;
  # - List your most essential network resources here&lt;br /&gt;
  networking = {&lt;br /&gt;
    hosts = {&lt;br /&gt;
      &amp;quot;192.168.33.1&amp;quot; = [&amp;quot;gateway.homelab.me&amp;quot; &amp;quot;gateway&amp;quot;];&lt;br /&gt;
      &amp;quot;192.168.33.2&amp;quot; = [&amp;quot;pi-hole.homelab.me&amp;quot; &amp;quot;pi-hole&amp;quot;];&lt;br /&gt;
      &amp;quot;192.168.33.15&amp;quot; = [&amp;quot;nas.homelab.me&amp;quot; &amp;quot;nas&amp;quot;];&lt;br /&gt;
    };&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # Services&lt;br /&gt;
  #&lt;br /&gt;
  services = {&lt;br /&gt;
    # I&amp;#039;m not actually using the dnsmasq service. Pi-hole provides&lt;br /&gt;
    # it&amp;#039;s own dnsmasq. I&amp;#039;m using Nix&amp;#039; ability to manage the&lt;br /&gt;
    # dnsmasq-style configuration file that Pi-hole utilizes.&lt;br /&gt;
    dnsmasq = {&lt;br /&gt;
      enable = false;&lt;br /&gt;
      settings = {&lt;br /&gt;
        address = [&lt;br /&gt;
          &amp;quot;/feelinsonice-hrd.appspot.com/ # Block Snapchat&amp;quot;&lt;br /&gt;
          &amp;quot;/feelinsonice.appspot.com/ # Block Snapchat&amp;quot;&lt;br /&gt;
          &amp;quot;/snapchat.com/ # Block Snapchat&amp;quot;&lt;br /&gt;
        ];&lt;br /&gt;
        dhcp-name-match = [&lt;br /&gt;
          &amp;quot;set:hostname-ignore,wpad&amp;quot;&lt;br /&gt;
          &amp;quot;set:hostname-ignore,localhost&amp;quot;&lt;br /&gt;
        ];&lt;br /&gt;
        # Set DHCP option 6 to the DNS server you nodes should use.&lt;br /&gt;
        dhcp-option = [&lt;br /&gt;
          &amp;quot;vendor:MSFT,2,1i&amp;quot;&lt;br /&gt;
          &amp;quot;6,192.168.33.2&amp;quot;&lt;br /&gt;
        ];&lt;br /&gt;
        domain = [&lt;br /&gt;
          &amp;quot;homelab.me,192.168.33.0/24,local&amp;quot;&lt;br /&gt;
        ];&lt;br /&gt;
      };&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    pihole-ftl = {&lt;br /&gt;
      enable = true;&lt;br /&gt;
      lists = [&lt;br /&gt;
        {&lt;br /&gt;
          url = &amp;quot;https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts&amp;quot;;&lt;br /&gt;
          type = &amp;quot;block&amp;quot;;&lt;br /&gt;
          enabled = true;&lt;br /&gt;
          description = &amp;quot;Steven Black&amp;#039;s HOSTS&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
      ];&lt;br /&gt;
      openFirewallDNS = true;&lt;br /&gt;
      openFirewallDHCP = true;&lt;br /&gt;
      openFirewallWebserver = true;&lt;br /&gt;
      queryLogDeleter.enable = true;&lt;br /&gt;
      settings = {&lt;br /&gt;
        dhcp = {&lt;br /&gt;
          active = false; # &amp;lt;-- SET TO TRUE ONLY WHEN YOU&amp;#039;RE READY!&lt;br /&gt;
          end = &amp;quot;192.168.33.254&amp;quot;;&lt;br /&gt;
          hosts = [&lt;br /&gt;
            &amp;quot;00:00:5e:00:53:01,192.168.33.22,jane-laptop&amp;quot;&lt;br /&gt;
            &amp;quot;00:00:5e:00:53:ab,bill-desktop&amp;quot;&lt;br /&gt;
            &amp;quot;00:00:5e:00:53:ff,office-printer&amp;quot;&lt;br /&gt;
          ];&lt;br /&gt;
          ipv6 = false;&lt;br /&gt;
          leaseTime = &amp;quot;24h&amp;quot;;&lt;br /&gt;
          start = &amp;quot;192.168.33.61&amp;quot;;&lt;br /&gt;
          rapidCommit = true;&lt;br /&gt;
          resolver = {&lt;br /&gt;
            resolveIPv6 = false;&lt;br /&gt;
          };&lt;br /&gt;
          router = &amp;quot;192.168.33.1&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        # misc.readOnly = false;&lt;br /&gt;
        dns = {&lt;br /&gt;
          cnameRecords = [&lt;br /&gt;
            &amp;quot;color-printer,office-printer&amp;quot;&lt;br /&gt;
            &amp;quot;color-printer.homelab.me,office-printer.homelab.me&amp;quot;&lt;br /&gt;
          ];&lt;br /&gt;
          domain = &amp;quot;homelab.me&amp;quot;;&lt;br /&gt;
          domainNeeded = true;&lt;br /&gt;
          expandHosts = true;&lt;br /&gt;
          interface = &amp;quot;eth0&amp;quot;;&lt;br /&gt;
          hosts = [&lt;br /&gt;
            &amp;quot;192.168.33.1   gateway&amp;quot;&lt;br /&gt;
            &amp;quot;192.168.33.2   pi-hole&amp;quot;&lt;br /&gt;
            &amp;quot;192.168.33.15  nas&amp;quot;&lt;br /&gt;
          ];&lt;br /&gt;
          upstreams = [&amp;quot;1.1.1.1&amp;quot; &amp;quot;1.1.1.2&amp;quot;];&lt;br /&gt;
        };&lt;br /&gt;
        # Let&amp;#039;s not use Pi-hole time service. My home router provides clock.&lt;br /&gt;
        ntp = {&lt;br /&gt;
          ipv4.active = false;&lt;br /&gt;
          ipv6.active = false;&lt;br /&gt;
          sync.active = false;&lt;br /&gt;
        };&lt;br /&gt;
        webserver = {&lt;br /&gt;
          api = {&lt;br /&gt;
            # To manage the web login:&lt;br /&gt;
            # 1) Temporarily set misc.readOnly to false in&lt;br /&gt;
            #    configuration.nix and switch to it.&lt;br /&gt;
            # 2) Manually set a password:&lt;br /&gt;
            #    Pi-hole web console &amp;gt; Settings &amp;gt; All settings &amp;gt;&lt;br /&gt;
            #    Webserver and API &amp;gt; webserver.api.password &amp;gt; Value: ******&lt;br /&gt;
            # 3) Read the generated hash:&lt;br /&gt;
            #    sudo pihole-FTL --config webserver.api.pwhash&lt;br /&gt;
            pwhash = &amp;quot;$BALLOON-SHA256...&amp;quot;;&lt;br /&gt;
          };&lt;br /&gt;
          session = {&lt;br /&gt;
            timeout = 43200; # 12h&lt;br /&gt;
          };&lt;br /&gt;
        };&lt;br /&gt;
      };&lt;br /&gt;
      useDnsmasqConfig = true;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    pihole-web = {&lt;br /&gt;
      enable = true;&lt;br /&gt;
      ports = [80];&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    resolved = {&lt;br /&gt;
      extraConfig = &amp;#039;&amp;#039;&lt;br /&gt;
        DNSStubListener=no&lt;br /&gt;
        MulticastDNS=off&lt;br /&gt;
      &amp;#039;&amp;#039;;&lt;br /&gt;
    };&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # System&lt;br /&gt;
  #&lt;br /&gt;
  system.activationScripts = {&lt;br /&gt;
    print-pi-hole = {&lt;br /&gt;
      text = builtins.trace &amp;quot;building the pi-hole configuration...&amp;quot; &amp;quot;&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # Systemd&lt;br /&gt;
  #&lt;br /&gt;
  # The following silences a benign FTL.log warning:&lt;br /&gt;
  # WARNING API: Failed to read /etc/pihole/versions (key: internal_error)&lt;br /&gt;
  systemd.tmpfiles.rules = [&lt;br /&gt;
    # Type Path Mode User Group Age Argument&lt;br /&gt;
    &amp;quot;f /etc/pihole/versions 0644 pihole pihole - -&amp;quot;&lt;br /&gt;
  ];&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Update your configuration.nix to import ./pi-hole.nix&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nix&amp;quot;&amp;gt;  imports =&lt;br /&gt;
    [&lt;br /&gt;
      ./hardware-configuration.nix&lt;br /&gt;
      ./pi-hole.nix&lt;br /&gt;
    ]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;nixos-switch rebuild --upgrade&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;This command presumes that you are using classic NixOS channels and not an experimental flakes configuration.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;This command will freshen all installed packages and configuration settings.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Browse to your new Pi-Hole service to review it and learn more.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Example: http://192.168.33.2&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Avoid making settings in the GUI. Most are managed via configuration.nix, except for Group Management: Groups, Clients, and Domains. You can also temporarily disable ad/tracking blocking in the web GUI.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;commentary&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Commentary ==&lt;br /&gt;
&lt;br /&gt;
I’ve been running Pi-hole for at least three years. It’s a gem of a service that markedly improves your web browsing experience.&lt;br /&gt;
&lt;br /&gt;
It was my last non-NixOS homelab service. I’m pleased that 25.11 xantusia now supports it. Please consider donating to NixOS and Pi-hole. They provide value to the public and would appreciate you reciprocating.&lt;br /&gt;
&lt;br /&gt;
https://nixos.org/donate/&lt;br /&gt;
&lt;br /&gt;
https://pi-hole.net/donate/&lt;br /&gt;
&lt;br /&gt;
I’ve had almost no problems or negative feedback, with one notable exception. When family was applying for jobs online, I had to temporarily disable ad/tracker blocking via Pi-hole &amp;amp;gt; DNS Control &amp;amp;gt; Disable Blocking. I was irked to learn that mainstream companies utilize ads/trackers when submitting a resume. I’m not talking about sites like LinkedIn, which works fine. I’m talking about the employers themselves.&lt;br /&gt;
&lt;br /&gt;
I host my NixOS Pi-hole in a lightweight LXC. I use two of them and a service called Keepalived to reduce the risk of an outage.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cookbook]]&lt;/div&gt;</summary>
		<author><name>Jkotran</name></author>
	</entry>
</feed>