{ modulesPath, config, pkgs, lib, inputs, ... } @ args: # Hetzner-VPS, keine eigene Hardware -- bewusst als Reduktionskandidat # geführt, nicht als Endzustand: docs/roadmap.md §1 (Ersatz durch direktes # IPv6 vom 5G-Router zu pinix), docs/operator-prompt.md §0 (verbleibende # externe Abhängigkeiten aktiv abbauen, nicht nur tolerieren). { imports = [ # ./hardware-configuration.nix ../user/drone.nix ../globalServices/default.nix ./localServices/default.nix ./disko.nix (modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/profiles/qemu-guest.nix") ]; boot.loader.grub = { efiSupport = true; efiInstallAsRemovable = true; }; networking = { hostName = "blunix"; nameservers = [ "1.1.1.1" "8.8.8.8" ]; }; networking.useDHCP = false; networking.interfaces.enp1s0.useDHCP = true; # Der Hoster weist ein /64 zu, das hier nie konfiguriert war: blunix hatte # ausser der Link-Local-Adresse keine IPv6 (gefunden am 12.09.2026). Das # war die Ursache dafuer, dass pinix -- IPv6-only hinter dem Mobilfunk -- # aus dem Tailnet gefallen ist: tailscaled loest selbst auf, nimmt den # A-Eintrag von head.0ff.space und waehlt 23.88.33.137 direkt, obwohl # pinix keine IPv4-Default-Route hat. Details: docs/pinix-reboot-probe.md. # # Vorgabe des Hosters (Metadaten-Schnittstelle): Adresse ::1 im # zugewiesenen /64, Gateway als Link-Local fe80::1. # # Der dhcpcd-Fallstrick von pinix greift hier *nicht*: dort nahm eine # statische IPv6 dem Host das Internet, weil das Modul `noipv6rs` setzt # und damit die RA-Default-Route entfiel # (docs/session-2026-09-12-pinix-traefik.md). Dieses Netz kennt ohnehin # keine RA, die Route wird explizit gesetzt. IPv4 bleibt bei DHCP. networking.interfaces.enp1s0.ipv6.addresses = [ { address = config.publicIPv6; prefixLength = 64; } ]; networking.defaultGateway6 = { address = "fe80::1"; interface = "enp1s0"; }; # Several concurrent Herdr agent panes routinely push this 3.7G-RAM VPS # into OOM territory (found live 01.09.2026: killed a plain `nix eval` # twice with exit 137). No swap was configured at all. A plain swap file # on the existing ext4 root fits without touching disko's LVM layout. swapDevices = [ { device = "/var/swapfile"; size = 2048; } ]; boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; environment.enableAllTerminfo = true; ################################################################################################################################################################ time.timeZone = "Europe/Berlin"; console.keyMap = "de"; nix.settings.experimental-features = [ "nix-command" "flakes" ]; nixpkgs.config.allowUnfree = true; nix.settings.trusted-users = [ "root" "builder" "drone" "@wheel" ]; users.mutableUsers = true; system.stateVersion = "24.05"; }