blob: 0c5d8b82e805a567bdd295ac45e09783c5651e26 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
{ config, pkgs, ... }:
{
# boot settings
boot = {
kernelPackages = pkgs.linuxPackages_latest;
# do not use default kernel module (r8169) for the realtek rtl8125 ethernet
# controller, as it has issues with packet loss and can't keep up with the high
# 2.5g link speed.
# the out-of-tree module r8125 also has issues however, as apparently when sending
# off packets the hardware offloading done on the network chip fails massively,
# corrupting a huge amount of packets, breaking off connections and distorting video.
# the fix to disable the hardware offloading is handled by systemd-networkd below.
blacklistedKernelModules = [ "r8169" ];
extraModulePackages = [ config.boot.kernelPackages.r8125 ];
kernelModules = [ "r8125" ];
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
initrd.systemd.enable = true;
};
# hardware settings
hardware = {
enableRedistributableFirmware = true;
enableAllFirmware = true;
graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
vpl-gpu-rt
intel-media-driver
intel-vaapi-driver
intel-compute-runtime
intel-ocl
];
};
bluetooth = {
enable = true;
powerOnBoot = true;
};
};
# swap alternative
zramSwap = {
enable = true;
algorithm = "zstd";
swapDevices = 1;
memoryPercent = 50;
};
networking = {
useDHCP = false;
dhcpcd.enable = false;
wireless.interfaces = [ "wlp6s0" ];
};
systemd.network = {
enable = true;
networks = {
# ethernet through the rtl8125 ethernet controller (supports 2.5g)
"10-ether" = {
name = "enp7s0";
DHCP = "yes";
# higher priority if available
dhcpV4Config.RouteMetric = 10;
dhcpV6Config.RouteMetric = 10;
};
# wifi connection via mediatek mt7921k (supports wifi 6e)
"10-wlan" = {
name = "wlp6s0";
DHCP = "yes";
networkConfig.IgnoreCarrierLoss = "3s";
# lower priority, if ethernet exists route via that.
dhcpV4Config.RouteMetric = 20;
dhcpV6Config.RouteMetric = 20;
# authentication handled via wpa_supplicant in modules/wireless.nix
};
};
# the rtl8125 notoriously has extreme issues with offloaded calculations
# sent from linux machines, and corrupts packets badly, crippling connectivity.
# we disable most forms of offloading to the chip here, instead handling them
# in our own kernel. this fixes most of the issues.
links."10-rtl8125-hardware-offloading" = {
matchConfig.Driver = "r8125"; # match by driver to prevent udev renaming issues
linkConfig = {
# keep naming behavior consistent with defaults
NamePolicy = "keep kernel database onboard slot path";
MACAddressPolicy = "persistent";
# kill hardware offloading for this chipset
ReceiveChecksumOffload = false; # rx off
TransmitChecksumOffload = false; # tx off
TCPSegmentationOffload = false; # tso off
TCP6SegmentationOffload = false; # tso off (ipv6)
GenericSegmentationOffload = false; # gso off
GenericReceiveOffload = false; # gro off
};
};
};
# storage
fileSystems = {
"/mnt/Kui" = {
device = "/dev/disk/by-label/Kui";
fsType = "ext4";
options = [
"defaults"
"users"
"nofail"
"exec"
"rw"
];
};
};
# sound
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
jack.enable = true;
};
}
|