From 7cff6b197cecbf34ad5e0fdd54e93f52d5776fe7 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Wed, 31 Dec 2025 02:40:02 +0900 Subject: [PATCH] topology: extend some more --- flake.nix | 10 ++++- topology/default.nix | 24 +++++++++++ topology/non-nixos-machines.nix | 40 +++++++++++++++++++ topology/service-extractors/gitea-runners.nix | 13 ++++++ topology/service-extractors/mysql.nix | 19 +++++++++ topology/service-extractors/postgresql.nix | 19 +++++++++ 6 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 topology/service-extractors/gitea-runners.nix create mode 100644 topology/service-extractors/mysql.nix create mode 100644 topology/service-extractors/postgresql.nix diff --git a/flake.nix b/flake.nix index 5797bcc..9327189 100644 --- a/flake.nix +++ b/flake.nix @@ -261,7 +261,12 @@ topology' = import inputs.nix-topology { pkgs = import nixpkgs { system = "x86_64-linux"; - overlays = [ inputs.nix-topology.overlays.default ]; + overlays = [ + inputs.nix-topology.overlays.default + (final: prev: { + inherit (nixpkgs-unstable.legacyPackages.x86_64-linux) super-tiny-icons; + }) + ]; }; specialArgs = { @@ -275,6 +280,9 @@ modules = [ inputs.nix-topology.nixosModules.default ./topology/service-extractors/greg-ng.nix + ./topology/service-extractors/postgresql.nix + ./topology/service-extractors/mysql.nix + ./topology/service-extractors/gitea-runners.nix ]; }) self.nixosConfigurations; } diff --git a/topology/default.nix b/topology/default.nix index 8f3f11c..7384032 100644 --- a/topology/default.nix +++ b/topology/default.nix @@ -103,11 +103,26 @@ in { ); }; + nodes.bekkalokk.hardware.info = "Supermicro X9SCL/X9SCM"; + + nodes.lupine-1.hardware.info = "Dell OptiPlex 7040"; + # nodes.lupine-2.hardware.info = "Dell OptiPlex 5050"; + nodes.lupine-3.hardware.info = "Dell OptiPlex 5050"; + nodes.lupine-4.hardware.info = "Dell OptiPlex 5050"; + # nodes.lupine-5.hardware.info = "Dell OptiPlex 5050"; + nodes.buskerud = mkDevice "buskerud" { deviceIcon = ./icons/proxmox.svg; interfaceGroups = [ [ "eth1" ] ]; interfaces.eth1.network = "pvv"; + + services = { + proxmox = { + name = "Proxmox web interface"; + info = "https://buskerud.pvv.ntnu.no:8006/"; + }; + }; }; nodes.shark = { @@ -125,6 +140,15 @@ in { hardware.info = "Dell PowerEdge R730 x 3"; interfaceGroups = [ [ "eth1" ] ]; + + services = { + proxmox = { + name = "Proxmox web interface"; + details.bubbles.text = "https://bubbles.pvv.ntnu.no:8006/"; + details.blossom.text = "https://blossom.pvv.ntnu.no:8006/"; + details.buttercup.text = "https://buttercup.pvv.ntnu.no:8006/"; + }; + }; }; nodes.kommode = { diff --git a/topology/non-nixos-machines.nix b/topology/non-nixos-machines.nix index 15d2fbc..9667870 100644 --- a/topology/non-nixos-machines.nix +++ b/topology/non-nixos-machines.nix @@ -120,6 +120,30 @@ in { values.hosts.gateway6 ]; }; + + services = { + dovecot = { + name = "Dovecot"; + info = "imap.pvv.ntnu.no pop.pvv.ntnu.no"; + icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/dovecot.svg"; + details.imap.text = "0.0.0.0:993"; + details.pop3.text = "0.0.0.0:995"; + }; + + exim4 = { + name = "Exim4"; + info = "mail.pvv.ntnu.no mailhost.pvv.ntnu.no"; + details.smtp.text = "0.0.0.0:25"; + details.smtps.text = "0.0.0.0:465"; + details.starttls.text = "0.0.0.0:587"; + }; + + nfs = { + name = "NFS"; + info = "homepvv.pvv.ntnu.no"; + details.rpcbind.text = "0.0.0.0:111"; + }; + }; }; nodes.innovation = mkDevice "innovation" { @@ -145,6 +169,7 @@ in { icon = "services.minecraft"; info = "minecraft.pvv.ntnu.no"; details.listen.text = "0.0.0.0:25565"; + details.directory.text = "/srv/minecraft-pvv"; }; }; }; @@ -220,11 +245,26 @@ in { values.hosts.gateway6 ]; }; + + services = { + mapcrafter = { + name = "Mapcrafter Minecraft Map"; + info = "http://isvegg.pvv.ntnu.no/kart/"; + details.directory.text = "/scratch/mckart/kart"; + }; + gophernicus = { + name = "Gophernicus"; + info = "gopher://gopher.pvv.ntnu.no/"; + details.directory.text = "/var/gopher"; + }; + }; }; nodes.ameno = mkDevice "ameno" { deviceIcon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/ubuntu.svg"; + hardware.info = "Raspberry Pi 2B 1.1"; + interfaceGroups = [ [ "eth0" ] ]; interfaces.eth0 = { mac = "b8:27:eb:62:1d:d8"; diff --git a/topology/service-extractors/gitea-runners.nix b/topology/service-extractors/gitea-runners.nix new file mode 100644 index 0000000..8310478 --- /dev/null +++ b/topology/service-extractors/gitea-runners.nix @@ -0,0 +1,13 @@ +{ config, unstablePkgs, lib, ... }: +let + cfg = config.services.gitea-actions-runner; +in +{ + config.topology.self.services = lib.mapAttrs' (name: instance: { + name = "gitea-runner-${name}"; + value = { + name = "Gitea runner ${name}"; + icon = "services.gitea"; + }; + }) (lib.filterAttrs (_: instance: instance.enable) cfg.instances); +} diff --git a/topology/service-extractors/mysql.nix b/topology/service-extractors/mysql.nix new file mode 100644 index 0000000..5a1076e --- /dev/null +++ b/topology/service-extractors/mysql.nix @@ -0,0 +1,19 @@ +{ config, unstablePkgs, lib, ... }: +let + cfg = config.services.mysql; + cfgBak = config.services.mysqlBackup; +in +{ + config.topology.self.services.mysql = lib.mkIf cfg.enable { + name = "MySQL"; + icon = "${unstablePkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/mysql.svg"; + + details.listen.text = "${cfg.settings.mysqld.bind-address or "127.0.0.1"}:${toString (cfg.settings.mysqld.port or 3306)}"; + details.socket.text = cfg.settings.mysqld.socket or "/run/mysqld/mysqld.sock"; + details.type.text = cfg.package.pname; + details.dataDir.text = cfg.dataDir; + + # details.backup-time = lib.mkIf cfgBak.enable cfgBak.calendar; + # details.backup-location = lib.mkIf cfgBak.enable cfgBak.location; + }; +} diff --git a/topology/service-extractors/postgresql.nix b/topology/service-extractors/postgresql.nix new file mode 100644 index 0000000..c8b85d1 --- /dev/null +++ b/topology/service-extractors/postgresql.nix @@ -0,0 +1,19 @@ +{ config, unstablePkgs, lib, ... }: +let + cfg = config.services.postgresql; + cfgBak = config.services.postgresqlBackup; +in +{ + config.topology.self.services.postgresql = lib.mkIf cfg.enable { + name = "PostgreSQL"; + icon = "${unstablePkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/postgresql.svg"; + + details.listen.text = lib.mkIf cfg.enableTCPIP "0.0.0.0:${toString cfg.settings.port}"; + details.socket.text = "/run/postgresql/.s.PGSQL.${toString cfg.settings.port}"; + details.version.text = cfg.package.version; + details.dataDir.text = cfg.dataDir; + + # details.backup-time = lib.mkIf cfgBak.enable cfgBak.startAt; + # details.backup-location = lib.mkIf cfgBak.enable cfgBak.location; + }; +}