Kernel & Performance
Kernel Package
The laptop runs the CachyOS kernel from the Chaotic-Nyx repository:
boot.kernelPackages = inputs.chaotic.legacyPackages."x86_64-linux".linuxPackages_cachyos;An alternative Zen kernel option is commented out:
# boot.kernelPackages = pkgs.linuxKernel.packages.linux_zen;The CachyOS kernel includes scheduler optimisations (BORE scheduler), improved desktop responsiveness, and additional hardware support. Binary packages are provided by the Chaotic-Nyx cache, avoiding local compilation.
Kernel Parameters
boot.kernelParams = [
# Power saving
"acpi=force"
"pcie_aspm=force"
"nowatchdog"
"nmi_watchdog=0"
"amd_pstate=active"
"rcutree.enable_rcu_lazy=1"
# Catppuccin Mocha TTY colours
"vt.default_red=..."
"vt.default_grn=..."
"vt.default_blu=..."
];| Parameter | Effect |
|---|---|
amd_pstate=active | Use the AMD P-State EPP driver for CPU frequency scaling |
pcie_aspm=force | Force Active State Power Management on PCIe links |
nowatchdog + nmi_watchdog=0 | Disable hardware and NMI watchdogs (power saving) |
rcutree.enable_rcu_lazy=1 | Lazy RCU callbacks to reduce wakeups |
acpi=force | Force ACPI even if firmware reports issues |
vt.default_* | Set Catppuccin Mocha colour scheme for Linux virtual terminals |
Blacklisted Modules
boot.blacklistedKernelModules = [ "sp5100_tco" ];The sp5100_tco watchdog timer module is blacklisted as it is not needed and can cause unnecessary wakeups.
sysctl Tuning
boot.kernel.sysctl = {
"kernel.kexec_load_disabled" = 1;
"vm.swappiness" = 0;
"vm.vfs_cache_pressure" = 50;
"vm.dirty_bytes" = 268435456; # 256 MB
"vm.dirty_writeback_centisecs" = 1500; # 15 seconds
"vm.dirty_background_bytes" = 67108864; # 64 MB
};| sysctl | Value | Rationale |
|---|---|---|
kexec_load_disabled | 1 | Prevent kexec after boot (security) |
vm.swappiness | 0 | No swap is configured |
vm.vfs_cache_pressure | 50 | Prefer keeping VFS caches over reclaiming memory |
vm.dirty_bytes | 256 MB | Maximum dirty memory before synchronous writeback |
vm.dirty_background_bytes | 64 MB | Background writeback threshold |
vm.dirty_writeback_centisecs | 1500 | Flush dirty pages every 15 seconds |
These VM tunables reduce write frequency to the NVMe SSD, which helps with both SSD longevity and battery life.
Power Management (TLP)
TLP is configured in tlp.nix with separate profiles for AC and battery:
CPU
| Setting | AC | Battery |
|---|---|---|
| Driver mode | active | active |
| Scaling governor | performance | powersave |
| Energy/perf policy | performance | balance_power |
| CPU boost | Enabled | Disabled |
| Platform profile | performance | low-power |
GPU (Radeon)
| Setting | AC | Battery |
|---|---|---|
| Power profile | default | low |
| DPM state | performance | battery |
| ABM level | 0 | 0 |
Power States
| Setting | AC | Battery |
|---|---|---|
| Memory sleep | deep | deep |
| PCIe ASPM | default | powersupersave |
Disabling CPU boost on battery is an aggressive but effective measure -- it significantly reduces power consumption at the cost of peak single-thread performance.
Audio
PipeWire is the audio stack, configured in pipewire.nix:
services.pipewire = {
enable = true;
alsa.enable = true;
jack.enable = true;
pulse.enable = true;
wireplumber.enable = true;
};The camera is explicitly disabled in WirePlumber:
wireplumber.extraConfig."10-disable-camera" = {
"wireplumber.profiles".main."monitor.libcamera" = "disabled";
};Bluetooth
hardware.bluetooth = {
enable = true;
powerOnBoot = false; # Don't power on at boot to save energy
};Bluetooth hardware is available but not powered on at boot. Use bluetui to manage connections.
Graphics
hardware.graphics.enable = true;This enables Mesa and the AMD Radeon driver stack for hardware-accelerated graphics under Wayland.