mirror of
https://github.com/JulienMalka/snowfield.git
synced 2025-06-08 10:09:04 +02:00
feat: add dns module
This commit is contained in:
parent
0ba90fdb2b
commit
1db71f86db
4 changed files with 131 additions and 17 deletions
|
@ -1,11 +1,11 @@
|
|||
{ pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../users/default.nix
|
||||
../../users/julien.nix
|
||||
./hardware.nix
|
||||
./home-julien.nix
|
||||
./nsd.nix
|
||||
];
|
||||
|
||||
machine.meta = {
|
||||
|
|
48
machines/gustave/nsd.nix
Normal file
48
machines/gustave/nsd.nix
Normal file
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
nixosConfigurations,
|
||||
...
|
||||
}:
|
||||
let
|
||||
zonesToList = lib.mapAttrsToList (name: value: { ${name} = value; });
|
||||
zonesFromConfig = lib.mkMerge (
|
||||
lib.fold (elem: acc: acc ++ (zonesToList elem.config.machine.meta.zones)) [ ] (
|
||||
lib.attrValues nixosConfigurations
|
||||
)
|
||||
);
|
||||
dnsLib = (import inputs.dns).lib;
|
||||
evalZones =
|
||||
zones:
|
||||
(lib.evalModules {
|
||||
modules = [
|
||||
{
|
||||
options = {
|
||||
zones = lib.mkOption {
|
||||
type = lib.types.attrsOf dnsLib.types.zone;
|
||||
description = "DNS zones";
|
||||
};
|
||||
};
|
||||
config = {
|
||||
inherit zones;
|
||||
};
|
||||
}
|
||||
];
|
||||
}).config.zones;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
services.nsd = {
|
||||
enable = true;
|
||||
interfaces = [
|
||||
config.machine.meta.ips.public.ipv4
|
||||
config.machine.meta.ips.public.ipv6
|
||||
];
|
||||
zones = lib.mapAttrs (_: value: {
|
||||
data = builtins.toString value;
|
||||
provideXFR = [ "192.168.0.0/21 NOKEY" ];
|
||||
}) (evalZones zonesFromConfig);
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue