Jack O'Sullivan
c4e6896a0c
All checks were successful
CI / Check, build and cache Nix flake (push) Successful in 16m35s
180 lines
4.8 KiB
Nix
180 lines
4.8 KiB
Nix
{ lib, ... }:
|
|
let
|
|
inherit (lib.my) net mkVLAN;
|
|
inherit (lib.my.c) pubDomain;
|
|
inherit (lib.my.c.home) domain vlans prefixes vips;
|
|
in
|
|
{
|
|
nixos.systems.palace = {
|
|
system = "x86_64-linux";
|
|
nixpkgs = "mine-stable";
|
|
home-manager = "mine-stable";
|
|
|
|
assignments = {
|
|
hi = {
|
|
inherit domain;
|
|
ipv4 = {
|
|
address = net.cidr.host 22 prefixes.hi.v4;
|
|
mask = 22;
|
|
gateway = vips.hi.v4;
|
|
};
|
|
};
|
|
core = {
|
|
inherit domain;
|
|
name = "palace-core";
|
|
ipv4 = {
|
|
address = net.cidr.host 20 prefixes.core.v4;
|
|
gateway = null;
|
|
};
|
|
};
|
|
};
|
|
|
|
configuration = { lib, pkgs, modulesPath, config, systems, assignments, allAssignments, ... }:
|
|
let
|
|
inherit (lib) mkForce mkMerge;
|
|
inherit (lib.my) networkdAssignment;
|
|
in
|
|
{
|
|
boot = {
|
|
kernelModules = [ "kvm-amd" ];
|
|
kernelParams = [ "amd_iommu=on" ];
|
|
initrd = {
|
|
availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" "sr_mod" ];
|
|
};
|
|
};
|
|
|
|
hardware = {
|
|
enableRedistributableFirmware = true;
|
|
cpu = {
|
|
amd.updateMicrocode = true;
|
|
};
|
|
};
|
|
|
|
fileSystems = {
|
|
"/boot" = {
|
|
device = "/dev/disk/by-partuuid/c06a8d24-2af9-4416-bf5e-cfe6defdbd47";
|
|
fsType = "vfat";
|
|
};
|
|
"/nix" = {
|
|
device = "/dev/disk/by-partuuid/71695225-b306-41e6-83f8-c5cde57c06f7";
|
|
fsType = "ext4";
|
|
};
|
|
"/persist" = {
|
|
device = "/dev/disk/by-partuuid/9991aec3-c062-41d1-971e-e056b63370f0";
|
|
fsType = "ext4";
|
|
neededForBoot = true;
|
|
};
|
|
};
|
|
|
|
services = {
|
|
smartd = {
|
|
enable = true;
|
|
autodetect = true;
|
|
extraOptions = [ "-A /var/log/smartd/" "--interval=600" ];
|
|
};
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
pciutils
|
|
usbutils
|
|
partclone
|
|
lm_sensors
|
|
linuxPackages.cpupower
|
|
smartmontools
|
|
mstflint
|
|
ethtool
|
|
];
|
|
|
|
networking.domain = "h.${pubDomain}";
|
|
|
|
systemd = {
|
|
tmpfiles.rules = [
|
|
"d /var/log/smartd 0755 root root"
|
|
];
|
|
|
|
services = {
|
|
setup-mlx5-vfs = {
|
|
description = "Enable 100G NIC VFs";
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
};
|
|
script = ''
|
|
vfsFile=/sys/class/infiniband/mlx5_0/device/sriov_numvfs
|
|
until [ -f "$vfsFile" ]; do
|
|
sleep 0.2
|
|
done
|
|
|
|
echo 3 > "$vfsFile"
|
|
'';
|
|
wantedBy = [ "multi-user.target" ];
|
|
before = [ "network-pre.target" ];
|
|
};
|
|
};
|
|
|
|
network = {
|
|
links = {
|
|
"10-et1g0" = {
|
|
matchConfig.MACAddress = "e0:d5:5e:68:0c:6e";
|
|
linkConfig.Name = "et1g0";
|
|
};
|
|
"10-lan-core" = {
|
|
matchConfig.MACAddress = "e0:d5:5e:68:0c:70";
|
|
linkConfig.Name = "lan-core";
|
|
};
|
|
"10-et100g" = {
|
|
matchConfig = {
|
|
PermanentMACAddress = "24:8a:07:ac:59:c0";
|
|
Driver = "mlx5_core";
|
|
};
|
|
linkConfig = {
|
|
Name = "et100g";
|
|
MTUBytes = "9000";
|
|
};
|
|
};
|
|
};
|
|
|
|
netdevs = mkMerge [
|
|
(mkVLAN "lan-hi" vlans.hi)
|
|
];
|
|
|
|
networks = {
|
|
"50-lan-core" = mkMerge [
|
|
(networkdAssignment "lan-core" assignments.core)
|
|
{
|
|
matchConfig.Name = "lan-core";
|
|
networkConfig.IPv6AcceptRA = mkForce false;
|
|
}
|
|
];
|
|
|
|
"50-et100g" = {
|
|
matchConfig.Name = "et100g";
|
|
vlan = [ "lan-hi" ];
|
|
networkConfig.IPv6AcceptRA = false;
|
|
};
|
|
"60-lan-hi" = mkMerge [
|
|
(networkdAssignment "lan-hi" assignments.hi)
|
|
{
|
|
matchConfig.Name = "lan-hi";
|
|
linkConfig.MTUBytes = "9000";
|
|
networkConfig.DNS = [
|
|
(allAssignments.stream.hi.ipv4.address)
|
|
# (allAssignments.river.hi.ipv4.address)
|
|
];
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
my = {
|
|
secrets = {
|
|
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHzVJpoDz/AAYLJGzU8t6DgZ2sY3oehRqrlSO7C+GWiK";
|
|
};
|
|
|
|
server.enable = true;
|
|
deploy.node.hostname = "192.168.68.22";
|
|
};
|
|
};
|
|
};
|
|
}
|