This commit is contained in:
Malte Tammena 2024-08-18 11:50:22 +02:00
parent bd3f6996d6
commit 35701a3219
16 changed files with 521 additions and 19 deletions

View file

@ -202,6 +202,28 @@
"type": "github"
}
},
"devshell_6": {
"inputs": {
"flake-utils": "flake-utils_6",
"nixpkgs": [
"nix-topology",
"nixpkgs"
]
},
"locked": {
"lastModified": 1713532798,
"narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=",
"owner": "numtide",
"repo": "devshell",
"rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"dream2nix": {
"inputs": {
"all-cabal-json": "all-cabal-json",
@ -455,6 +477,22 @@
}
},
"flake-compat_7": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_8": {
"locked": {
"lastModified": 1717312683,
"narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=",
@ -469,7 +507,7 @@
"type": "github"
}
},
"flake-compat_8": {
"flake-compat_9": {
"flake": false,
"locked": {
"lastModified": 1696426674,
@ -736,6 +774,42 @@
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_7": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_8": {
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1705309234,
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
@ -750,9 +824,9 @@
"type": "github"
}
},
"flake-utils_7": {
"flake-utils_9": {
"inputs": {
"systems": "systems_3"
"systems": "systems_5"
},
"locked": {
"lastModified": 1710146030,
@ -845,6 +919,28 @@
}
},
"gitignore_3": {
"inputs": {
"nixpkgs": [
"nix-topology",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gitignore_4": {
"inputs": {
"nixpkgs": [
"nix-wallpaper",
@ -866,7 +962,7 @@
"type": "github"
}
},
"gitignore_4": {
"gitignore_5": {
"inputs": {
"nixpkgs": [
"pre-commit-hooks-nix",
@ -1165,7 +1261,7 @@
},
"lib-aggregate": {
"inputs": {
"flake-utils": "flake-utils_7",
"flake-utils": "flake-utils_9",
"nixpkgs-lib": "nixpkgs-lib_4"
},
"locked": {
@ -1378,14 +1474,37 @@
"type": "github"
}
},
"nix-wallpaper": {
"nix-topology": {
"inputs": {
"flake-utils": "flake-utils_6",
"devshell": "devshell_6",
"flake-utils": "flake-utils_7",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks": "pre-commit-hooks_4"
},
"locked": {
"lastModified": 1722338736,
"narHash": "sha256-bSnWgJ7eXgHZ/pwL7+NTDGfOzsbOiw899BV3k7TawWE=",
"owner": "oddlama",
"repo": "nix-topology",
"rev": "870dcc9074077a327220b36597098c295944a47d",
"type": "github"
},
"original": {
"owner": "oddlama",
"repo": "nix-topology",
"type": "github"
}
},
"nix-wallpaper": {
"inputs": {
"flake-utils": "flake-utils_8",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks": "pre-commit-hooks_5"
},
"locked": {
"lastModified": 1708554876,
"narHash": "sha256-gaL/q2OtucwPrh/nVm1kvtLSvGdcem0E87WZ+rozBYc=",
@ -1543,6 +1662,22 @@
}
},
"nixpkgs-stable_3": {
"locked": {
"lastModified": 1710695816,
"narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "614b4613980a522ba49f0d194531beddbb7220d3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable_4": {
"locked": {
"lastModified": 1704874635,
"narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=",
@ -1558,7 +1693,7 @@
"type": "github"
}
},
"nixpkgs-stable_4": {
"nixpkgs-stable_5": {
"locked": {
"lastModified": 1720386169,
"narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=",
@ -1574,7 +1709,7 @@
"type": "github"
}
},
"nixpkgs-stable_5": {
"nixpkgs-stable_6": {
"locked": {
"lastModified": 1721524707,
"narHash": "sha256-5NctRsoE54N86nWd0psae70YSLfrOek3Kv1e8KoXe/0=",
@ -1592,7 +1727,7 @@
},
"nixpkgs-wayland": {
"inputs": {
"flake-compat": "flake-compat_7",
"flake-compat": "flake-compat_8",
"lib-aggregate": "lib-aggregate",
"nix-eval-jobs": "nix-eval-jobs",
"nixpkgs": "nixpkgs_13"
@ -1969,10 +2104,10 @@
},
"pre-commit-hooks-nix_3": {
"inputs": {
"flake-compat": "flake-compat_8",
"gitignore": "gitignore_4",
"flake-compat": "flake-compat_9",
"gitignore": "gitignore_5",
"nixpkgs": "nixpkgs_14",
"nixpkgs-stable": "nixpkgs-stable_4"
"nixpkgs-stable": "nixpkgs-stable_5"
},
"locked": {
"lastModified": 1722857853,
@ -2055,16 +2190,44 @@
"inputs": {
"flake-compat": "flake-compat_6",
"flake-utils": [
"nix-wallpaper",
"nix-topology",
"flake-utils"
],
"gitignore": "gitignore_3",
"nixpkgs": [
"nix-wallpaper",
"nix-topology",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable_3"
},
"locked": {
"lastModified": 1714478972,
"narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "2849da033884f54822af194400f8dff435ada242",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"pre-commit-hooks_5": {
"inputs": {
"flake-compat": "flake-compat_7",
"flake-utils": [
"nix-wallpaper",
"flake-utils"
],
"gitignore": "gitignore_4",
"nixpkgs": [
"nix-wallpaper",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable_4"
},
"locked": {
"lastModified": 1708018599,
"narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=",
@ -2141,6 +2304,7 @@
"hyprland-contrib": "hyprland-contrib",
"jovian-nixos": "jovian-nixos",
"mensa": "mensa",
"nix-topology": "nix-topology",
"nix-wallpaper": "nix-wallpaper",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_11",
@ -2156,7 +2320,7 @@
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable_5"
"nixpkgs-stable": "nixpkgs-stable_6"
},
"locked": {
"lastModified": 1722897572,
@ -2217,6 +2381,36 @@
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_5": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": "nixpkgs_5"

View file

@ -56,6 +56,11 @@
url = "github:qmk/qmk_firmware";
flake = false;
};
nix-topology = {
url = "github:oddlama/nix-topology";
inputs.nixpkgs.follows = "nixpkgs";
};
};
nixConfig = {
@ -84,6 +89,7 @@
modulesSharedByAllSystems = [
inputs.sops-nix.nixosModules.sops
inputs.home-manager.nixosModules.home-manager
inputs.nix-topology.nixosModules.default
./modules/base-system.nix
];
# The list of all hosts known to me
@ -98,6 +104,7 @@
inputs.devshell.flakeModule
inputs.treefmt-nix.flakeModule
inputs.pre-commit-hooks-nix.flakeModule
inputs.nix-topology.flakeModule
];
# Available systems, only x86 for now
systems = ["x86_64-linux"];
@ -105,8 +112,14 @@
pkgs,
self',
config,
system,
...
}: {
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
overlays = [inputs.nix-topology.overlays.default];
};
# Configure treefmt
treefmt.projectRootFile = "flake.nix";
treefmt.programs = {
@ -146,6 +159,8 @@
self'.packages.test-config
];
};
topology.modules = [./topology.nix {_module.args.inputs = inputs;}];
};
# Useful modules and all those from ./modules
flake.nixosModules =

View file

@ -1,6 +1,7 @@
{pkgs, ...}: {
imports = [
../../hardware/intel-nuc.nix
./topology.nix
];
config = {
boot.loader.systemd-boot.enable = true;

View file

@ -0,0 +1,36 @@
{
topology.self = {
hardware.info = "Intel NUC";
interfaces.looking-glas = {
icon = "interfaces.tun";
network = "tailnet";
virtual = true;
addresses = [
"100.102.99.37"
"fd7a:115c:a1e0:ab12:4843:cd96:6266:6325"
];
physicalConnections = [
{
node = "tailnet";
interface = "*";
}
];
};
interfaces.eno1 = {
icon = "interfaces.ethernet";
network = "home";
physicalConnections = [
{
node = "den-den-mushi";
interface = "lan3";
}
];
};
interfaces.wlp2s0 = {
icon = "interfaces.wifi";
};
};
}

View file

@ -9,6 +9,7 @@
in {
imports = [
inputs.nixos-hardware.nixosModules.common-cpu-intel #-cpu-only
./topology.nix
../../modules/nginx-reverse-proxy.nix
../../hardware/asrock-z370-i3-black-box.nix
./modules/calibre.nix

View file

@ -0,0 +1,38 @@
{lib, ...}: {
topology.self = {
hardware.info = "Home Server";
interfaces.looking-glas = {
icon = "interfaces.tun";
network = "tailnet";
virtual = true;
addresses = [
"100.108.135.4"
"fd7a:115c:a1e0:ab12:4843:cd96:626c:8704"
];
physicalConnections = [
{
node = "tailnet";
interface = "*";
}
];
};
interfaces.eno1 = {
icon = "interfaces.ethernet";
network = "home";
addresses = [
"192.168.1.169"
"2003:c7:cf11:4200::451"
"fd3b:de86:922c::451"
];
mac = lib.mkForce "70:85:c2:77:94:ed";
physicalConnections = [
{
node = "den-den-mushi";
interface = "lan2";
}
];
};
};
}

View file

@ -14,6 +14,7 @@ in {
../../hardware/netcup-vps-200-g10.nix
../../modules/nginx-reverse-proxy.nix
./modules/murmur.nix
./topology.nix
];
config = {
boot.loader.grub.enable = true;

View file

@ -0,0 +1,31 @@
{
topology.self = {
hardware.info = "Netcup VPS";
interfaces.looking-glas = {
icon = "interfaces.tun";
network = "tailnet";
virtual = true;
addresses = [
"100.66.69.111"
"fd7a:115c:a1e0:ab12:4843:cd96:6242:456f"
];
physicalConnections = [
{
node = "tailnet";
interface = "*";
}
];
};
interfaces.ens3 = {
icon = "interfaces.ethernet";
physicalConnections = [
{
node = "internet";
interface = "*";
}
];
};
};
}

View file

@ -13,6 +13,7 @@
inputs.custom-udev-rules.nixosModule
../../hardware/thinkpad-p1-gen3.nix
../../modules/light-actkbd.nix
./topology.nix
];
config = {

View file

@ -0,0 +1,33 @@
{
topology.self = {
hardware.info = "Thinkpad P1 Gen3";
deviceIcon = "devices.laptop";
interfaces.looking-glas = {
icon = "interfaces.tun";
network = "tailnet";
virtual = true;
addresses = [
"100.77.45.59"
"fd7a:115c:a1e0:ab12:4843:cd96:624d:2d3b"
];
physicalConnections = [
{
node = "tailnet";
interface = "*";
}
];
};
interfaces.wlp0s20f3 = {
icon = "interfaces.wifi";
network = "home";
physicalConnections = [
{
node = "home-ap";
interface = "wifi";
}
];
};
};
}

View file

@ -11,6 +11,7 @@
inputs.self.nixosModules.homeManagerConfig
inputs.custom-udev-rules.nixosModule
../../hardware/aorus.nix
./topology.nix
];
config = {
@ -33,7 +34,6 @@
settings.minimalGnome.enable = true;
sound.enable = true;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
@ -77,7 +77,6 @@
hardware = {
opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
extraPackages = with pkgs; [amdvlk];
extraPackages32 = with pkgs; [driversi686Linux.amdvlk];

View file

@ -0,0 +1,41 @@
{
topology.self = {
hardware.info = "PC";
deviceIcon = "devices.desktop";
interfaces.looking-glas = {
icon = "interfaces.tun";
network = "tailnet";
virtual = true;
addresses = [
"100.120.38.101"
"fd7a:115c:a1e0:ab12:4843:cd96:6278:2665"
];
physicalConnections = [
{
node = "tailnet";
interface = "*";
}
];
};
interfaces.eno1 = {
mac = "18:c0:4d:8e:42:f7";
};
interfaces.wlp8s0 = {
icon = "interfaces.wifi";
network = "home";
addresses = [
"192.168.1.133"
];
mac = "e8:84:a5:0d:3f:40";
physicalConnections = [
{
node = "home-ap";
interface = "wifi";
}
];
};
};
}

View file

@ -9,6 +9,7 @@
inputs.jovian-nixos.nixosModules.default
../../hardware/steam-deck.nix
../../modules/steam.nix
./topology.nix
];
config = {
boot.loader.systemd-boot = {
@ -48,7 +49,8 @@
services.xserver.enable = true;
services.xserver.desktopManager.plasma5.enable = true;
services.xserver.displayManager = {
services.displayManager = {
autoLogin = {
enable = true;
user = "deck";

View file

@ -0,0 +1,26 @@
{
topology.self = {
hardware.info = "Steam Deck";
interfaces.looking-glas = {
icon = "interfaces.tun";
network = "tailnet";
virtual = true;
addresses = [
"100.92.166.136"
"fd7a:115c:a1e0:ab12:4843:cd96:625c:a688"
];
physicalConnections = [
{
node = "tailnet";
interface = "*";
}
];
};
interfaces.wlo1 = {
icon = "interfaces.wifi";
network = "home";
};
};
}

View file

@ -173,6 +173,7 @@ in {
enable = true;
interfaceName = "looking-glas";
};
networking.interfaces.looking-glas = {};
networking.firewall.allowedUDPPorts = [config.services.tailscale.port];
# Regularly clear the store

82
topology.nix Normal file
View file

@ -0,0 +1,82 @@
{
lib,
config,
inputs,
...
}: {
nodes.internet = config.lib.topology.mkInternet {};
nodes.tailnet = {
name = "tailnet";
hardware.info = "Tailscale Private Network";
deviceType = "internet";
hardware.image = config.nodes.internet.hardware.image;
interfaces."*" = {};
};
nodes.den-den-mushi = {
deviceType = "router";
hardware.info = "AVM FRITZ!Box 7530";
interfaces = {
dsl0 = {
icon = "interfaces.ethernet";
mac = "AC:9A:96:11:22:33";
physicalConnections = [
{
node = "internet";
interface = "*";
}
];
};
lan1 = {
mac = "DC:39:6F:19:9B:84";
network = "home";
};
lan2 = {
mac = "DC:39:6F:19:9B:84";
network = "home";
};
lan3 = {
mac = "DC:39:6F:19:9B:84";
network = "home";
};
lan4 = {
mac = "DC:39:6F:19:9B:84";
network = "home";
};
};
};
nodes.home-ap = {
deviceType = "switch";
hardware.info = "Ubiquiti AP Unifi U6+";
interfaces = {
wifi = {
icon = "interfaces.wifi";
};
lan1 = {
physicalConnections = [
{
node = "den-den-mushi";
interface = "lan1";
}
];
};
};
};
nixosConfigurations = let
filterFn = name: _: !(builtins.elem name ["radix-balthica" "trochulus-hispidus"]);
in
lib.mkForce (lib.filterAttrs filterFn inputs.self.nixosConfigurations);
networks.home = {
name = "Home Network";
cidrv4 = "192.168.1.0/24";
cidrv6 = "2003:c7:cf11:4200::1/60";
};
networks.tailnet = {
name = "Tailscale Network";
cidrv4 = "100.0.0.0/8";
};
}