with improvements suggested by Jörg Thalheim <joerg@thalheim.io>wip/yesman
parent
a80ef5b88a
commit
ab851b63da
@ -0,0 +1,53 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
{ |
||||
###### interface |
||||
|
||||
options = { |
||||
services.tinydns = { |
||||
enable = mkOption { |
||||
default = false; |
||||
type = types.bool; |
||||
description = "Whether to run the tinydns dns server"; |
||||
}; |
||||
|
||||
data = mkOption { |
||||
type = types.lines; |
||||
description = "The DNS data to serve, in the format described by tinydns-data(8)"; |
||||
}; |
||||
|
||||
ip = mkOption { |
||||
default = "0.0.0.0"; |
||||
type = types.str; |
||||
description = "IP address on which to listen for connections"; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
###### implementation |
||||
|
||||
config = mkIf config.services.tinydns.enable { |
||||
environment.systemPackages = [ pkgs.djbdns ]; |
||||
|
||||
users.extraUsers.tinydns = {}; |
||||
|
||||
systemd.services.tinydns = { |
||||
description = "djbdns tinydns server"; |
||||
wantedBy = [ "multi-user.target" ]; |
||||
path = with pkgs; [ daemontools djbdns ]; |
||||
preStart = '' |
||||
rm -rf /var/lib/tinydns |
||||
tinydns-conf tinydns tinydns /var/lib/tinydns ${config.services.tinydns.ip} |
||||
cd /var/lib/tinydns/root/ |
||||
ln -sf ${pkgs.writeText "tinydns-data" config.services.tinydns.data} data |
||||
tinydns-data |
||||
''; |
||||
script = '' |
||||
cd /var/lib/tinydns |
||||
exec ./run |
||||
''; |
||||
}; |
||||
}; |
||||
} |
Loading…
Reference in new issue