From 873a9c562b732c4d33bab549932bd06100110478 Mon Sep 17 00:00:00 2001 From: Aleksandr Lebedev Date: Tue, 29 Jul 2025 08:45:48 +0200 Subject: [PATCH] Hibernation? + battery widget fix for framework 12 --- disko/impermanence-btrfs-luks.nix | 3 +- nixos/homes/kylekrein/battery-status.nix | 31 ++++++++++++++++--- nixos/hosts/kylekrein-framework12/default.nix | 8 ++--- .../kylekrein-framework12/hibernation.nix | 18 +++++++++++ 4 files changed, 47 insertions(+), 13 deletions(-) create mode 100644 nixos/hosts/kylekrein-framework12/hibernation.nix diff --git a/disko/impermanence-btrfs-luks.nix b/disko/impermanence-btrfs-luks.nix index 473adf3..3ed0aac 100644 --- a/disko/impermanence-btrfs-luks.nix +++ b/disko/impermanence-btrfs-luks.nix @@ -1,4 +1,4 @@ -{ device ? throw "Set this to your disk device, e.g. /dev/sda", ... }: +{device ? throw "Set this to your disk device, e.g. /dev/sda", ...}: # IMPORTANT # Calculate offset using https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Acquire_swap_file_offset # AND create this config @@ -10,7 +10,6 @@ # resumeDevice = "/dev/disk/by-label/nixos"; # }; #} - { disko.devices = { disk = { diff --git a/nixos/homes/kylekrein/battery-status.nix b/nixos/homes/kylekrein/battery-status.nix index e9f93d9..997123c 100644 --- a/nixos/homes/kylekrein/battery-status.nix +++ b/nixos/homes/kylekrein/battery-status.nix @@ -6,7 +6,12 @@ battery-path = "/sys/class/power_supply/${ if hwconfig.hostname == "kylekrein-mac" then "macsmc-battery" - else "BAT0" + else + ( + if hwconfig.hostname == "kylekrein-framework12" + then "BAT1" + else "BAT0" + ) }"; get-battery-level = "${pkgs.writeShellScriptBin "get-battery-level" '' cat ${battery-path}/capacity 2>/dev/null || echo "N/A" @@ -60,11 +65,27 @@ echo "$ICON" ''}/bin/get-icon"; get-remaining-time = "${pkgs.writeShellScriptBin "get-remaining-time" '' - REMAINING_ENERGY=$(cat ${battery-path}/energy_now) - POWER_USAGE=$(cat ${battery-path}/power_now) + REMAINING_ENERGY=$(cat ${battery-path}/${ + if hwconfig == "kylekrein-mac" + then "energy_now" + else "charge_now" + }) + POWER_USAGE=$(cat ${battery-path}/${ + if hwconfig.hostname == "kylekrein-mac" + then "power_now" + else "current_now" + }) if [[ -n "$REMAINING_ENERGY" && -n "$POWER_USAGE" && "$POWER_USAGE" -ne 0 ]]; then - TIME_LEFT=$((0 - (REMAINING_ENERGY / POWER_USAGE))) - MINUTES_LEFT=$(((0 - ( (REMAINING_ENERGY * 60) / POWER_USAGE )) - (TIME_LEFT * 60))) + TIME_LEFT=$((${ + if hwconfig.hostname == "kylekrein-mac" + then "0 - " + else "" + }(REMAINING_ENERGY / POWER_USAGE))) + MINUTES_LEFT=$(((${ + if hwconfig.hostname == "kylekrein-mac" + then "0 - " + else "" + }( (REMAINING_ENERGY * 60) / POWER_USAGE )) - (TIME_LEFT * 60))) echo "$TIME_LEFT h $MINUTES_LEFT min" else echo "" diff --git a/nixos/hosts/kylekrein-framework12/default.nix b/nixos/hosts/kylekrein-framework12/default.nix index b9aab7a..f88e1c3 100644 --- a/nixos/hosts/kylekrein-framework12/default.nix +++ b/nixos/hosts/kylekrein-framework12/default.nix @@ -19,13 +19,9 @@ (import ../../modules/libvirt/user.nix {username = "kylekrein";}) ../../users/tania + + ./hibernation.nix ]; - boot = { - # kernelParams = [ - # "resume_offset=YOUR_OFFSET" - # ]; - # resumeDevice = "/dev/disk/by-label/nixos"; - }; sops.secrets."ssh_keys/${hwconfig.hostname}" = {}; services.fwupd.enable = true; #fwupdmgr update diff --git a/nixos/hosts/kylekrein-framework12/hibernation.nix b/nixos/hosts/kylekrein-framework12/hibernation.nix new file mode 100644 index 0000000..e16cf8e --- /dev/null +++ b/nixos/hosts/kylekrein-framework12/hibernation.nix @@ -0,0 +1,18 @@ +{pkgs, ...}: { + boot = { + kernelParams = [ + "resume_offset=533760" + "mem_sleep_default=deep" + ]; + resumeDevice = "/dev/disk/by-label/nixos"; + }; + services.logind = { + lidSwitch = "suspend-then-hibernate"; + powerKey = "suspend-then-hibernate"; + powerKeyLongPress = "poweroff"; + }; + systemd.sleep.extraConfig = '' + HibernateDelaySec=30m + SuspendState=mem + ''; +}