1{ pkgs, ... }:
2let
3 fileSystems = {
4 btrfs = true;
5 ext4 = true;
6 vfat = true;
7 zfs = true;
8 };
9in
10{
11 boot = {
12 extraModulePackages = [ ];
13 kernelModules = [ "kvm-amd" ];
14 kernelPackages = pkgs.linuxPackages_6_1;
15 kernelParams = [ "nohibernate" ];
16 supportedFilesystems = fileSystems;
17 zfs.devNodes = "/dev/";
18
19 # Initrd config
20 initrd = {
21 availableKernelModules = [
22 "xhci_pci"
23 "ahci"
24 "nvme"
25 "usbhid"
26 "usb_storage"
27 "sd_mod"
28 ];
29 supportedFilesystems = fileSystems;
30 kernelModules = [ ];
31 };
32
33 # Systemd-boot config
34 loader = {
35 systemd-boot.enable = true;
36 systemd-boot.configurationLimit = 5;
37 efi = {
38 canTouchEfiVariables = true;
39 efiSysMountPoint = "/boot/efi";
40 };
41 };
42
43 kernel.sysctl = {
44 "net.ipv4.ip_forward" = 1;
45 "net.ipv6.conf.all.forwarding" = 1;
46 };
47
48 # ZFS Config
49 # I use ZFS as my bulk data storage
50 # zfs = {
51 # enabled = true;
52 # };
53 };
54 # ZFS mount stuff
55 services.udev.extraRules = ''
56 ACTION=="add|change", KERNEL=="sd[a-z]*[0-9]*|mmcblk[0-9]*p[0-9]*|nvme[0-9]*n[0-9]*p[0-9]*", ENV{ID_FS_TYPE}=="zfs_member", ATTR{../queue/scheduler}="none"
57 '';
58}