diff --git a/fleet/boot.nix b/fleet/boot.nix index 34888e3..66be240 100644 --- a/fleet/boot.nix +++ b/fleet/boot.nix @@ -56,9 +56,9 @@ in LC_TIME = "en_US.UTF-8"; }; - systemd.sleep.extraConfig = '' + systemd.sleep.extraConfig = lib.mkDefault '' SuspendState=freeze - HibernateDelaySec=2h + HibernateDelaySec=30m ''; }; } diff --git a/hw/nix-laptop.nix b/hw/nix-laptop.nix index 55bd351..44870a5 100644 --- a/hw/nix-laptop.nix +++ b/hw/nix-laptop.nix @@ -58,6 +58,7 @@ in "i915.enable_psr=0" # Disable Panel Self Refresh (stability) "i915.enable_dc=0" # Disable display power saving "i915.enable_fbc=0" # Disable framebuffer compression + "mem_sleep_default=deep" # Use deep sleep (S3) by default ]; # ========== Hardware Configuration ========== @@ -67,15 +68,59 @@ in # ========== Filesystem Configuration ========== athenix.host.filesystem.device = lib.mkDefault "/dev/nvme0n1"; athenix.host.filesystem.swapSize = lib.mkDefault "34G"; # Larger swap for hibernation + boot.resumeDevice = "/dev/nvme0n1p2"; # Resume from swap partition athenix.host.buildMethods = lib.mkDefault [ "installer-iso" ]; # ========== Power Management ========== - services.upower.enable = lib.mkDefault true; - services.logind.settings = { - Login = { - HandleLidSwitch = "suspend"; - HandleLidSwitchExternalPower = "suspend"; - HandleLidSwitchDocked = "ignore"; + systemd.sleep.extraConfig = '' + SuspendState=mem + HibernateDelaySec=30m + ''; + powerManagement.enable = lib.mkDefault true; + powerManagement.powertop.enable = lib.mkDefault true; + services = { + upower.enable = lib.mkDefault true; + logind.settings = { + Login = { + HandleLidSwitch = "suspend"; + HandleLidSwitchExternalPower = "suspend"; + HandleLidSwitchDocked = "ignore"; + PowerKey = "hibernate"; + PowerKeyLongPress = "poweroff"; + }; + }; + power-profiles-daemon.enable = false; + tlp = { + enable = true; + settings = { + CPU_SCALING_GOVERNOR_ON_AC = "performance"; + CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + + CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; + + CPU_MIN_PERF_ON_AC = 0; + CPU_MAX_PERF_ON_AC = 100; + CPU_MIN_PERF_ON_BAT = 0; + CPU_MAX_PERF_ON_BAT = 20; + + #Optional helps save long term battery health + START_CHARGE_THRESH_BAT0 = 40; # 40 and below it starts to charge + STOP_CHARGE_THRESH_BAT0 = 80; # 80 and above it stops charging + }; + }; + auto-cpufreq = { + enable = lib.mkDefault true; + settings = { + battery = { + governor = "powersave"; + turbo = "never"; + }; + charger = { + governor = "performance"; + turbo = "auto"; + }; + }; }; };