# ThinkPad T400 (NixOS). Shared laptop options live in ../../modules/laptop.nix; # only host-specific settings are here. Install notes (boot variants, GPU, # partitions): see ./README.md. { config, ... }: { imports = [ ./hardware-configuration.nix # Boot: import exactly ONE, matching the firmware currently flashed. # Stock Lenovo BIOS and coreboot+SeaBIOS both use boot-bios.nix. ./boot-bios.nix # ./boot-coreboot-grub.nix # coreboot with the GRUB payload (config-only GRUB) # ./boot-coreboot-uefi.nix # coreboot with the Tianocore/edk2 UEFI payload # # (systemd-boot; carries its own ESP mount) ]; networking.hostName = "T400-NixOS"; console.font = "Lat2-Terminus16"; # Low-RAM host (4 GiB max): a compressed RAM swap reduces disk paging. zramSwap.enable = true; # This host accepts SSH, so open 22 (the firewall itself is enabled in # laptop.nix with a default-deny policy). services.openssh.enable = true; networking.firewall.allowedTCPPorts = [ 22 ]; # Intel Core 2 (Penryn) microcode. Redistributable firmware (enabled in # workstation.nix) supplies the iwlwifi blobs (Intel WiFi Link 5100/5300) and # the radeon firmware needed by the discrete GPU below. hardware.cpu.intel.updateMicrocode = true; # Battery longevity: cap charging to 75-80%. tlp itself comes from the # nixos-hardware lenovo-thinkpad profile; tp_smapi supplies the threshold # sysfs on this 2008-era ThinkPad (kernel-native natacpi is too new for it). boot.kernelModules = [ "tp_smapi" ]; boot.extraModulePackages = [ config.boot.kernelPackages.tp_smapi ]; services.tlp.settings = { START_CHARGE_THRESH_BAT0 = 75; STOP_CHARGE_THRESH_BAT0 = 80; }; # This T400 has the optional discrete GPU fitted: an ATI Mobility Radeon HD # 3470 (RV620), driven by the open `radeon` KMS driver. Load it in the initrd # for early modesetting (clean Sway/Wayland start); firmware comes from # enableRedistributableFirmware above. # # The T400 has switchable graphics (this discrete GPU + the Intel GMA # 4500MHD). Select "Discrete" in the firmware's graphics setting so only the # ATI is live; if you instead run "Integrated", the Intel i915 driver takes # over with no extra config and `radeon` simply stays idle. boot.initrd.kernelModules = [ "radeon" ]; # See `man configuration.nix` / the stateVersion docs before changing. system.stateVersion = "26.05"; }