mirror of
https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git
synced 2025-12-29 20:08:22 +01:00
topology: localize nixos module, add custom extractor, fix misc
This commit is contained in:
48
flake.nix
48
flake.nix
@@ -93,7 +93,6 @@
|
||||
modules = [
|
||||
configurationPath
|
||||
sops-nix.nixosModules.sops
|
||||
inputs.nix-topology.nixosModules.default
|
||||
] ++ extraArgs.modules or [];
|
||||
|
||||
pkgs = import nixpkgs {
|
||||
@@ -244,27 +243,50 @@
|
||||
bluemap = pkgs.callPackage ./packages/bluemap.nix { };
|
||||
|
||||
out-of-your-element = pkgs.callPackage ./packages/out-of-your-element.nix { };
|
||||
} //
|
||||
}
|
||||
//
|
||||
# Mediawiki extensions
|
||||
(lib.pipe null [
|
||||
(_: pkgs.callPackage ./packages/mediawiki-extensions { })
|
||||
(lib.flip builtins.removeAttrs ["override" "overrideDerivation"])
|
||||
(lib.mapAttrs' (name: lib.nameValuePair "mediawiki-${name}"))
|
||||
])
|
||||
// lib.genAttrs allMachines
|
||||
(machine: self.nixosConfigurations.${machine}.config.system.build.toplevel);
|
||||
};
|
||||
|
||||
topology.x86_64-linux = import inputs.nix-topology {
|
||||
//
|
||||
# Machines
|
||||
lib.genAttrs allMachines
|
||||
(machine: self.nixosConfigurations.${machine}.config.system.build.toplevel)
|
||||
//
|
||||
# Nix-topology
|
||||
(let
|
||||
topology' = import inputs.nix-topology {
|
||||
pkgs = import nixpkgs {
|
||||
system = "x86_64-linux";
|
||||
overlays = [inputs.nix-topology.overlays.default];
|
||||
}; # Only this package set must include nix-topology.overlays.default
|
||||
overlays = [ inputs.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
|
||||
{
|
||||
nixosConfigurations = lib.mapAttrs (_name: nixosCfg: nixosCfg.extendModules {
|
||||
modules = [
|
||||
inputs.nix-topology.nixosModules.default
|
||||
./topology/service-extractors/greg-ng.nix
|
||||
];
|
||||
}) self.nixosConfigurations;
|
||||
}
|
||||
];
|
||||
};
|
||||
in {
|
||||
topology = topology'.config.output;
|
||||
topology-png = pkgs.runCommand "pvv-config-topology-png" {
|
||||
nativeBuildInputs = [ pkgs.writableTmpDirAsHomeHook ];
|
||||
} ''
|
||||
mkdir -p "$out"
|
||||
for file in '${topology'.config.output}'/*.svg; do
|
||||
${lib.getExe pkgs.imagemagick} -density 300 -background none "$file" "$out"/"$(basename "''${file%.svg}.png")"
|
||||
done
|
||||
'';
|
||||
});
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, ... }:
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
inherit
|
||||
(config.lib.topology)
|
||||
@@ -8,10 +8,9 @@ let
|
||||
mkDevice
|
||||
mkConnection
|
||||
mkConnectionRev;
|
||||
values = import ./values.nix;
|
||||
values = import ../values.nix;
|
||||
in {
|
||||
|
||||
### Networks
|
||||
### Networks
|
||||
|
||||
networks.pvv = {
|
||||
name = "PVV Network";
|
||||
@@ -44,7 +43,7 @@ in {
|
||||
interfaces.eth1.network = "ntnu";
|
||||
};
|
||||
|
||||
### Brus
|
||||
### Brus
|
||||
|
||||
nodes.ntnu-pvv-router = mkRouter "NTNU PVV Gateway" {
|
||||
interfaceGroups = [ ["wan1"] ["eth1"] ];
|
||||
@@ -53,12 +52,19 @@ in {
|
||||
};
|
||||
|
||||
nodes.brus-switch = mkSwitch "Brus Switch" {
|
||||
interfaceGroups = [ ["eth1" "eth2" "eth3" "eth4" "eth5" "eth6" "eth7"] ];
|
||||
interfaceGroups = [ (lib.genList (i: "eth${toString i}") 16) ];
|
||||
|
||||
connections.eth2 = mkConnection "bekkalokk" "enp2s0";
|
||||
connections.eth3 = mkConnection "bicep" "enp6s0f0";
|
||||
# connections.eth4 = mkConnection "buskerud" "enp3s0f0";
|
||||
# connections.eth3 = mkConnection "bicep" "enp6s0f0";
|
||||
connections.eth4 = mkConnection "buskerud" "eth1";
|
||||
connections.eth5 = mkConnection "knutsen" "eth1";
|
||||
connections.eth7 = mkConnection "joshua" "eth1";
|
||||
connections.eth6 = mkConnection "powerpuff-cluster" "eth1";
|
||||
|
||||
connections.eth8 = mkConnection "lupine-1" "enp0s31f6";
|
||||
connections.eth9 = mkConnection "lupine-2" "enp0s31f6";
|
||||
connections.eth11 = mkConnection "lupine-3" "enp0s31f6";
|
||||
connections.eth10 = mkConnection "lupine-4" "enp0s31f6";
|
||||
connections.eth12 = mkConnection "lupine-5" "enp0s31f6";
|
||||
};
|
||||
|
||||
nodes.knutsen = mkRouter "knutsen" {
|
||||
@@ -69,17 +75,37 @@ in {
|
||||
interfaces.vpn1.virtual = true;
|
||||
};
|
||||
|
||||
nodes.joshua = mkDevice "joshua" {
|
||||
nodes.buskerud = mkDevice "buskerud" {
|
||||
interfaceGroups = [ ["eth1"] ];
|
||||
};
|
||||
|
||||
nodes.shark = {
|
||||
guestType = "proxmox";
|
||||
parent = config.nodes.joshua.id;
|
||||
parent = config.nodes.buskerud.id;
|
||||
};
|
||||
|
||||
### Powerpuff
|
||||
|
||||
### PVV
|
||||
nodes.powerpuff-cluster = mkDevice "powerpuff-cluster" {
|
||||
interfaceGroups = [ ["eth1"] ];
|
||||
};
|
||||
|
||||
nodes.kommode = {
|
||||
guestType = "proxmox";
|
||||
parent = config.nodes.powerpuff-cluster.id;
|
||||
};
|
||||
|
||||
nodes.bicep = {
|
||||
guestType = "proxmox";
|
||||
parent = config.nodes.powerpuff-cluster.id;
|
||||
};
|
||||
|
||||
nodes.ustetind = {
|
||||
guestType = "proxmox";
|
||||
parent = config.nodes.powerpuff-cluster.id;
|
||||
};
|
||||
|
||||
### PVV
|
||||
|
||||
nodes.ntnu-veggen = mkRouter "NTNU-Veggen" {
|
||||
interfaceGroups = [ ["wan1"] ["eth1"] ];
|
||||
@@ -102,7 +128,7 @@ in {
|
||||
};
|
||||
|
||||
|
||||
### Openstack
|
||||
### Openstack
|
||||
|
||||
nodes.stackit = mkDevice "stackit" {
|
||||
interfaceGroups = [ ["*"] ];
|
||||
@@ -112,9 +138,12 @@ in {
|
||||
guestType = "openstack";
|
||||
parent = config.nodes.stackit.id;
|
||||
};
|
||||
nodes.bob = {
|
||||
nodes.wenche = {
|
||||
guestType = "openstack";
|
||||
parent = config.nodes.stackit.id;
|
||||
};
|
||||
nodes.bakke = {
|
||||
guestType = "openstack";
|
||||
parent = config.nodes.stackit.id;
|
||||
};
|
||||
|
||||
}
|
||||
BIN
topology/icons/greg-ng.png
Normal file
BIN
topology/icons/greg-ng.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 40 KiB |
11
topology/service-extractors/greg-ng.nix
Normal file
11
topology/service-extractors/greg-ng.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
cfg = config.services.greg-ng or { enable = false; };
|
||||
in
|
||||
{
|
||||
config.topology.self.services.greg-ng = lib.mkIf cfg.enable {
|
||||
name = "Greg-ng";
|
||||
icon = ../icons/greg-ng.png;
|
||||
details.listen = { text = "${cfg.settings.host}:${toString cfg.settings.port}"; };
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user