mirror of
https://github.com/tomasriveral/nixos.git
synced 2026-08-12 02:28:37 +02:00
tlp:replace by powerprofilesdaemon
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
_: {
|
{
|
||||||
flake.nixosModules.battery-laptop = {
|
self,
|
||||||
lib,
|
inputs,
|
||||||
config,
|
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
|
flake.nixosModules.battery-laptop = {pkgs, ...}:
|
||||||
# https://discourse.nixos.org/t/what-is-the-best-option-for-power-management/63406/2
|
# https://discourse.nixos.org/t/what-is-the-best-option-for-power-management/63406/2
|
||||||
# we just activate tlp unconditonally
|
# we just activate tlp unconditonally
|
||||||
#let
|
#let
|
||||||
@@ -22,6 +22,7 @@ _: {
|
|||||||
# };
|
# };
|
||||||
|
|
||||||
# config = lib.mkIf cfg.battery.enable {
|
# config = lib.mkIf cfg.battery.enable {
|
||||||
|
/*
|
||||||
powerManagement.powertop.enable = true; # enable powertop auto tuning on startup.
|
powerManagement.powertop.enable = true; # enable powertop auto tuning on startup.
|
||||||
# Acording to https://community.frame.work/t/solved-keys-stick-and-repeat-after-being-released/51153/12
|
# Acording to https://community.frame.work/t/solved-keys-stick-and-repeat-after-being-released/51153/12
|
||||||
# Some powertop bug is responsable for the problem of the random keypress being stuck
|
# Some powertop bug is responsable for the problem of the random keypress being stuck
|
||||||
@@ -31,10 +32,11 @@ _: {
|
|||||||
# Retrigger macropad udev rules
|
# Retrigger macropad udev rules
|
||||||
${lib.getExe' config.systemd.package "udevadm"} trigger -c bind -s usb -a idVendor=32ac -a idProduct=0013
|
${lib.getExe' config.systemd.package "udevadm"} trigger -c bind -s usb -a idVendor=32ac -a idProduct=0013
|
||||||
'';
|
'';
|
||||||
|
*/
|
||||||
services.system76-scheduler.settings.cfsProfiles.enable = true; # Better scheduling for CPU cycles - thanks System76!!!
|
services.system76-scheduler.settings.cfsProfiles.enable = true; # Better scheduling for CPU cycles - thanks System76!!!
|
||||||
services.thermald.enable = true; # Enable thermald, the temperature management daemon. (only necessary if on Intel CPUs)
|
services.thermald.enable = false; # Enable thermald, the temperature management daemon. (only necessary if on Intel CPUs)
|
||||||
services.power-profiles-daemon.enable = false; # Disable GNOMEs power management
|
services.power-profiles-daemon.enable = true; # ppd is recommended over tlp for framework 16
|
||||||
services.tlp = {
|
/*services.tlp = {
|
||||||
enable = true; # Enable TLP (better than gnomes internal power manager)
|
enable = true; # Enable TLP (better than gnomes internal power manager)
|
||||||
settings = {
|
settings = {
|
||||||
CPU_BOOST_ON_AC = 1;
|
CPU_BOOST_ON_AC = 1;
|
||||||
@@ -47,11 +49,12 @@ _: {
|
|||||||
CPU_ENERGY_PERF_POLICY_ON_BAT = "powersave";
|
CPU_ENERGY_PERF_POLICY_ON_BAT = "powersave";
|
||||||
PLATFORM_PROFILE_ON_AC = "balanced";
|
PLATFORM_PROFILE_ON_AC = "balanced";
|
||||||
PLATFORM_PROFILE_ON_BAT = "powersave";
|
PLATFORM_PROFILE_ON_BAT = "powersave";
|
||||||
START_CHARGE_THRESH_BAT1 = 40;
|
|
||||||
STOP_CHARGE_THRESH_BAT1 = 80;
|
STOP_CHARGE_THRESH_BAT1 = 80;
|
||||||
};
|
};
|
||||||
};
|
};*/
|
||||||
# };
|
environment.systemPackages = [
|
||||||
|
self.packages.${pkgs.system}.custom-performance
|
||||||
|
];
|
||||||
};
|
};
|
||||||
perSystem = {pkgs, ...}: let
|
perSystem = {pkgs, ...}: let
|
||||||
NotifySound = ../../assets/battery_notify.mp3;
|
NotifySound = ../../assets/battery_notify.mp3;
|
||||||
@@ -336,28 +339,97 @@ _: {
|
|||||||
name = "custom-performance";
|
name = "custom-performance";
|
||||||
runtimeInputs = with pkgs; [
|
runtimeInputs = with pkgs; [
|
||||||
hyprland
|
hyprland
|
||||||
gawk
|
brightnessctl
|
||||||
|
swaynotificationcenter
|
||||||
|
self.packages.${pkgs.system}.custom-wallpaper
|
||||||
libnotify
|
libnotify
|
||||||
|
inputs.caelestia-shell.packages.${pkgs.system}.default
|
||||||
];
|
];
|
||||||
text = ''
|
text = ''
|
||||||
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
|
STATE="$HOME/.cache/hypr-battery-saver"
|
||||||
if [ "$HYPRGAMEMODE" = 1 ] ; then
|
|
||||||
|
enable() {
|
||||||
|
mkdir -p "$(dirname "$STATE")"
|
||||||
|
|
||||||
|
echo "Enabling battery saver mode..."
|
||||||
|
|
||||||
|
# Save brightness
|
||||||
|
brightnessctl get > "''${STATE}.brightness" 2>/dev/null || true
|
||||||
|
|
||||||
|
# Kill heavy UI components
|
||||||
|
pkill -f caelestia-shell || true
|
||||||
|
pkill -f caelestia || true
|
||||||
|
pkill shell || true
|
||||||
|
pkill -f custom-wallpaper || true
|
||||||
|
|
||||||
|
# Start lightweight notifications
|
||||||
|
pkill swaync || true
|
||||||
|
swaync & disown
|
||||||
|
|
||||||
|
# Start lightweight waybar
|
||||||
|
pkill waybar || true
|
||||||
|
waybar & disown
|
||||||
|
|
||||||
|
# Lower refresh rate (BIGGEST win)
|
||||||
|
hyprctl keyword monitor "eDP-1,2560x1600@60,0x0,1"
|
||||||
|
|
||||||
|
# Core performance toggles
|
||||||
hyprctl --batch "\
|
hyprctl --batch "\
|
||||||
keyword animations:enabled 0;\
|
keyword animations:enabled 0;\
|
||||||
keyword animation borderangle,0; \
|
keyword animation borderangle,0;\
|
||||||
keyword decoration:shadow:enabled 0;\
|
keyword decoration:shadow:enabled 0;\
|
||||||
keyword decoration:blur:enabled 0;\
|
keyword decoration:blur:enabled 0;\
|
||||||
|
keyword decoration:rounding 0;\
|
||||||
keyword decoration:fullscreen_opacity 1;\
|
keyword decoration:fullscreen_opacity 1;\
|
||||||
keyword general:gaps_in 0;\
|
keyword general:gaps_in 0;\
|
||||||
keyword general:gaps_out 0;\
|
keyword general:gaps_out 0;\
|
||||||
keyword general:border_size 1;\
|
keyword general:border_size 1;\
|
||||||
keyword decoration:rounding 0"
|
keyword decoration:active_opacity 1;\
|
||||||
notify-send -u critical -t 5000 "Performance mode [ON]"
|
keyword decoration:inactive_opacity 1;\
|
||||||
exit
|
keyword misc:vfr true"
|
||||||
else
|
|
||||||
notify-send -u critical -t 5000 "Performance mode [OFF]"
|
# Lower brightness
|
||||||
|
brightnessctl set 5% 2>/dev/null || true
|
||||||
|
|
||||||
|
touch "$STATE"
|
||||||
|
|
||||||
|
notify-send "Battery Saver" "Enabled"
|
||||||
|
}
|
||||||
|
|
||||||
|
disable() {
|
||||||
|
echo "Disabling battery saver mode..."
|
||||||
|
|
||||||
|
# Restore refresh rate
|
||||||
|
hyprctl keyword monitor "eDP-1,2560x1600@165,0x0,1"
|
||||||
|
|
||||||
|
# Restore Caelestia
|
||||||
|
pkill swaync || true
|
||||||
|
pkill waybar || true
|
||||||
|
caelestia shell -d >/dev/null 2>&1 &
|
||||||
|
disown
|
||||||
|
|
||||||
|
|
||||||
|
# Restart wallpaper
|
||||||
|
custom-wallpaper >/dev/null 2>&1 &
|
||||||
|
disown
|
||||||
|
|
||||||
|
# Restore full UI via reload (safe here on exit)
|
||||||
hyprctl reload
|
hyprctl reload
|
||||||
exit 0
|
|
||||||
|
# Restore brightness
|
||||||
|
if [[ -f "''${STATE}.brightness" ]]; then
|
||||||
|
brightnessctl set "$(cat "''${STATE}.brightness")" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f "$STATE" "''${STATE}.brightness"
|
||||||
|
|
||||||
|
notify-send "Battery Saver" "Disabled"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ -f "$STATE" ]]; then
|
||||||
|
disable
|
||||||
|
else
|
||||||
|
enable
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user