diff --git a/pkgs/tools/system/netdata/default.nix b/pkgs/tools/system/netdata/default.nix index 13c50fe3ec9..46932076177 100644 --- a/pkgs/tools/system/netdata/default.nix +++ b/pkgs/tools/system/netdata/default.nix @@ -13,11 +13,22 @@ stdenv.mkDerivation rec{ buildInputs = [ autoreconfHook zlib pkgconfig libuuid ]; - preConfigure = '' - export ZLIB_CFLAGS=" " - export ZLIB_LIBS="-lz" - export UUID_CFLAGS=" " - export UUID_LIBS="-luuid" + # Allow UI to load when running as non-root + patches = [ ./web_access.patch ]; + + # Build will fail trying to create /var/{cache,lib,log}/netdata without this + postPatch = '' + sed -i '/dist_.*_DATA = \.keep/d' src/Makefile.am + ''; + + configureFlags = [ + "--localstatedir=/var" + ]; + + # App fails on runtime if the default config file is not detected + # The upstream installer does prepare an empty file too + postInstall = '' + touch $out/etc/netdata/netdata.conf ''; meta = with stdenv.lib; { diff --git a/pkgs/tools/system/netdata/web_access.patch b/pkgs/tools/system/netdata/web_access.patch new file mode 100644 index 00000000000..f1e4bd64cbb --- /dev/null +++ b/pkgs/tools/system/netdata/web_access.patch @@ -0,0 +1,20 @@ +--- a/src/web_client.c.orig ++++ b/src/web_client.c +@@ -331,7 +331,7 @@ + buffer_sprintf(w->response.data, "File '%s' does not exist, or is not accessible.", webfilename); + return 404; + } +- ++#if 0 + // check if the file is owned by expected user + if(stat.st_uid != web_files_uid()) { + error("%llu: File '%s' is owned by user %u (expected user %u). Access Denied.", w->id, webfilename, stat.st_uid, web_files_uid()); +@@ -345,7 +345,7 @@ + buffer_sprintf(w->response.data, "Access to file '%s' is not permitted.", webfilename); + return 403; + } +- ++#endif + if((stat.st_mode & S_IFMT) == S_IFDIR) { + snprintfz(webfilename, FILENAME_MAX, "%s/index.html", filename); + return mysendfile(w, webfilename);