From 389becf9700d3dee7f09073ce4d235fc7c30b5c8 Mon Sep 17 00:00:00 2001 From: Azat Bahawi Date: Sun, 5 May 2024 14:28:31 +0300 Subject: 2024-05-05 --- modules/alertmanager.nix | 6 +----- modules/clickhouse.nix | 16 +++++++++++++++- modules/ipfs.nix | 32 ++++++++++++++++++++++++++++---- modules/jackett.nix | 11 +++++++++++ modules/k3s.nix | 2 +- modules/lidarr.nix | 8 ++++++++ modules/loki.nix | 7 +++++++ modules/matrix/dendrite.nix | 12 +++++++++++- modules/nsd.nix | 10 ++++++++++ modules/ntfy.nix | 10 ++++++++++ modules/plausible.nix | 10 ++++++++++ modules/postgresql.nix | 9 +++++++++ modules/prometheus.nix | 11 +++++++++++ modules/unbound.nix | 11 +++++++++++ modules/vaultwarden.nix | 7 +++++++ 15 files changed, 150 insertions(+), 12 deletions(-) (limited to 'modules') diff --git a/modules/alertmanager.nix b/modules/alertmanager.nix index 022f631..e5366e5 100644 --- a/modules/alertmanager.nix +++ b/modules/alertmanager.nix @@ -3,7 +3,6 @@ inputs, lib, libNginx, - pkgs, this, ... }: @@ -90,10 +89,7 @@ in topology = with cfg; { nodes.${this.hostname}.services.alertmanager = { name = "Alertmanager"; - icon = pkgs.fetchurl { - url = "https://www.svgrepo.com/download/354219/prometheus.svg"; - sha256 = "sha256-4n3v95vfHYz65Hh/8BeRf4T++EGdOLKHuwVuusYt9dc="; - }; + icon = "${inputs.homelab-svg-assets}/assets/prometheus.svg"; info = domain; details.listen.text = "127.0.0.1:${toString port}"; }; diff --git a/modules/clickhouse.nix b/modules/clickhouse.nix index 12dc7fa..6bb53bb 100644 --- a/modules/clickhouse.nix +++ b/modules/clickhouse.nix @@ -1,4 +1,10 @@ -{ config, lib, ... }: +{ + config, + inputs, + lib, + this, + ... +}: with lib; let cfg = config.nixfiles.modules.clickhouse; @@ -12,5 +18,13 @@ in services.clickhouse = { enable = true; }; + + topology = { + nodes.${this.hostname}.services.clickhouse = { + name = "ClickHouse"; + icon = "${inputs.homelab-svg-assets}/assets/postgresql.svg"; + details.listen.text = "127.0.0.1:8123"; + }; + }; }; } diff --git a/modules/ipfs.nix b/modules/ipfs.nix index cd28372..1dad6a6 100644 --- a/modules/ipfs.nix +++ b/modules/ipfs.nix @@ -1,5 +1,6 @@ { config, + inputs, lib, libNginx, this, @@ -23,12 +24,22 @@ in default = "ipfs.${config.networking.fqdn}"; }; + gatewayBind = mkOption { + description = "Gateway bind."; + type = with types; str; + default = "127.0.0.1"; + }; gatewayPort = mkOption { description = "Gateway port."; type = with types; port; default = if this.isHeadless then gatewayDefaultPort + 990 else gatewayDefaultPort; }; + apiBind = mkOption { + description = "API bind."; + type = with types; str; + default = "127.0.0.1"; + }; apiPort = mkOption { description = "API port."; type = with types; port; @@ -85,8 +96,8 @@ in in { Addresses = { - API = "/ip4/127.0.0.1/tcp/${toString cfg.apiPort}"; - Gateway = "/ip4/127.0.0.1/tcp/${toString cfg.gatewayPort}"; + API = "/ip4/${cfg.apiBind}/tcp/${toString cfg.apiPort}"; + Gateway = "/ip4/${cfg.gatewayBind}/tcp/${toString cfg.gatewayPort}"; Swarm = let port = toString cfg.swarmPort; @@ -118,13 +129,24 @@ in allowedTCPPorts = [ swarmDefaultPort ]; allowedUDPPorts = allowedTCPPorts; }; + + topology = with cfg; { + nodes.${this.hostname}.services.ipfs-kubo = { + name = "IPFS Kubo"; + icon = "${inputs.homelab-svg-assets}/assets/ipfs.svg"; + details.listen.text = '' + ${gatewayBind}:${toString gatewayPort} + ${apiBind}:${toString apiPort} + ''; + }; + }; } (mkIf this.isHeadless { nixfiles.modules.nginx = { enable = true; upstreams = with cfg; { - kubo_gateway.servers."127.0.0.1:${toString gatewayPort}" = { }; - kubo_api.servers."127.0.0.1:${toString apiPort}" = { }; + kubo_gateway.servers."${gatewayBind}:${toString gatewayPort}" = { }; + kubo_api.servers."${apiBind}:${toString apiPort}" = { }; }; virtualHosts = { ${cfg.domain} = { @@ -140,6 +162,8 @@ in }; }; }; + + topology.nodes.${this.hostname}.services.ipfs-kubo.info = cfg.domain; }) ]); } diff --git a/modules/jackett.nix b/modules/jackett.nix index 492e77a..07a5b16 100644 --- a/modules/jackett.nix +++ b/modules/jackett.nix @@ -1,7 +1,9 @@ { config, + inputs, lib, libNginx, + this, ... }: with lib; @@ -32,5 +34,14 @@ in }; services.jackett.enable = true; + + topology = with cfg; { + nodes.${this.hostname}.services.jackett = { + name = "Jackett"; + icon = "${inputs.homelab-svg-assets}/assets/jackett.svg"; + info = domain; + details.listen.text = "127.0.0.1:9117"; + }; + }; }; } diff --git a/modules/k3s.nix b/modules/k3s.nix index 01c77dd..9c8f512 100644 --- a/modules/k3s.nix +++ b/modules/k3s.nix @@ -65,7 +65,7 @@ in topology = { nodes.${this.hostname}.services.k3s = { name = "K3s"; - icon = "${inputs.self}/media/k3s.svg"; + icon = "${inputs.homelab-svg-assets}/assets/k3s.svg"; }; }; }; diff --git a/modules/lidarr.nix b/modules/lidarr.nix index 84d363b..127e8d9 100644 --- a/modules/lidarr.nix +++ b/modules/lidarr.nix @@ -3,6 +3,7 @@ inputs, lib, libNginx, + this, ... }: with lib; @@ -56,5 +57,12 @@ in systemd.tmpfiles.rules = with config.services.lidarr; [ "d /var/lib/lidarr/root 0755 ${user} ${group} - -" ]; + + topology = with cfg; { + nodes.${this.hostname}.services.lidarr = { + info = domain; + details.listen.text = "127.0.0.1:8686"; + }; + }; }; } diff --git a/modules/loki.nix b/modules/loki.nix index c446848..75e534b 100644 --- a/modules/loki.nix +++ b/modules/loki.nix @@ -2,6 +2,7 @@ config, lib, libNginx, + this, ... }: with lib; @@ -120,5 +121,11 @@ in "d ${storage.filesystem.chunks_directory} 0700 loki loki - -" "d ${storage.filesystem.rules_directory} 0700 loki loki - -" ]; + + topology = with cfg; { + nodes.${this.hostname}.services.loki = { + info = domain; + }; + }; }; } diff --git a/modules/matrix/dendrite.nix b/modules/matrix/dendrite.nix index dafef00..c391ba0 100644 --- a/modules/matrix/dendrite.nix +++ b/modules/matrix/dendrite.nix @@ -1,8 +1,9 @@ { config, - lib, inputs, + lib, pkgs, + this, ... }: with lib; @@ -235,5 +236,14 @@ in ]; }; }; + + topology = with cfg; { + nodes.${this.hostname}.services.dendrite = { + name = "Dendrite"; + icon = "${inputs.homelab-svg-assets}/assets/matrix-white.svg"; + info = domain; + details.listen.text = "127.0.0.1:${toString port}"; + }; + }; }; } diff --git a/modules/nsd.nix b/modules/nsd.nix index f44a2a0..9adc084 100644 --- a/modules/nsd.nix +++ b/modules/nsd.nix @@ -225,5 +225,15 @@ in allowedTCPPorts = [ 53 ]; allowedUDPPorts = allowedTCPPorts; }; + + topology = with cfg; { + nodes.${this.hostname}.services.nsd = { + name = "NSD"; + icon = "${inputs.homelab-svg-assets}/assets/unbound.svg"; + details.listen.text = concatMapStringsSep "\n" (i: "${i}:53") ( + filter (i: i != "127.0.0.1" && i != "::1") config.services.nsd.interfaces + ); + }; + }; }; } diff --git a/modules/ntfy.nix b/modules/ntfy.nix index 5739855..e3de72e 100644 --- a/modules/ntfy.nix +++ b/modules/ntfy.nix @@ -1,5 +1,6 @@ { config, + inputs, lib, libNginx, this, @@ -76,5 +77,14 @@ in optionalString cfg.prometheus.enable "${address}:${toString port}"; }; }; + + topology = with cfg; { + nodes.${this.hostname}.services.ntfy = { + name = "ntfy"; + icon = "${inputs.homelab-svg-assets}/assets/ntfy.svg"; + info = domain; + details.listen.text = config.services.ntfy-sh.settings.listen-http; + }; + }; }; } diff --git a/modules/plausible.nix b/modules/plausible.nix index d63e3ab..c5b66c3 100644 --- a/modules/plausible.nix +++ b/modules/plausible.nix @@ -2,6 +2,7 @@ config, inputs, lib, + this, ... }: with lib; @@ -125,5 +126,14 @@ in ]; requires = after; }; + + topology = with cfg; { + nodes.${this.hostname}.services.plausible = { + name = "Plausible"; + icon = "${inputs.homelab-svg-assets}/assets/plausible.svg"; + info = domain; + details.listen.text = "${config.services.plausible.server.listenAddress}:${toString port}"; + }; + }; }; } diff --git a/modules/postgresql.nix b/modules/postgresql.nix index 5081340..f9ea64f 100644 --- a/modules/postgresql.nix +++ b/modules/postgresql.nix @@ -1,5 +1,6 @@ { config, + inputs, lib, pkgs, this, @@ -94,5 +95,13 @@ in \unset QUIET '' ); + + topology = { + nodes.${this.hostname}.services.postgresql = { + name = "PostgreSQL"; + icon = "${inputs.homelab-svg-assets}/assets/postgresql.svg"; + details.listen.text = "127.0.0.1:5432"; + }; + }; }; } diff --git a/modules/prometheus.nix b/modules/prometheus.nix index 9f28cd5..673f288 100644 --- a/modules/prometheus.nix +++ b/modules/prometheus.nix @@ -1,7 +1,9 @@ { config, + inputs, lib, libNginx, + this, ... }: with lib; @@ -49,5 +51,14 @@ in "--storage.tsdb.wal-compression" ]; }; + + topology = with cfg; { + nodes.${this.hostname}.services.prometheus = { + name = "Prometheus"; + icon = "${inputs.homelab-svg-assets}/assets/prometheus.svg"; + info = domain; + details.listen.text = "127.0.0.1:${toString port}"; + }; + }; }; } diff --git a/modules/unbound.nix b/modules/unbound.nix index e71d48c..d10096d 100644 --- a/modules/unbound.nix +++ b/modules/unbound.nix @@ -1,5 +1,6 @@ { config, + inputs, lib, pkgs, this, @@ -221,5 +222,15 @@ in }; boot.kernel.sysctl."net.ipv4.tcp_fastopen" = mkOverride 200 3; + + topology = with cfg; { + nodes.${this.hostname}.services.unbound = { + name = "Unbound"; + icon = "${inputs.homelab-svg-assets}/assets/unbound.svg"; + details.listen.text = concatMapStringsSep "\n" (i: "${i}:53") ( + filter (i: i != "127.0.0.1" && i != "::1") config.services.unbound.settings.server.interface + ); + }; + }; }; } diff --git a/modules/vaultwarden.nix b/modules/vaultwarden.nix index 2cacb6c..edce8e5 100644 --- a/modules/vaultwarden.nix +++ b/modules/vaultwarden.nix @@ -2,6 +2,7 @@ config, inputs, lib, + this, ... }: with lib; @@ -141,5 +142,11 @@ in }; }; }; + + topology = with cfg; { + nodes.${this.hostname}.services.vaultwarden = { + info = mkForce domain; + }; + }; }; } -- cgit v1.2.3