1

Topology: Basic test

This commit is contained in:
2025-07-12 01:18:14 +02:00
parent 8f7d25ca2b
commit 30644a56f7
4 changed files with 55 additions and 13 deletions

View File

@ -155,24 +155,24 @@
commonModules = [
# inputs.agenix.nixosModules.default
inputs.sops-nix.nixosModules.sops
# TODO: inputs.nix-topology.nixosModules.default
inputs.nix-topology.nixosModules.default
];
in {
# Local shell for NixFlake directory
devShells."${system}".default = import ./shell.nix {inherit pkgs;};
devShells.${system}.default = import ./shell.nix {inherit pkgs;};
# TODO: Add my homelab configs into this flake, then add a topology config for each host
# Output that generates a system topology diagram
# topology = import inputs.nix-topology {
# inherit pkgs; # Only this package set must include nix-topology.overlays.default
# modules = [
# # Your own file to define global topology. Works in principle like a nixos module but uses different options.
# # ./topology.nix
# # Inline module to inform topology of your existing NixOS hosts.
# {nixosConfigurations = self.nixosConfigurations;}
# ];
# };
topology.${system} = import inputs.nix-topology {
inherit pkgs; # Only this package set must include nix-topology.overlays.default
modules = [
# Your own file to define global topology.
# Works in principle like a nixos module but uses different options.
./topology/topology.nix
# Inline module to inform topology of your existing NixOS hosts.
{inherit (self) nixosConfigurations;}
];
};
# We give each configuration a (host)name to choose a configuration when rebuilding.
# This makes it easy to add different configurations (e.g. for a laptop).

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

BIN
topology/images/TPLinkTLSG108E.jpg (Stored with Git LFS) Normal file

Binary file not shown.

39
topology/topology.nix Normal file
View File

@ -0,0 +1,39 @@
{config, ...}: let
inherit (config.lib.topology) mkInternet mkRouter mkConnection mkSwitch;
in {
# Add a node for the internet
nodes.internet = mkInternet {
connections = mkConnection "router" "wan1";
};
nodes.switch = mkSwitch "Switch" {
info = "TP-Link TL-SG108E";
image = ./images/TPLinkTLSG108E.jpg;
interfaceGroups = [["eth0" "eth1" "eth2" "eth3" "eth4" "eth5" "eth6" "eth7"]];
# connections.eth1 = mkConnection "host1" "lan";
# connections.eth2 = [(mkConnection "host2" "wan") (mkConnection "host3" "eth0")];
# any other attributes specified here are directly forwarded to the node:
interfaces.eth1.network = "home";
};
# Add a router that we use to access the internet
nodes.router = mkRouter "Firewall" {
info = "Protectli Vault FW2B";
image = ./images/ProtectliVaultFW2B.png;
interfaceGroups = [
["wan1"]
["eth1"]
];
connections.eth1 = mkConnection "switch" "eth0";
interfaces.eth1 = {
addresses = ["192.168.86.5"];
network = "home";
};
};
networks.home = {
name = "Mafia Home";
cidrv4 = "192.168.86.0/24";
};
}