{ ip, stateVersion, hostname, ... }: { imports = [ ./${hostname} # Modules ../common/modules/nixos.nix ../common/modules/networking.nix # Services ../common/services/promtail.nix ../common/services/telegraf.nix ../common/services/openssh.nix ../common/services/gnupg-agent.nix ]; networking.interfaces.eth0.ipv4.addresses = [{ address = "192.168.2.${ip}"; prefixLength = 24; }]; # We can access the internet through this interface. networking.defaultGateway = { address = "192.168.2.1"; interface = "eth0"; }; boot.isContainer = true; system.stateVersion = stateVersion; networking.hostName = "${hostname}"; # Set up the secrets file: sops.secrets."tailscale_key" = { owner = "root"; sopsFile = ../../secrets/containers/${hostname}.yaml; restartUnits = [ "tailscaled.service" "tailscaled-autoconnect.service" ]; }; services.tailscale = { enable = true; interfaceName = "tailscale0"; extraUpFlags = [ "--login-server=https://headscale.sysctl.io" "--accept-dns" "--accept-routes" ]; }; networking.firewall.interfaces.tailscale0.allowedTCPPorts = [ 22 ]; networking.firewall.checkReversePath = "loose"; networking.extraHosts = '' 100.64.0.14 influx.sysctl.io 100.64.0.14 loki.sysctl.io ''; # Select internationalisation properties. i18n.defaultLocale = "en_US.UTF-8"; i18n.extraLocaleSettings = { LC_ADDRESS = "en_US.UTF-8"; LC_IDENTIFICATION = "en_US.UTF-8"; LC_MEASUREMENT = "en_US.UTF-8"; LC_MONETARY = "en_US.UTF-8"; LC_NAME = "en_US.UTF-8"; LC_NUMERIC = "en_US.UTF-8"; LC_PAPER = "en_US.UTF-8"; LC_TELEPHONE = "en_US.UTF-8"; LC_TIME = "en_US.UTF-8"; }; }