nixfiles/nixos/boxes/home/castle/default.nix

273 lines
7.2 KiB
Nix
Raw Normal View History

2023-12-03 22:58:28 +00:00
{ lib, ... }:
let
inherit (lib.my) net;
2024-06-30 03:59:46 +01:00
inherit (lib.my.c) networkd;
inherit (lib.my.c.home) domain vlans prefixes vips roceBootModules;
2023-12-03 22:58:28 +00:00
in
{
2023-04-23 19:13:54 +01:00
nixos.systems.castle = {
system = "x86_64-linux";
nixpkgs = "mine";
home-manager = "mine";
2023-12-03 22:58:28 +00:00
assignments = {
hi = {
inherit domain;
ipv4 = {
address = net.cidr.host 40 prefixes.hi.v4;
mask = 22;
2024-06-30 03:59:46 +01:00
gateway = vips.hi.v4;
2023-12-03 22:58:28 +00:00
};
ipv6 = {
iid = "::3:1";
address = net.cidr.host (65536*3+1) prefixes.hi.v6;
};
2023-12-03 22:58:28 +00:00
};
};
2023-04-23 19:13:54 +01:00
configuration = { lib, pkgs, modulesPath, config, systems, assignments, allAssignments, ... }:
let
inherit (lib) mkIf mkMerge mkForce;
2023-12-03 22:58:28 +00:00
inherit (lib.my) mkVLAN networkdAssignment;
2023-04-23 19:13:54 +01:00
in
{
hardware = {
enableRedistributableFirmware = true;
cpu = {
amd.updateMicrocode = true;
};
opengl.extraPackages = with pkgs; [
intel-media-driver
];
bluetooth.enable = true;
};
boot = {
loader = {
efi.canTouchEfiVariables = false;
timeout = 10;
};
kernelPackages = lib.my.c.kernel.latest pkgs;
2024-06-30 03:59:46 +01:00
kernelModules = [ "kvm-amd" "dm-snapshot" ];
2023-04-23 20:22:53 +01:00
kernelParams = [ "amd_iommu=on" "amd_pstate=passive" ];
kernelPatches = [
# {
# # https://gitlab.freedesktop.org/drm/amd/-/issues/2354
# name = "drm-amd-display-fix-flickering-caused-by-S-G-mode";
# patch = ./0001-drm-amd-display-fix-flickering-caused-by-S-G-mode.patch;
# }
];
2023-04-23 19:13:54 +01:00
initrd = {
2024-06-30 03:59:46 +01:00
availableKernelModules = [
"thunderbolt" "xhci_pci" "nvme" "ahci" "usbhid" "usb_storage" "sd_mod"
"8021q"
] ++ roceBootModules;
systemd.network = {
netdevs = mkVLAN "lan-hi" vlans.hi;
networks = {
"10-et100g" = {
matchConfig.Name = "et100g";
vlan = [ "lan-hi" ];
linkConfig.RequiredForOnline = "no";
networkConfig = networkd.noL3;
};
"20-lan-hi" = networkdAssignment "lan-hi" assignments.hi;
};
};
2023-04-23 19:13:54 +01:00
};
2024-08-17 12:39:36 +01:00
binfmt.emulatedSystems = [ "aarch64-linux" "armv7l-linux" ];
2023-04-23 19:13:54 +01:00
};
fileSystems = {
"/nix" = {
2024-06-30 03:59:46 +01:00
device = "/dev/nvmeof/nix";
2023-04-23 19:13:54 +01:00
fsType = "ext4";
};
"/persist" = {
2024-06-30 03:59:46 +01:00
device = "/dev/nvmeof/persist";
2023-04-23 19:13:54 +01:00
fsType = "ext4";
neededForBoot = true;
};
2024-06-30 03:59:46 +01:00
2023-04-23 19:13:54 +01:00
"/home" = {
2024-06-30 03:59:46 +01:00
device = "/dev/nvmeof/home";
2023-04-23 19:13:54 +01:00
fsType = "ext4";
};
};
security = { };
services = {
hardware = {
bolt.enable = true;
};
lvm = {
boot.thin.enable = true;
dmeventd.enable = true;
};
fstrim.enable = true;
resolved = {
enable = true;
extraConfig = mkForce "";
dnssec = "false";
};
2024-03-18 20:23:52 +00:00
pipewire.extraConfig.pipewire = {
"10-buffer"."context.properties" = {
2024-03-18 20:23:52 +00:00
"default.clock.quantum" = 128;
"default.clock.max-quantum" = 128;
};
};
2023-04-23 19:13:54 +01:00
blueman.enable = true;
};
2023-12-16 18:50:51 +00:00
programs = {
virt-manager.enable = true;
wireshark = {
enable = true;
package = pkgs.wireshark-qt;
};
};
2023-12-05 23:27:16 +00:00
virtualisation.libvirtd.enable = true;
2023-04-23 19:13:54 +01:00
networking = {
2024-06-30 03:59:46 +01:00
inherit domain;
firewall.enable = false;
2023-04-23 19:13:54 +01:00
};
environment.systemPackages = with pkgs; [
dhcpcd
pciutils
usbutils
lm_sensors
linuxPackages.cpupower
2023-08-06 14:50:12 +01:00
cifs-utils
2023-10-31 16:16:24 +00:00
rpiboot
rdma-core
mstflint
qperf
ethtool
2023-04-23 19:13:54 +01:00
];
nix = {
gc.automatic = false;
settings = {
experimental-features = [ "recursive-nix" ];
system-features = [ "nixos-test" "benchmark" "big-parallel" "kvm" "recursive-nix" ];
};
2023-04-23 19:13:54 +01:00
};
systemd = {
network = {
2023-12-03 22:58:28 +00:00
netdevs = mkMerge [
(mkVLAN "lan-hi" vlans.hi)
];
2023-04-23 19:13:54 +01:00
links = {
"10-et2.5g" = {
matchConfig.MACAddress = "c8:7f:54:6e:17:0f";
linkConfig.Name = "et2.5g";
};
"11-et10g" = {
matchConfig.MACAddress = "c8:7f:54:6e:15:af";
linkConfig.Name = "et10g";
};
"12-et100g" = {
2023-12-03 22:58:28 +00:00
matchConfig.PermanentMACAddress = "24:8a:07:a8:fe:3a";
linkConfig = {
Name = "et100g";
2024-06-30 03:59:46 +01:00
MTUBytes = toString lib.my.c.home.hiMTU;
2023-12-03 22:58:28 +00:00
};
2023-04-23 19:13:54 +01:00
};
};
networks = {
2024-06-30 03:59:46 +01:00
"30-et100g" = {
2023-12-03 22:58:28 +00:00
matchConfig.Name = "et100g";
2023-12-16 18:50:51 +00:00
vlan = [ "lan-hi" ];
2023-12-03 22:58:28 +00:00
networkConfig.IPv6AcceptRA = false;
};
2024-06-30 03:59:46 +01:00
"40-lan-hi" = mkMerge [
2023-12-03 22:58:28 +00:00
(networkdAssignment "lan-hi" assignments.hi)
2024-06-30 03:59:46 +01:00
# So we don't drop the IP we use to connect to NVMe-oF!
{ networkConfig.KeepConfiguration = "static"; }
2023-12-03 22:58:28 +00:00
];
2023-04-23 19:13:54 +01:00
};
};
};
my = {
tmproot.size = "24G";
2023-04-23 19:13:54 +01:00
user = {
2023-04-23 23:44:55 +01:00
config.extraGroups = [ "input" ];
2023-04-23 19:13:54 +01:00
tmphome = false;
homeConfig = {
services = { };
home = {
packages = with pkgs; [
jacktrip
qpwgraph
2024-06-18 23:29:48 +01:00
boardie
];
2023-04-23 19:13:54 +01:00
};
services = {
blueman-applet.enable = true;
};
wayland.windowManager.sway = {
config = {
output = {
HDMI-A-1 = {
transform = "270";
position = "0 0";
bg = "${./his-team-player.jpg} fill";
};
DP-1 = {
mode = "2560x1440@170Hz";
subpixel = "bgr";
position = "1440 560";
};
DP-2.position = "4000 560";
};
2023-04-23 19:13:54 +01:00
};
};
my = {
2023-08-27 20:04:53 +01:00
gui = {
standalone = true;
manageGraphical = true;
};
2023-04-23 19:13:54 +01:00
};
};
};
#deploy.generate.system.mode = "boot";
secrets = {
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMlVuTzKObeaUuPocCF41IO/8X+443lzUJLuCIclt2vr";
};
2024-06-30 03:59:46 +01:00
netboot.client = {
enable = true;
};
nvme = {
uuid = "2230b066-a674-4f45-a1dc-f7727b3a9e7b";
boot = {
nqn = "nqn.2016-06.io.spdk:castle";
address = "192.168.68.80";
};
};
2023-04-23 19:13:54 +01:00
firewall = {
enable = false;
};
gui.enable = true;
};
};
};
}