mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2026-04-14 13:19:09 +02:00
Compare commits
3 commits
8b5f75a2b5
...
b6eb29fad9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6eb29fad9 | ||
|
|
4b51505fbb | ||
|
|
494ac8b862 |
20 changed files with 714 additions and 321 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -5,6 +5,7 @@
|
||||||
./disk-config.nix
|
./disk-config.nix
|
||||||
|
|
||||||
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
||||||
|
"${self}/modules/nixos/optional/nix-topology-self.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
node.lockFromBootstrapping = lib.mkForce false;
|
node.lockFromBootstrapping = lib.mkForce false;
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
./disk-config.nix
|
./disk-config.nix
|
||||||
|
|
||||||
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
||||||
|
"${self}/modules/nixos/optional/nix-topology-self.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
topology.self = {
|
topology.self = {
|
||||||
|
|
|
||||||
|
|
@ -8,18 +8,9 @@ in
|
||||||
./disk-config.nix
|
./disk-config.nix
|
||||||
|
|
||||||
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
||||||
|
"${self}/modules/nixos/optional/nix-topology-self.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
topology.self = {
|
|
||||||
icon = "devices.cloud-server";
|
|
||||||
interfaces.wg = {
|
|
||||||
addresses = [ "192.168.3.4" ];
|
|
||||||
renderer.hidePhysicalConnections = true;
|
|
||||||
virtual = true;
|
|
||||||
type = "wireguard";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "23.11";
|
system.stateVersion = "23.11";
|
||||||
|
|
||||||
services.syncthing = {
|
services.syncthing = {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
./disk-config.nix
|
./disk-config.nix
|
||||||
|
|
||||||
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
||||||
|
"${self}/modules/nixos/optional/nix-topology-self.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
topology.self = {
|
topology.self = {
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,11 @@ in
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
topology.self.interfaces = {
|
||||||
|
"eth1" = { };
|
||||||
|
"wifi" = { };
|
||||||
|
};
|
||||||
|
|
||||||
swarselsystems = {
|
swarselsystems = {
|
||||||
isLaptop = true;
|
isLaptop = true;
|
||||||
isNixos = true;
|
isNixos = true;
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
./disk-config.nix
|
./disk-config.nix
|
||||||
|
|
||||||
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
||||||
|
"${self}/modules/nixos/optional/nix-topology-self.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
topology.self = {
|
topology.self = {
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,17 @@
|
||||||
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
topology.self = {
|
||||||
|
interfaces = {
|
||||||
|
"eth1" = { };
|
||||||
|
"eth2" = { };
|
||||||
|
"eth3" = { };
|
||||||
|
"eth4" = { };
|
||||||
|
"eth5" = { };
|
||||||
|
"eth6" = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
swarselsystems = {
|
swarselsystems = {
|
||||||
info = "HUNSN RM02, 8GB RAM";
|
info = "HUNSN RM02, 8GB RAM";
|
||||||
flakePath = "/root/.dotfiles";
|
flakePath = "/root/.dotfiles";
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ in
|
||||||
WLR_RENDERER_ALLOW_SOFTWARE = 1;
|
WLR_RENDERER_ALLOW_SOFTWARE = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
topology.self.interfaces."demo host" = { };
|
||||||
|
|
||||||
services.qemuGuest.enable = true;
|
services.qemuGuest.enable = true;
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,14 @@ in
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
topology.self = {
|
||||||
|
interfaces = {
|
||||||
|
"eth1" = { };
|
||||||
|
"wifi" = { };
|
||||||
|
"fritz-wg" = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
swarselsystems = {
|
swarselsystems = {
|
||||||
lowResolution = "1280x800";
|
lowResolution = "1280x800";
|
||||||
highResolution = "2560x1600";
|
highResolution = "2560x1600";
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,13 @@
|
||||||
"${self}/modules/nixos/optional/microvm-host.nix"
|
"${self}/modules/nixos/optional/microvm-host.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
topology.self = {
|
||||||
|
interfaces = {
|
||||||
|
"eth1" = { };
|
||||||
|
"eth2" = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
loader.systemd-boot.enable = true;
|
loader.systemd-boot.enable = true;
|
||||||
loader.efi.canTouchEfiVariables = true;
|
loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
topology.self.interfaces."bootstrapper" = { };
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "toto";
|
hostName = "toto";
|
||||||
firewall.enable = false;
|
firewall.enable = false;
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,11 @@
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
"${self}/modules/nixos/optional/systemd-networkd-server.nix"
|
||||||
|
"${self}/modules/nixos/optional/nix-topology-self.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
topology.self.interfaces."eth1" = { };
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
loader.systemd-boot.enable = true;
|
loader.systemd-boot.enable = true;
|
||||||
loader.efi.canTouchEfiVariables = true;
|
loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
description = "Minimal installer flake - not to be used manually";
|
description = "Minimal installer flake - automatically generated by SwarselSystems.org";
|
||||||
|
|
||||||
inputs.swarsel.url = "./..";
|
inputs.swarsel.url = "./..";
|
||||||
|
|
||||||
|
|
|
||||||
13
modules/nixos/optional/nix-topology-self.nix
Normal file
13
modules/nixos/optional/nix-topology-self.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{ config, globals, ... }:
|
||||||
|
{
|
||||||
|
topology.self = {
|
||||||
|
icon = lib.mkIf config.swarselsystems.isCloud "devices.cloud-server";
|
||||||
|
interfaces.wan = lib.mkIf config.swarselsystems.isCloud { };
|
||||||
|
interfaces.wg = lib.mkIf (config.swarselsystems.server.wireguard.isClient || config.swarselsystems.server.wireguard.isServer) {
|
||||||
|
addresses = [ globals.networks.twothreetunnel-wg.hosts.${config.node.name}.ipv4 ];
|
||||||
|
renderer.hidePhysicalConnections = true;
|
||||||
|
virtual = true;
|
||||||
|
type = "wireguard";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -5,7 +5,6 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
perSystem = { pkgs, ... }: {
|
perSystem = { pkgs, ... }: {
|
||||||
# formatter = pkgs.nixpkgs-fmt;
|
|
||||||
# formatter is set by treefmt to:
|
# formatter is set by treefmt to:
|
||||||
# formatter = lib.mkIf config.treefmt.flakeFormatter (lib.mkDefault config.treefmt.build.wrapper);
|
# formatter = lib.mkIf config.treefmt.flakeFormatter (lib.mkDefault config.treefmt.build.wrapper);
|
||||||
treefmt = {
|
treefmt = {
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,35 @@
|
||||||
# adapted from https://github.com/oddlama/nix-config/blob/main/nix/globals.nix
|
# adapted from https://github.com/oddlama/nix-config/blob/main/nix/globals.nix
|
||||||
{ inputs, ... }:
|
{ self, inputs, ... }:
|
||||||
{
|
{
|
||||||
flake = { config, lib, ... }:
|
|
||||||
|
imports = [
|
||||||
|
(
|
||||||
|
{ lib, flake-parts-lib, ... }:
|
||||||
|
flake-parts-lib.mkTransposedPerSystemModule {
|
||||||
|
name = "globals";
|
||||||
|
file = ./globals.nix;
|
||||||
|
option = lib.mkOption {
|
||||||
|
type = lib.types.unspecified;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
perSystem = { lib, pkgs, ... }:
|
||||||
{
|
{
|
||||||
globals =
|
globals =
|
||||||
let
|
let
|
||||||
globalsSystem = lib.evalModules {
|
globalsSystem = lib.evalModules {
|
||||||
prefix = [ "globals" ];
|
prefix = [ "globals" ];
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit (inputs.self.pkgs.x86_64-linux) lib; # fuck
|
inherit (pkgs) lib;
|
||||||
# inherit (self.outputs) lib;
|
inherit (self.outputs) nodes;
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
inherit (config) nodes;
|
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
../modules/nixos/common/globals.nix
|
../modules/nixos/common/globals.nix
|
||||||
(
|
(
|
||||||
{ lib, ... }:
|
{ lib, ... }:
|
||||||
let
|
let
|
||||||
# Try to access the extra builtin we loaded via nix-plugins.
|
|
||||||
# Throw an error if that doesn't exist.
|
|
||||||
sopsImportEncrypted =
|
sopsImportEncrypted =
|
||||||
assert lib.assertMsg (builtins ? extraBuiltins.sopsImportEncrypted)
|
assert lib.assertMsg (builtins ? extraBuiltins.sopsImportEncrypted)
|
||||||
"The extra builtin 'sopsImportEncrypted' is not available, so repo.secrets cannot be decrypted. Did you forget to add nix-plugins and point it to `./nix/extra-builtins.nix` ?";
|
"The extra builtin 'sopsImportEncrypted' is not available, so repo.secrets cannot be decrypted. Did you forget to add nix-plugins and point it to `./nix/extra-builtins.nix` ?";
|
||||||
|
|
@ -38,7 +48,7 @@
|
||||||
{
|
{
|
||||||
globals = lib.mkMerge (
|
globals = lib.mkMerge (
|
||||||
lib.concatLists (
|
lib.concatLists (
|
||||||
lib.flip lib.mapAttrsToList config.nodes (
|
lib.flip lib.mapAttrsToList self.outputs.nodes (
|
||||||
name: cfg:
|
name: cfg:
|
||||||
builtins.addErrorContext "while aggregating globals from nixosConfigurations.${name} into flake-level globals:" cfg.config._globalsDefs
|
builtins.addErrorContext "while aggregating globals from nixosConfigurations.${name} into flake-level globals:" cfg.config._globalsDefs
|
||||||
)
|
)
|
||||||
|
|
@ -50,8 +60,6 @@
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# Make sure the keys of this attrset are trivially evaluatable to avoid infinite recursion,
|
|
||||||
# therefore we inherit relevant attributes from the config.
|
|
||||||
inherit (globalsSystem.config.globals)
|
inherit (globalsSystem.config.globals)
|
||||||
domains
|
domains
|
||||||
services
|
services
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,8 @@
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit inputs outputs self minimal homeLib configName arch;
|
inherit inputs outputs self minimal homeLib configName arch;
|
||||||
inherit (config.pkgs.${arch}) lib;
|
inherit (config.pkgs.${arch}) lib;
|
||||||
inherit (config) globals nodes;
|
inherit (config) nodes;
|
||||||
|
globals = config.globals.${arch};
|
||||||
type = "nixos";
|
type = "nixos";
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
|
|
@ -68,7 +69,8 @@
|
||||||
inputs.nix-darwin.lib.darwinSystem {
|
inputs.nix-darwin.lib.darwinSystem {
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit inputs lib outputs self minimal configName;
|
inherit inputs lib outputs self minimal configName;
|
||||||
inherit (config) globals nodes;
|
inherit (config) nodes;
|
||||||
|
globals = config.globals.${arch};
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
# inputs.disko.nixosModules.disko
|
# inputs.disko.nixosModules.disko
|
||||||
|
|
@ -103,7 +105,8 @@
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit inputs lib outputs self configName arch type;
|
inherit inputs lib outputs self configName arch type;
|
||||||
inherit (config) globals nodes;
|
inherit (config) nodes;
|
||||||
|
globals = config.globals.${arch};
|
||||||
minimal = false;
|
minimal = false;
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
|
|
|
||||||
157
nix/topology.nix
157
nix/topology.nix
|
|
@ -7,6 +7,7 @@
|
||||||
perSystem.topology.modules = [
|
perSystem.topology.modules = [
|
||||||
({ config, ... }:
|
({ config, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (self.outputs) globals;
|
||||||
inherit (config.lib.topology)
|
inherit (config.lib.topology)
|
||||||
mkInternet
|
mkInternet
|
||||||
mkDevice
|
mkDevice
|
||||||
|
|
@ -21,95 +22,89 @@
|
||||||
networks = {
|
networks = {
|
||||||
home-lan = {
|
home-lan = {
|
||||||
name = "Home LAN";
|
name = "Home LAN";
|
||||||
cidrv4 = "192.168.1.0/24";
|
inherit (globals.networks.home-lan) cidrv4;
|
||||||
|
};
|
||||||
|
fritz-wg = {
|
||||||
|
name = "Wireguard Tunnel for Fritzbox net access";
|
||||||
|
inherit (globals.networks.twothreetunnel-wg) cidrv4;
|
||||||
};
|
};
|
||||||
wg = {
|
wg = {
|
||||||
name = "Wireguard Tunnel";
|
name = "Wireguard Tunnel for proxy access";
|
||||||
cidrv4 = "192.168.3.0/24";
|
inherit (globals.networks.twothreetunnel-wg) cidrv4;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
internet = mkInternet {
|
internet = mkInternet {
|
||||||
connections = [
|
connections = [
|
||||||
|
(mkConnection "fritzbox" "dsl")
|
||||||
(mkConnection "moonside" "wan")
|
(mkConnection "moonside" "wan")
|
||||||
(mkConnection "pfsense" "wan")
|
(mkConnection "belchsfactory" "wan")
|
||||||
(mkConnection "milkywell" "wan")
|
(mkConnection "twothreetunnel" "wan")
|
||||||
|
(mkConnection "stoicclub" "wan")
|
||||||
|
(mkConnection "liliputsteps" "wan")
|
||||||
|
(mkConnection "eagleland" "wan")
|
||||||
(mkConnection "magicant" "wifi")
|
(mkConnection "magicant" "wifi")
|
||||||
(mkConnection "toto" "bootstrapper")
|
(mkConnection "toto" "bootstrapper")
|
||||||
(mkConnection "hotel" "demo host")
|
(mkConnection "hotel" "demo host")
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
hotel.interfaces."demo host" = { };
|
|
||||||
toto.interfaces."bootstrapper" = { };
|
|
||||||
milkywell.interfaces.wan = { };
|
|
||||||
moonside.interfaces.wan = { };
|
|
||||||
|
|
||||||
pfsense = mkRouter "pfSense" {
|
fritzbox = mkRouter "FRITZ!Box" {
|
||||||
info = "HUNSN RM02";
|
info = "FRITZ!Box 7682";
|
||||||
image = "${self}/files/topology-images/hunsn.png";
|
image = "${self}/files/topology-images/hunsn.png";
|
||||||
interfaceGroups = [
|
interfaceGroups = [
|
||||||
[
|
[
|
||||||
|
"eth1"
|
||||||
"eth2"
|
"eth2"
|
||||||
"eth3"
|
"eth3"
|
||||||
"eth4"
|
"eth-wan"
|
||||||
"eth5"
|
"wifi"
|
||||||
"eth6"
|
|
||||||
]
|
]
|
||||||
[ "wan" ]
|
[ "dsl" ]
|
||||||
];
|
];
|
||||||
interfaces.wg = {
|
|
||||||
addresses = [ "192.168.3.1" ];
|
|
||||||
network = "wg";
|
|
||||||
virtual = true;
|
|
||||||
type = "wireguard";
|
|
||||||
};
|
|
||||||
|
|
||||||
connections = {
|
connections = {
|
||||||
eth2 = mkConnection "switch-livingroom" "eth1";
|
eth1 = mkConnection "winters" "eth1";
|
||||||
eth4 = mkConnection "winters" "eth1";
|
eth2 = mkConnection "switch-bedroom" "eth1";
|
||||||
eth3 = mkConnection "switch-bedroom" "eth1";
|
eth3 = mkConnection "switch-livingroom" "eth1";
|
||||||
eth6 = mkConnection "wifi-ap" "eth1";
|
eth-wan = mkConnection "hintbooth" "eth6";
|
||||||
wg = mkConnection "moonside" "wg";
|
wgPyramid = mkConnection "pyramid" "fritz-wg";
|
||||||
|
wgMagicant = mkConnection "magicant" "fritz-wg";
|
||||||
|
wifiPyramid = mkConnection "pyramid" "wifi";
|
||||||
|
wifiMagicant = mkConnection "magicant" "wifi";
|
||||||
|
wifiBakery = mkConnection "bakery" "wifi";
|
||||||
|
wifiMachpizza = mkConnection "machpizza" "wifi";
|
||||||
};
|
};
|
||||||
interfaces = {
|
interfaces = {
|
||||||
|
eth1 = {
|
||||||
|
addresses = [ globals.networks.home-lan.hosts.fritzbox.ipv4 ];
|
||||||
|
network = "home-lan";
|
||||||
|
};
|
||||||
eth2 = {
|
eth2 = {
|
||||||
addresses = [ "192.168.1.1" ];
|
addresses = [ globals.networks.home-lan.hosts.fritzbox.ipv4 ];
|
||||||
network = "home-lan";
|
network = "home-lan";
|
||||||
};
|
};
|
||||||
eth3 = {
|
eth3 = {
|
||||||
addresses = [ "192.168.1.1" ];
|
addresses = [ globals.networks.home-lan.hosts.fritzbox.ipv4 ];
|
||||||
network = "home-lan";
|
network = "home-lan";
|
||||||
};
|
};
|
||||||
eth4 = {
|
eth-wan = {
|
||||||
addresses = [ "192.168.1.1" ];
|
addresses = [ globals.networks.home-lan.hosts.fritzbox.ipv4 ];
|
||||||
network = "home-lan";
|
network = "home-lan";
|
||||||
};
|
};
|
||||||
eth6 = {
|
wifi = {
|
||||||
addresses = [ "192.168.1.1" ];
|
addresses = [ globals.networks.home-lan.hosts.fritzbox.ipv4 ];
|
||||||
|
virtual = true;
|
||||||
network = "home-lan";
|
network = "home-lan";
|
||||||
};
|
};
|
||||||
};
|
fritz-wg = {
|
||||||
};
|
addresses = [ globals.networks.fritz-wg.hosts.fritzbox.ipv4 ];
|
||||||
|
network = "wg";
|
||||||
winters.interfaces."eth1" = { };
|
virtual = true;
|
||||||
bakery.interfaces = {
|
type = "wireguard";
|
||||||
"eth1" = { };
|
};
|
||||||
"wifi" = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
wifi-ap = mkSwitch "Wi-Fi AP" {
|
|
||||||
info = "Huawei";
|
|
||||||
image = "${self}/files/topology-images/huawei.png";
|
|
||||||
interfaceGroups = [
|
|
||||||
[
|
|
||||||
"eth1"
|
|
||||||
"wifi"
|
|
||||||
]
|
|
||||||
];
|
|
||||||
connections = {
|
|
||||||
wifi = mkConnection "bakery" "wifi";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -135,33 +130,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nswitch = mkDevice "Nintendo Switch" {
|
|
||||||
info = "Nintendo Switch";
|
|
||||||
image = "${self}/files/topology-images/nintendo-switch.png";
|
|
||||||
interfaces.eth1 = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
magicant = mkDevice "magicant" {
|
|
||||||
icon = "${self}/files/topology-images/phone.png";
|
|
||||||
info = "Samsung Z Flip 6";
|
|
||||||
image = "${self}/files/topology-images/zflip6.png";
|
|
||||||
interfaces.wifi = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
machpizza = mkDevice "machpizza" {
|
|
||||||
info = "MacBook Pro 2016";
|
|
||||||
icon = "${self}/files/topology-images/mac.png";
|
|
||||||
interfaces."eth1" = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
pc = mkDevice "Windows Gaming Server" {
|
|
||||||
info = "i7-4790k, GTX970, 32GB RAM";
|
|
||||||
image = "${self}/files/topology-images/pc.png";
|
|
||||||
interfaces.eth1 = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
pyramid.interfaces.eth1 = { };
|
|
||||||
|
|
||||||
switch-bedroom = mkSwitch "Switch Bedroom" {
|
switch-bedroom = mkSwitch "Switch Bedroom" {
|
||||||
info = "TL-SG1005D";
|
info = "TL-SG1005D";
|
||||||
image = "${self}/files/topology-images/TL-SG1005D.png";
|
image = "${self}/files/topology-images/TL-SG1005D.png";
|
||||||
|
|
@ -178,6 +146,37 @@
|
||||||
connections.eth3 = mkConnection "machpizza" "eth1";
|
connections.eth3 = mkConnection "machpizza" "eth1";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nswitch = mkDevice "Nintendo Switch" {
|
||||||
|
info = "Nintendo Switch";
|
||||||
|
image = "${self}/files/topology-images/nintendo-switch.png";
|
||||||
|
interfaces.eth1 = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
magicant = mkDevice "magicant" {
|
||||||
|
icon = "${self}/files/topology-images/phone.png";
|
||||||
|
info = "Samsung Z Flip 6";
|
||||||
|
image = "${self}/files/topology-images/zflip6.png";
|
||||||
|
interfaces = {
|
||||||
|
wifi = { };
|
||||||
|
fritz-wg = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
machpizza = mkDevice "machpizza" {
|
||||||
|
info = "MacBook Pro 2016";
|
||||||
|
icon = "${self}/files/topology-images/mac.png";
|
||||||
|
interfaces = {
|
||||||
|
eth1 = { };
|
||||||
|
wifi = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pc = mkDevice "Windows Gaming Server" {
|
||||||
|
info = "i7-4790k, GTX970, 32GB RAM";
|
||||||
|
image = "${self}/files/topology-images/pc.png";
|
||||||
|
interfaces.eth1 = { };
|
||||||
|
};
|
||||||
|
|
||||||
printer = mkDevice "Printer" {
|
printer = mkDevice "Printer" {
|
||||||
info = "DELL C2665dnf";
|
info = "DELL C2665dnf";
|
||||||
image = "${self}/files/topology-images/DELL-C2665dnf.png";
|
image = "${self}/files/topology-images/DELL-C2665dnf.png";
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"data": "ENC[AES256_GCM,data:B46rhLphJ3aN90FqW5OvwyiKxa3Lsgfef1hj/I43vBCrndGhc6xVjL4ZqMKyddd2CLwKlwi62mBqPqThHkexB47SaJMwrml/TNVLOC16MjXNyQBVEj7ulb+Kq3juTiO9D49i809cAuy4K8Rq3XMHhPX5xyqC4cSfBLO5p7Ql/ktl57VyaDwKubd6z8iaSoF0d6Uy+MyoEKqDQBZBFHlSewxr5FIYI2w/av0Gxj88ONfcNbzdOHurU7zBhsHMO5L8YNXuU9Lmv7/Ay/Z7og5ISs0Bgje1dAdQ2/UBnodhZighZc6an+baLDH2Ja+Suc5XzSh+xxUAssGnXO7rVYKUrQhCa1gL+kTRecnYUMKdvfUbuQRjAqKQbFFGTAdHggJOQeoWcl60YpC3M//XVue6lG8RQrdiqJZ2jI9IzWKrt4dBXJh+nwew9xvZQQfeR2EcsYSt2cGZPUdfkL+CgasE64J7DaBtG+sorMjM8kGZK7pBqfOfNcHN0tlzdee5Bkc4QdsboW2PfmnYq6pa4S8ysSiqZ8mg42lSHbaVP8cET5bVi3JObqqaoR8ohMdo3ofih9FWuu1ovdtK7+m5dKwp15oWNUICWtNbWi5HqeoSYSDbjZJaIxY2wy3U4ULcUMShYwa9kRcKeTD1nsWF53J+Nkj+p22vxxOJ2crb2fzMpqv4whTxciY2uQ7PVljTW6O45Y5JeY4z2HEEEvZhz+XwQZjlki2AlA0CRpbOH10UHOMYzISZTCJKJyEFt9EmeCdIstYJCtYap7KdCOTmwrqnRuZByBgv6ZIwRwXUCI+hANTHOR1D+0nCZaURmW7gIKJ8pr4prUvA0e88i6pFWIBPSWkwsaZW4eO2YCgQ5TDjCdV5X1BLmcSGVa69FGb2tlVHN2B4WFhXYscZyGMvdfOiENLBVic+cxXd3RIqlEwaMew7E8hd92nwHKSkkb2yphMdPRLM22ruCI0jA1lrEl5GAL74f2+5loa23QeEtoxtYzfCCHi8vbNNdkeCfDBJCpORysOvuUOgqg+ZdVJQ29iug0rDXmTNkoxOm04C4WI4TEbMniLGcBDPH0re+oGsxwjmBUO5Nbjo/CnZNF1z7COGIY1U1KLAg1HAjy/pUt6c2SbDazBysBClVuubb7ghBdRiKWzZtWLQk6m9fwm9z8nMocNjmYbDLhp5MnrnuCA7JnyqU0TpvuJoGDy9vyQR/JKp9AAUrT//C69gdWsc83uRoLs8qtyU3YU42ey4+8jBh+opVYbKsz3NfNwnUSrGoLCb5qn6Yun+uD/95ljNCr/m5ec4kZEHBTrC9b9KU0cl8wYM/y81KA5eL4Ao0Ns7iP8YoKmQOOwmKPkWLsl1fNzr1SXjKGu+YaoF8pTHGGy697cq7aD33kxsUCL94nN20zzCeYoIEXKA2qw7tOPBrQZGMTKg8rDAK2gHZRqNRbRplhUegznTRl/ss78NDvBaVyE/DQGlWA3gEOX8CV8RyBA011LFUpbaAbqKpsiBp25YHTN4D2bLR8J6uT8Dgw23FlsDd+PG6q4T3B8pDvXERfVsORGBzAhU/Hmdnr06K1zgz6fpY/YUgrYGHCdto7+WMxMXbF6pxZVZQW7L5CtQJ1s9XdQ5lT41ddFISeQx6xpE5QxhBUzwA5kinHNzbNPHrW2uRLZQ/5ghVObyKokChZdMnhBR+OLmZdx0dBWl9Ym4IQpA/r7BqeGhvZBUlQBfq/gen+RNqzhhU7jXGyQjiC8k2UiKLzS2BaPYnxrMhTOkTEtb+GwGnQyKXXNhWspu9ETOmcSMvCXrhsq91oY5SKgBy6c0h/qtAgS/UFB70BRPjjfX68qRtyfCjJbAIAtGJcct8soOa6HBqnV1keb66eZRzYWkrHGUgRYx0aJ+LmrGhfLtW1vCjKoHCXcveZELF9Vm2FVsED9RIeNiaeBAtKhx/ibmPO2VlTHVAgB4fZ3Zo3b/kkXEULlcTAL6jLMiyysjyVHHD7iPkt++8UU4Xz4m6/Z/raGQMToeNOnUMQdCGKxvigrj/xql9DGta8QzQv6btj33mRxw7OMN0dZUe0GaYLRjyUF2h4rBpYRQSk5GUgn+JXFef+tcCmJVwTRlbAMfrXvOFNFhTexH4Ap3Sct/Rltm0J5ZBQFhOVpeJCA2c9o1aEF6xL01cQrz9nBYUvCfOgmm10js5dEu737mNsKH4uyVre+VD2NdJTy0nhIw80PfRaRjhyKfptPn4zMVZcqQaWpHLY20F/1FuGUPf+CM+t6GF4Su4GvLZ1DLzxVGZymhK5Kjx6HI/h29DkKRZfhV4DIu0j7cSqgaFde1rAXV9KlvrGCA2gQgEI7wlcJ6I/4iWwL0DDRuUWPdedKlhaSehab3kEl2xGE1u9hn8cTK5xy8Q/qdnOrMDR74852gT6qz1Jl7/sG5j+I47Mi1kCmjVKRlolbvh/IVW1dRccuXCrBzbmGOnTcTvIwIKr8MAb7li5WjlbpyBP9V2zk/fFn+F3P9agVL1MupW7RwCeViG7BOUru4l6qGlwfkgCCcUkJz/Cr4aL4BA9bHUuQ1OOz4ml15ukEqxpBymIetQjFvNLSHrfc2CPZQbwAk5gaxMda+uvy8uMqhQW3WUUiPfIamx+ZfXO/johhrN6nSe2sisQXMjVSCDGR0J/58PAMtkIRfGRtAjcbh5NXg/i4vZkcEWLbQ+QwfXfF2KDcXudzkOSyNyXCCPrGIKWay6GkB/dTjl1O9Wwj6hrniDYTGp8b/80PEQmIl9uQJYN1MS/tm/ehUJPuaaEDcqdQgIUNMBABpqjPN1ynJsIC+5YCoB0iVbUsNsHIzEkdl/kOGEHQgHkxX5V9I9eQa7RIWzHBN00V3hqIvTQLHhB14HydZwe0X+rc8qAJzvk9uM4gYvB4uZZcdhASoWrJzitv2P+Tw0uNz2TWSrJLswk3c9GU4AhP2ztT5xFsai1XfTGxdq3QvNjH3Jkv4raUm4uloPdEiAHsRj5kW0trZTqKxfvHd18HQY0dFSGylEzaKIyJSwf7rz06xUg==,iv:dHojDlbXWHw/EkpZkAJjT25TRh5vvVUxRY+Y9pbFBxA=,tag:E6DwDyrk79dS49wjX9XLag==,type:str]",
|
"data": "ENC[AES256_GCM,data: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,iv:/e9U+fXMYBOjubsIOKa3dZV6bs6F+OqTyBryUrwPySM=,tag:ThVhvz+Hg6Wq8MMkR4eQOw==,type:str]",
|
||||||
"sops": {
|
"sops": {
|
||||||
"age": [
|
"age": [
|
||||||
{
|
{
|
||||||
|
|
@ -51,8 +51,8 @@
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvbTFqR3RScWxnTFR3dlhv\nNUNEVGRkUDB4L3J6ckJIMWZCWk44RjdpVmxRCkhzZTBuSGduanBmQWsvNW5XMWQv\nYVZmNS9FVzN3a05kUVBheDljYUUrcHcKLS0tIGxPN1dWVkg4NUpnZGJ6VWFJWFVZ\nYnNvRG94MmFxYnlDQ0JyeDNFQldzdlkKsp+nYSR6Lxq8b3/dpMO7uTbNnO0Bva7w\nb9s908PLaZEN1jywEoba3yq743vuEHCKQWFIfDtsRcbNR6Yr4d2eGw==\n-----END AGE ENCRYPTED FILE-----\n"
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvbTFqR3RScWxnTFR3dlhv\nNUNEVGRkUDB4L3J6ckJIMWZCWk44RjdpVmxRCkhzZTBuSGduanBmQWsvNW5XMWQv\nYVZmNS9FVzN3a05kUVBheDljYUUrcHcKLS0tIGxPN1dWVkg4NUpnZGJ6VWFJWFVZ\nYnNvRG94MmFxYnlDQ0JyeDNFQldzdlkKsp+nYSR6Lxq8b3/dpMO7uTbNnO0Bva7w\nb9s908PLaZEN1jywEoba3yq743vuEHCKQWFIfDtsRcbNR6Yr4d2eGw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"lastmodified": "2025-12-04T23:12:18Z",
|
"lastmodified": "2025-12-19T16:02:26Z",
|
||||||
"mac": "ENC[AES256_GCM,data:PzZro7emdnVU18DBrLzIcsJgFk8WzNT9uTZydHlHsdDZj2zTwQFrvQ+T6I8ZMDJ8e4DISC9yGcmMYIm/LebGUROGUQHIBfKH7VpWOaFUZj8N0FksQGdWso/Q83jO7TPMQXqUg80WIBT00hoNgWznZpHR15TNKJSvGo91Wrb0Ms4=,iv:UHL+biMhOOXZ2IRLhH7gQTg01VuwyqS2xOjfhqGzjpI=,tag:9Va8ieM8upWt0Mxk4rJ6cQ==,type:str]",
|
"mac": "ENC[AES256_GCM,data:jP8kwTNwYRteIxbk5Zu8VHzapyVvUUTCmq67agl+uRYNaPmtkZiBjmrG8oN0hWgEpbytrvKPZzWJ92NTxzyGdvW7sIHX2z6PTU0O1u/x4jmWKvv/zDZhy9+7kVlWYrc7AO7gIRdzWtHmOzYkm2+soNmq/cd5sj2/DeiksmUK/10=,iv:qKayuVRwMg+qfEuYhIGqG1fx46SpKA9UFlt7aBSDhLM=,tag:fl0j4VBMaQzmA0clFEcEwg==,type:str]",
|
||||||
"pgp": [
|
"pgp": [
|
||||||
{
|
{
|
||||||
"created_at": "2025-12-15T21:53:38Z",
|
"created_at": "2025-12-15T21:53:38Z",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue