update:
This commit is contained in:
parent
1a4c1f182d
commit
05565f5465
2 changed files with 74 additions and 70 deletions
|
|
@ -27,79 +27,83 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, linger, pihole, ... }:
|
outputs = {
|
||||||
let
|
self,
|
||||||
system = "x86_64-linux";
|
nixpkgs,
|
||||||
# use x86_64 packages from nixpkgs
|
linger,
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pihole,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
# use x86_64 packages from nixpkgs
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in {
|
||||||
|
nixosConfigurations."nixos-example-system" = nixpkgs.lib.nixosSystem {
|
||||||
|
# nixosSystem needs to know the system architecture
|
||||||
|
inherit system;
|
||||||
|
modules = [
|
||||||
|
# a small module for enabling nix flakes
|
||||||
|
({...}: {
|
||||||
|
nix = {
|
||||||
|
packge = pkgs.nixFlakes;
|
||||||
|
extraOptions = "experimental-features = nix-command flake";
|
||||||
|
|
||||||
in {
|
# Opinionated: use system flake's (locked) `nixpkgs` as default `nixpkgs` for flake commands
|
||||||
nixosConfigurations."nixos-example-system" = nixpkgs.lib.nixosSystem {
|
# see https://dataswamp.org/~solene/2022-07-20-nixos-flakes-command-sync-with-system.html
|
||||||
# nixosSystem needs to know the system architecture
|
registry.nixpkgs.flake = nixpkgs;
|
||||||
inherit system;
|
};
|
||||||
modules = [
|
})
|
||||||
# a small module for enabling nix flakes
|
|
||||||
{ ... }: {
|
|
||||||
nix = {
|
|
||||||
packge = pkgs.nixFlakes;
|
|
||||||
extraOptions = "experimental-features = nix-command flake";
|
|
||||||
|
|
||||||
# Opinionated: use system flake's (locked) `nixpkgs` as default `nixpkgs` for flake commands
|
# some existing system & hardware configuration modules; it is assumed that a user named `pihole` is defined here
|
||||||
# see https://dataswamp.org/~solene/2022-07-20-nixos-flakes-command-sync-with-system.html
|
# and that the user has sub-uids/gids configured (e.g. via the `users.users.pihole.subUidRanges/subGidRanges` options)
|
||||||
registry.nixpkgs.flake = nixpkgs;
|
./configuration.nix
|
||||||
|
./hardware.nix
|
||||||
|
|
||||||
|
# make the module declared by the linger flake available to our config
|
||||||
|
linger.nixosModules.${system}.default
|
||||||
|
pihole.nixosModules.${system}.default
|
||||||
|
|
||||||
|
# in another module we can now configure the lingering behaviour (could also be part of ./configuration.nix)
|
||||||
|
({...}: {
|
||||||
|
# required for stable restarts of the Pi-hole container (try to remove it to see the warning from the pihole-flake)
|
||||||
|
boot.cleanTmpDir = true;
|
||||||
|
|
||||||
|
# the Pi-hole service configuration
|
||||||
|
services.pihole = {
|
||||||
|
enable = true;
|
||||||
|
hostConfig = {
|
||||||
|
# define the service user for running the rootless Pi-hole container
|
||||||
|
user = "pihole";
|
||||||
|
enableLingeringForUser = true;
|
||||||
|
|
||||||
|
# we want to persist change to the Pi-hole configuration & logs across service restarts
|
||||||
|
# check the option descriptions for more information
|
||||||
|
persistVolumes = true;
|
||||||
|
|
||||||
|
# expose DNS & the web interface on unpriviledged ports on all IP addresses of the host
|
||||||
|
# check the option descriptions for more information
|
||||||
|
dnsPort = 5335;
|
||||||
|
webProt = 8080;
|
||||||
};
|
};
|
||||||
}
|
piholeConfig.ftl = {
|
||||||
|
# assuming that the host has this (fixed) IP and should resolve "pi.hole" to this address
|
||||||
# some existing system & hardware configuration modules; it is assumed that a user named `pihole` is defined here
|
# check the option description & the FTLDNS documentation for more information
|
||||||
# and that the user has sub-uids/gids configured (e.g. via the `users.users.pihole.subUidRanges/subGidRanges` options)
|
LOCAL_IPV4 = "192.168.0.2";
|
||||||
./configuration.nix
|
|
||||||
./hardware.nix
|
|
||||||
|
|
||||||
# make the module declared by the linger flake available to our config
|
|
||||||
linger.nixosModules.${system}.default
|
|
||||||
pihole.nixosModules.${system}.default
|
|
||||||
|
|
||||||
# in another module we can now configure the lingering behaviour (could also be part of ./configuration.nix)
|
|
||||||
{ ... }: {
|
|
||||||
# required for stable restarts of the Pi-hole container (try to remove it to see the warning from the pihole-flake)
|
|
||||||
boot.cleanTmpDir = true;
|
|
||||||
|
|
||||||
# the Pi-hole service configuration
|
|
||||||
services.pihole = {
|
|
||||||
enable = true;
|
|
||||||
hostConfig = {
|
|
||||||
# define the service user for running the rootless Pi-hole container
|
|
||||||
user = "pihole";
|
|
||||||
enableLingeringForUser = true;
|
|
||||||
|
|
||||||
# we want to persist change to the Pi-hole configuration & logs across service restarts
|
|
||||||
# check the option descriptions for more information
|
|
||||||
persistVolumes = true;
|
|
||||||
|
|
||||||
# expose DNS & the web interface on unpriviledged ports on all IP addresses of the host
|
|
||||||
# check the option descriptions for more information
|
|
||||||
dnsPort = 5335;
|
|
||||||
webProt = 8080;
|
|
||||||
};
|
|
||||||
piholeConfig.ftl = {
|
|
||||||
# assuming that the host has this (fixed) IP and should resolve "pi.hole" to this address
|
|
||||||
# check the option description & the FTLDNS documentation for more information
|
|
||||||
LOCAL_IPV4 = "192.168.0.2";
|
|
||||||
};
|
|
||||||
piholeCOnfig.web = {
|
|
||||||
virtualHost = "pi.hole";
|
|
||||||
password = "password";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
piholeCOnfig.web = {
|
||||||
# we need to open the ports in the firewall to make the service accessible beyond `localhost`
|
virtualHost = "pi.hole";
|
||||||
# assuming that Pi-hole is exposed on the host interface `eth0`
|
password = "password";
|
||||||
networking.firewall.interfaces.eth0 = {
|
|
||||||
allowedTCPPorts = [ 5335 8080 ];
|
|
||||||
allowedUDPPorts = [ 5335 ];
|
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
];
|
|
||||||
};
|
# we need to open the ports in the firewall to make the service accessible beyond `localhost`
|
||||||
|
# assuming that Pi-hole is exposed on the host interface `eth0`
|
||||||
|
networking.firewall.interfaces.eth0 = {
|
||||||
|
allowedTCPPorts = [5335 8080];
|
||||||
|
allowedUDPPorts = [5335];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -327,7 +327,7 @@ in rec {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
assertions = [
|
assertions = [
|
||||||
{ assertion = length hostUserCfg.subUidRanges > 0 && length hostUserCfg.subGidRanges > 0;
|
{ assertion = length hostUserCfg.subUidRanges > 0 && length hostUserCfg.subGidRanges > 0 || hostUserCfg.autoSubUidGidRanges;
|
||||||
message = ''
|
message = ''
|
||||||
The host user most have configured subUidRanges & subGidRanges as pihole is running in a rootless podman container.
|
The host user most have configured subUidRanges & subGidRanges as pihole is running in a rootless podman container.
|
||||||
'';
|
'';
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue