nixos-config/hosts/plover/modules/hardware/hetzner-cloud-cx21.nix

117 lines
3.2 KiB
Nix
Raw Normal View History

{ config, lib, pkgs, modulesPath, ... }:
2022-11-23 05:27:01 +00:00
2022-11-25 13:27:23 +00:00
# Most of the filesystems listed here are supposed to be overriden to default
# settings of whatever image format configuration this host system will import
# from nixos-generators.
let
2023-01-19 12:16:01 +00:00
inherit (builtins) toString;
2023-02-06 11:32:55 +00:00
inherit (import ./networks.nix) interfaces;
2023-01-19 12:12:14 +00:00
# This is just referring to the same interface just with alternative names.
2023-02-05 03:45:06 +00:00
mainEthernetInterfaceNames = [ "ens3" "enp0s3" ];
internalEthernetInterfaceNames = [ "ens10" "enp0s10" ];
2023-01-19 12:12:14 +00:00
in
2022-11-23 05:27:01 +00:00
{
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.loader.grub.device = "/dev/sda";
boot.initrd.availableKernelModules = [ "ata_piix" "virtio_pci" "virtio_scsi" "xhci_pci" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ "nvme" ];
fileSystems."/" = {
2022-11-23 05:27:01 +00:00
label = "nixos";
fsType = "ext4";
options = [ "defaults" ];
2022-11-23 05:27:01 +00:00
};
fileSystems."/boot" = {
label = "boot";
fsType = "vfat";
};
2023-02-25 02:02:43 +00:00
zramSwap.enable = true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
networking = {
enableIPv6 = true;
usePredictableInterfaceNames = true;
useNetworkd = true;
# We're using networkd to configure so we're disabling this
# service.
useDHCP = false;
dhcpcd.enable = false;
};
2023-02-09 06:17:59 +00:00
# The local DNS resolver. This should be used in conjunction with an
# authoritative DNS server as a forwarder. Also, it should live in its
# default address at 127.0.0.53 (as of systemd v252).
services.resolved.enable = true;
2023-02-06 08:00:56 +00:00
# The interface configuration is based from the following discussion:
# https://discourse.nixos.org/t/nixos-on-hetzner-cloud-servers-ipv6/221/
systemd.network = {
enable = true;
2023-02-22 03:29:43 +00:00
wait-online.ignoredInterfaces = [ "lo" ];
2023-01-19 12:12:14 +00:00
# For more information, you can look at Hetzner documentation from
# https://docs.hetzner.com/robot/dedicated-server/ip/additional-ip-adresses/
networks = {
2023-02-05 03:45:06 +00:00
"10-wan" = with interfaces.main'; {
2023-01-19 12:12:14 +00:00
matchConfig.Name = lib.concatStringsSep " " mainEthernetInterfaceNames;
2023-02-05 03:45:06 +00:00
# Setting up IPv6.
address = [ "${IPv6.address}/64" ];
gateway = [ IPv6.gateway ];
2023-02-05 03:45:06 +00:00
networkConfig = {
# IPv6 has to be manually configured.
DHCP = "ipv4";
2023-02-22 03:29:43 +00:00
IPForward = true;
LinkLocalAddressing = "ipv6";
2023-02-22 03:29:43 +00:00
IPv6AcceptRA = true;
DNS = [
"2a01:4ff:ff00::add:2"
"2a01:4ff:ff00::add:1"
];
2023-02-05 03:45:06 +00:00
};
2023-01-19 12:12:14 +00:00
};
"20-lan" = with interfaces.internal; {
matchConfig.Name = lib.concatStringsSep " " internalEthernetInterfaceNames;
2023-02-05 03:45:06 +00:00
address = [
"${IPv4.address}/16"
"${IPv6.address}/64"
];
2023-02-05 03:45:06 +00:00
# Using the authoritative DNS server to enable accessing them nice
# internal services with domain names.
dns = [
IPv4.address
IPv6.address
# Just in case it cannot really do it.
"127.0.0.1"
"::1"
];
domains = [ config.networking.fqdn ];
gateway = [
IPv4.gateway
IPv6.gateway
];
2023-02-22 03:29:43 +00:00
networkConfig.IPv6AcceptRA = true;
2023-01-19 12:12:14 +00:00
};
};
};
2022-11-23 05:27:01 +00:00
}