knot: put runtime paths outside the nix store

Otherwise knot tries to write to non-writable directories.
This for example breaks dnssec signing.
While it's possible to overwrite these path in the configuration,
having a sane defaults is nicer.

Changed files
+49 -2
pkgs
+17 -2
pkgs/servers/dns/knot-dns/default.nix
···
{ stdenv, fetchurl, pkgconfig, gnutls, liburcu, lmdb, libcap_ng, libidn2, libunistring
, systemd, nettle, libedit, zlib, libiconv, libintl
+
, autoreconfHook
}:
let inherit (stdenv.lib) optional optionals; in
···
outputs = [ "bin" "out" "dev" ];
-
nativeBuildInputs = [ pkgconfig ];
+
configureFlags = [
+
"--with-configdir=/etc/knot"
+
"--with-rundir=/run/knot"
+
"--with-storage=/var/lib/knot"
+
];
+
+
patches = [
+
# Don't try to create directories like /var/lib/knot at build time.
+
# They are later created from NixOS itself.
+
./dont-create-run-time-dirs.patch
+
];
+
+
nativeBuildInputs = [ pkgconfig autoreconfHook ];
buildInputs = [
gnutls liburcu libidn2 libunistring
nettle libedit
···
doCheck = true;
doInstallCheck = false; # needs pykeymgr?
-
postInstall = ''rm -r "$out"/var "$out"/lib/*.la'';
+
postInstall = ''
+
rm -r "$out"/lib/*.la
+
'';
meta = with stdenv.lib; {
description = "Authoritative-only DNS server from .cz domain registry";
+32
pkgs/servers/dns/knot-dns/dont-create-run-time-dirs.patch
···
+
diff --git a/samples/Makefile.am b/samples/Makefile.am
+
index c253c91..107401d 100644
+
--- a/samples/Makefile.am
+
+++ b/samples/Makefile.am
+
@@ -19,11 +19,6 @@ EXTRA_DIST = knot.sample.conf.in example.com.zone
+
+
if HAVE_DAEMON
+
+
-install-data-local: knot.sample.conf
+
- if [ \! -f $(DESTDIR)/$(config_dir)/knot.sample.conf ]; then \
+
- $(INSTALL) -d $(DESTDIR)/$(config_dir); \
+
- $(INSTALL_DATA) knot.sample.conf $(srcdir)/example.com.zone $(DESTDIR)/$(config_dir); \
+
- fi
+
uninstall-local:
+
-rm -rf $(DESTDIR)/$(config_dir)/knot.sample.conf \
+
$(DESTDIR)/$(config_dir)/example.com.zone
+
diff --git a/src/utils/Makefile.inc b/src/utils/Makefile.inc
+
index e6765d9..d859d23 100644
+
--- a/src/utils/Makefile.inc
+
+++ b/src/utils/Makefile.inc
+
@@ -79,11 +79,6 @@ endif HAVE_DNSTAP
+
endif HAVE_UTILS
+
+
if HAVE_DAEMON
+
-# Create storage and run-time directories
+
-install-data-hook:
+
- $(INSTALL) -d $(DESTDIR)/@config_dir@
+
- $(INSTALL) -d $(DESTDIR)/@run_dir@
+
- $(INSTALL) -d $(DESTDIR)/@storage_dir@
+
+
sbin_PROGRAMS = knotc knotd
+