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 --- configurations/eonwe/default.nix | 2 +- flake.lock | 17 +++++++++++++++++ flake.nix | 4 ++++ media/k3s.svg | 1 - 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 +++++++ 19 files changed, 172 insertions(+), 14 deletions(-) delete mode 100644 media/k3s.svg diff --git a/configurations/eonwe/default.nix b/configurations/eonwe/default.nix index 1904cdb..1d246c6 100644 --- a/configurations/eonwe/default.nix +++ b/configurations/eonwe/default.nix @@ -34,7 +34,7 @@ with lib; hm = { home.packages = with pkgs; [ - anki + # anki gzdoom iaito kdenlive diff --git a/flake.lock b/flake.lock index c7e06de..31d2a39 100644 --- a/flake.lock +++ b/flake.lock @@ -578,6 +578,22 @@ "type": "github" } }, + "homelab-svg-assets": { + "flake": false, + "locked": { + "lastModified": 1713467357, + "narHash": "sha256-DwjQVWgN8Ys9IbiR18IHMlAKD2q5dgdWSxP/Ze1kRQA=", + "owner": "loganmarchione", + "repo": "homelab-svg-assets", + "rev": "8bb1d84d848155e2d9eb1680a2e04b1bb51f3da8", + "type": "github" + }, + "original": { + "owner": "loganmarchione", + "repo": "homelab-svg-assets", + "type": "github" + } + }, "impermanence": { "locked": { "lastModified": 1708968331, @@ -793,6 +809,7 @@ "flake-registry": "flake-registry", "git-hooks": "git-hooks", "home-manager": "home-manager", + "homelab-svg-assets": "homelab-svg-assets", "impermanence": "impermanence", "mailserver": "mailserver", "minecraft": "minecraft", diff --git a/flake.nix b/flake.nix index 484f94b..f0a1fc2 100644 --- a/flake.nix +++ b/flake.nix @@ -94,6 +94,10 @@ pre-commit-hooks.follows = "git-hooks"; }; }; + homelab-svg-assets = { + url = "github:loganmarchione/homelab-svg-assets"; + flake = false; + }; xmonad-ng = { url = "git+https://git.azahi.cc/xmonad-ng?ref=master"; diff --git a/media/k3s.svg b/media/k3s.svg deleted file mode 100644 index 555284b..0000000 --- a/media/k3s.svg +++ /dev/null @@ -1 +0,0 @@ - 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 1.4.1