From f19d959ef1cfe9c4064f7e54d9aca7f3457767f4 Mon Sep 17 00:00:00 2001 From: Andrey Golovizin Date: Mon, 8 Jan 2018 15:49:13 +0100 Subject: nixos/kresd: fix systemd dependency cycle The unnecessary dependency of sockets.target on kresd.service causes a dependency cycle preventing kresd.service from starting at boot: sockets.target -> kresd.service -> basic.target -> sockets.target --- nixos/modules/services/networking/kresd.nix | 1 - 1 file changed, 1 deletion(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/networking/kresd.nix b/nixos/modules/services/networking/kresd.nix index 18e2ab9aebf1..b0b3a8480d1f 100644 --- a/nixos/modules/services/networking/kresd.nix +++ b/nixos/modules/services/networking/kresd.nix @@ -113,7 +113,6 @@ in after = [ "kresd-cachedir.service" ]; requires = [ "kresd.socket" "kresd-cachedir.service" ]; - wantedBy = [ "sockets.target" ]; }; }; } -- cgit 1.4.1 From f312e6d9930e9cd278f5823f6040f6e8e1214ab6 Mon Sep 17 00:00:00 2001 From: Vladimír Čunát Date: Tue, 9 Jan 2018 17:11:36 +0100 Subject: nixos/kresd: use systemd.tmpfiles Since 4e4161c21268d6 it works on nixos-rebuild. --- nixos/modules/services/networking/kresd.nix | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/networking/kresd.nix b/nixos/modules/services/networking/kresd.nix index b0b3a8480d1f..64f36cadc1d0 100644 --- a/nixos/modules/services/networking/kresd.nix +++ b/nixos/modules/services/networking/kresd.nix @@ -86,16 +86,7 @@ in }; }; - # Create the cacheDir; tmpfiles don't work on nixos-rebuild switch. - systemd.services.kresd-cachedir = { - serviceConfig.Type = "oneshot"; - script = '' - if [ ! -d '${cfg.cacheDir}' ]; then - mkdir -p '${cfg.cacheDir}' - chown kresd:kresd '${cfg.cacheDir}' - fi - ''; - }; + systemd.tmpfiles.rules = [ "d '${cfg.cacheDir}' 0770 kresd kresd - -" ]; systemd.services.kresd = { description = "Knot-resolver daemon"; @@ -111,8 +102,7 @@ in -k '${cfg.cacheDir}/root.key' ''; - after = [ "kresd-cachedir.service" ]; - requires = [ "kresd.socket" "kresd-cachedir.service" ]; + requires = [ "kresd.socket" ]; }; }; } -- cgit 1.4.1 From 3ab85ed1aca250501bcd098f5c304e3ddde96e79 Mon Sep 17 00:00:00 2001 From: Vladimír Čunát Date: Tue, 9 Jan 2018 17:13:39 +0100 Subject: nixos/kresd: use DNSSEC root trust anchor from nixpkgs in read-only way. If the cache directory is empty and you use the very same service for system's DNS, kresd is unable to bootstrap root trust anchors, as it would need a DNS lookup. Also, if we don't rely on bootstrap, the extra lua deps of kresd could be dropped by default, but let's not do that now, as the difference in closure size is only ~4 MB, and there may be other use cases than running the package as nixos service this way. --- nixos/modules/services/networking/kresd.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/networking/kresd.nix b/nixos/modules/services/networking/kresd.nix index 64f36cadc1d0..7e36c69cc4e3 100644 --- a/nixos/modules/services/networking/kresd.nix +++ b/nixos/modules/services/networking/kresd.nix @@ -99,7 +99,7 @@ in script = '' exec '${package}/bin/kresd' --config '${configFile}' \ - -k '${cfg.cacheDir}/root.key' + -k '${pkgs.dns-root-data}/root.key' ''; requires = [ "kresd.socket" ]; -- cgit 1.4.1 From 4bc4c0883885f170d08ad47a8019bde7209d10f4 Mon Sep 17 00:00:00 2001 From: Vladimír Čunát Date: Tue, 9 Jan 2018 17:19:13 +0100 Subject: nixos/kresd: service nitpicks --- nixos/modules/services/networking/kresd.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/networking/kresd.nix b/nixos/modules/services/networking/kresd.nix index 7e36c69cc4e3..011a9b2f58ea 100644 --- a/nixos/modules/services/networking/kresd.nix +++ b/nixos/modules/services/networking/kresd.nix @@ -72,6 +72,7 @@ in (iface: if elem ":" (stringToCharacters iface) then "[${iface}]:53" else "${iface}:53") cfg.interfaces; socketConfig.ListenDatagram = listenStreams; + socketConfig.FreeBind = true; }; systemd.sockets.kresd-control = rec { @@ -82,7 +83,7 @@ in socketConfig = { FileDescriptorName = "control"; Service = "kresd.service"; - SocketMode = "0660"; # only root user/group may connect + SocketMode = "0660"; # only root user/group may connect and control kresd }; }; @@ -95,6 +96,7 @@ in User = "kresd"; Type = "notify"; WorkingDirectory = cfg.cacheDir; + Restart = "on-failure"; }; script = '' -- cgit 1.4.1