# Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. { config, lib, pkgs, modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; boot.kernelParams = [ # === NVMe power management (relaxed 2026-10) === # # These began as a hard workaround for NVMe freezes on the KINGBANK KP260 # (a DRAM-less QLC drive, prone to slow APST wakeups): APST fully disabled, # the command timeout pushed to the maximum, and PCIe ASPM turned off. # Kernel logs from 2026-09-19..10-03 (8 boots) show no NVMe # timeout/reset/AER, so it is relaxed to reclaim idle power and let the # kernel recover a stuck command instead of hanging on it: # # - APST allowed again, capped at a wide 100 ms latency (was: disabled). # - io_timeout back to the kernel default 30 s (was: ~49 days, which let # a stuck command wait forever instead of resetting the controller). # - pcie_aspm removed: PCIe link power saving is unrelated to the drive's # own APST. # # If freezes return under heavy read/write, restore the old workaround: # nvme_core.default_ps_max_latency_us=0 nvme_core.io_timeout=4294967295 pcie_aspm=off # See https://community.frame.work/t/nvme-timeout-woes/54999 "nvme_core.default_ps_max_latency_us=100000" ]; # Use the EFI boot loader. boot.loader.efi.canTouchEfiVariables = true; # depending on how you configured your disk mounts, change this to /boot or /boot/efi. boot.loader.efi.efiSysMountPoint = "/boot"; boot.loader.systemd-boot.enable = true; # https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/top-level/linux-kernels.nix boot.kernelPackages = pkgs.linuxPackages_latest; boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; # clear /tmp on boot to get a stateless /tmp directory. boot.tmp.cleanOnBoot = true; # Enable binfmt emulation of aarch64-linux, this is required for cross compilation. boot.binfmt.emulatedSystems = [ "aarch64-linux" "riscv64-linux" ]; # This enables the kernel to preload the emulator binaries when the binfmt registrations are added, # obviating the need to make the emulator binaries available inside chroots and chroot-like sandboxes. boot.binfmt.preferStaticEmulators = true; # required to work with podman # supported file systems, so we can mount any removable disks with these filesystems boot.supportedFilesystems = [ "ext4" "btrfs" "xfs" "ntfs" "fat" "vfat" "exfat" ]; # LUKS initrd, all fileSystems (/, /boot, /btr_pool, /nix, /persistent, /snapshots, /tmp, /swap) # and swap (including /swap/swapfile bind and swapDevices) are managed by disko (disko-fs.nix). # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's # still possible to use this option, but it's recommended to use it in conjunction # with explicit per-interface declarations with `networking.interfaces..useDHCP`. networking.useDHCP = lib.mkDefault true; # networking.interfaces.enp5s0.useDHCP = lib.mkDefault true; # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; powerManagement.cpuFreqGovernor = lib.mkDefault "performance"; # ondemand / powersave / performance hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; }