nixos: Add Netdata
This commit is contained in:
		@@ -57,6 +57,7 @@
 | 
				
			|||||||
            boot.thin.enable = true;
 | 
					            boot.thin.enable = true;
 | 
				
			||||||
            dmeventd.enable = true;
 | 
					            dmeventd.enable = true;
 | 
				
			||||||
          };
 | 
					          };
 | 
				
			||||||
 | 
					          netdata.enable = true;
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        environment.systemPackages = with pkgs; [
 | 
					        environment.systemPackages = with pkgs; [
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,6 +61,7 @@
 | 
				
			|||||||
              lvm = {
 | 
					              lvm = {
 | 
				
			||||||
                dmeventd.enable = true;
 | 
					                dmeventd.enable = true;
 | 
				
			||||||
              };
 | 
					              };
 | 
				
			||||||
 | 
					              netdata.enable = true;
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            systemd.network = {
 | 
					            systemd.network = {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,6 +54,8 @@
 | 
				
			|||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        services = {
 | 
					        services = {
 | 
				
			||||||
 | 
					          netdata.enable = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          transmission = {
 | 
					          transmission = {
 | 
				
			||||||
            enable = true;
 | 
					            enable = true;
 | 
				
			||||||
            downloadDirPermissions = null;
 | 
					            downloadDirPermissions = null;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,7 @@ in
 | 
				
			|||||||
                tcp dport ${toString transmissionPeerPort} accept
 | 
					                tcp dport ${toString transmissionPeerPort} accept
 | 
				
			||||||
                iifname vpn return
 | 
					                iifname vpn return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                tcp dport { 9091, 9117, 7878, 8989, 8096 } accept
 | 
					                tcp dport { 19999, 9091, 9117, 7878, 8989, 8096 } accept
 | 
				
			||||||
                return
 | 
					                return
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
              chain input {
 | 
					              chain input {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
{ lib, pkgs, config, ... }:
 | 
					{ lib, pkgs, config, ... }:
 | 
				
			||||||
let
 | 
					let
 | 
				
			||||||
  inherit (builtins) mapAttrs toJSON;
 | 
					  inherit (builtins) mapAttrs toJSON;
 | 
				
			||||||
  inherit (lib) mkMerge mkDefault genAttrs flatten;
 | 
					  inherit (lib) mkMerge mkDefault genAttrs flatten concatStringsSep;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  dualStackListen' = l: map (addr: l // { inherit addr; }) [ "0.0.0.0" "[::]" ];
 | 
					  dualStackListen' = l: map (addr: l // { inherit addr; }) [ "0.0.0.0" "[::]" ];
 | 
				
			||||||
  dualStackListen = ll: flatten (map dualStackListen' ll);
 | 
					  dualStackListen = ll: flatten (map dualStackListen' ll);
 | 
				
			||||||
@@ -69,6 +69,37 @@ in
 | 
				
			|||||||
        useACMEHost = lib.my.pubDomain;
 | 
					        useACMEHost = lib.my.pubDomain;
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "netdata-colony.${lib.my.pubDomain}" =
 | 
				
			||||||
 | 
					      let
 | 
				
			||||||
 | 
					        hosts = [ "vm" "fw" "ctr" "jackflix-ctr" ];
 | 
				
			||||||
 | 
					        matchHosts = concatStringsSep "|" hosts;
 | 
				
			||||||
 | 
					      in
 | 
				
			||||||
 | 
					      mkMerge [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          locations = {
 | 
				
			||||||
 | 
					            "= /".return = "301 https://$host/colony/";
 | 
				
			||||||
 | 
					            "~ /(?<behost>${matchHosts})$".return = "301 https://$host/$behost/";
 | 
				
			||||||
 | 
					            "~ /(?<behost>${matchHosts})/(?<ndpath>.*)" = mkMerge [
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                proxyPass = "http://$behost.${config.networking.domain}:19999/$ndpath$is_args$args";
 | 
				
			||||||
 | 
					                extraConfig = ''
 | 
				
			||||||
 | 
					                  proxy_pass_request_headers on;
 | 
				
			||||||
 | 
					                  proxy_set_header Connection "keep-alive";
 | 
				
			||||||
 | 
					                  proxy_store off;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  gzip on;
 | 
				
			||||||
 | 
					                  gzip_proxied any;
 | 
				
			||||||
 | 
					                  gzip_types *;
 | 
				
			||||||
 | 
					                '';
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					              (ssoLoc "generic")
 | 
				
			||||||
 | 
					            ];
 | 
				
			||||||
 | 
					          };
 | 
				
			||||||
 | 
					          useACMEHost = lib.my.pubDomain;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        (ssoServer "generic")
 | 
				
			||||||
 | 
					      ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      "pass.${lib.my.pubDomain}" =
 | 
					      "pass.${lib.my.pubDomain}" =
 | 
				
			||||||
      let
 | 
					      let
 | 
				
			||||||
        upstream = "http://vaultwarden-ctr.${config.networking.domain}";
 | 
					        upstream = "http://vaultwarden-ctr.${config.networking.domain}";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,6 +72,10 @@
 | 
				
			|||||||
              };
 | 
					              };
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            services = {
 | 
				
			||||||
 | 
					              netdata.enable = true;
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            systemd.network = {
 | 
					            systemd.network = {
 | 
				
			||||||
              links = {
 | 
					              links = {
 | 
				
			||||||
                "10-vms" = {
 | 
					                "10-vms" = {
 | 
				
			||||||
@@ -112,6 +116,7 @@
 | 
				
			|||||||
              server.enable = true;
 | 
					              server.enable = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              firewall = {
 | 
					              firewall = {
 | 
				
			||||||
 | 
					                tcp.allowed = [ 19999 ];
 | 
				
			||||||
                trustedInterfaces = [ "vms" "ctrs" ];
 | 
					                trustedInterfaces = [ "vms" "ctrs" ];
 | 
				
			||||||
              };
 | 
					              };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -128,6 +128,16 @@ in
 | 
				
			|||||||
          permitRootLogin = mkDefault "no";
 | 
					          permitRootLogin = mkDefault "no";
 | 
				
			||||||
          passwordAuthentication = mkDefault false;
 | 
					          passwordAuthentication = mkDefault false;
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        netdata = {
 | 
				
			||||||
 | 
					          config = {
 | 
				
			||||||
 | 
					            global = {
 | 
				
			||||||
 | 
					              "memory mode" = "dbengine";
 | 
				
			||||||
 | 
					              "page cache size" = 32;
 | 
				
			||||||
 | 
					              "dbengine multihost disk space" = 256;
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					          };
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    (mkIf config.services.kmscon.enable {
 | 
					    (mkIf config.services.kmscon.enable {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -280,6 +280,18 @@ in
 | 
				
			|||||||
          }
 | 
					          }
 | 
				
			||||||
        ];
 | 
					        ];
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
 | 
					      (mkIf config.services.netdata.enable {
 | 
				
			||||||
 | 
					        my.tmproot.persistence.config.directories = [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            directory = "/var/lib/netdata";
 | 
				
			||||||
 | 
					            inherit (config.services.netdata) user group;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            directory = "/var/cache/netdata";
 | 
				
			||||||
 | 
					            inherit (config.services.netdata) user group;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
      (persistSimpleSvc "transmission")
 | 
					      (persistSimpleSvc "transmission")
 | 
				
			||||||
      (persistSimpleSvc "jackett")
 | 
					      (persistSimpleSvc "jackett")
 | 
				
			||||||
      (persistSimpleSvc "radarr")
 | 
					      (persistSimpleSvc "radarr")
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user