2024-07-21 01:03:28 +01:00
|
|
|
{ pkgs, ... }:
|
|
|
|
{
|
|
|
|
home.packages = [
|
|
|
|
(pkgs.writeShellScriptBin "battery-status" ''
|
2024-07-21 14:46:11 +01:00
|
|
|
|
|
|
|
# Get the current power consumption of the laptop battery
|
2024-07-21 01:03:28 +01:00
|
|
|
power=$(cat /sys/class/power_supply/BAT0/power_now)
|
|
|
|
power_watts=$(${pkgs.bc}/bin/bc <<< "scale=3; $power / 1000000")
|
2024-07-21 14:46:11 +01:00
|
|
|
|
|
|
|
# Get the current battery charge capacity
|
|
|
|
energy=$(cat /sys/class/power_supply/BAT0/energy_now)
|
|
|
|
|
|
|
|
# Get the current battery status (charging or discharging)
|
|
|
|
battery_status=$(cat /sys/class/power_supply/BAT0/status)
|
|
|
|
|
|
|
|
# Calculate the time remaining until the battery is empty or full
|
|
|
|
if [ "$battery_status" == "Charging" ]; then
|
|
|
|
# Calculate the time remaining until the battery is full
|
|
|
|
hours=$(${pkgs.bc}/bin/bc <<< "scale=2; $power / $energy")
|
|
|
|
hours_int=$(${pkgs.bc}/bin/bc <<< "scale=0; $hours / 1")
|
|
|
|
minutes=$(${pkgs.bc}/bin/bc <<< "scale=0; 60 * ($hours - $hours_int)/1")
|
|
|
|
|
|
|
|
if [ "$hours_int" -gt "0" ]; then
|
|
|
|
# Show hours and minutes if time remaining is greater than or equal to 1 hour
|
|
|
|
echo "Full in: $hours_int hours $minutes minutes"
|
|
|
|
else
|
|
|
|
# Show minutes if time remaining is less than 1 hour
|
|
|
|
echo "Full in: $minutes minutes"
|
|
|
|
fi
|
|
|
|
|
|
|
|
elif [ "$battery_status" == "Discharging" ]; then
|
|
|
|
# Calculate the time remaining until the battery is empty
|
|
|
|
hours=$(${pkgs.bc}/bin/bc <<< "scale=2; $energy / $power")
|
|
|
|
hours_int=$(${pkgs.bc}/bin/bc <<< "scale=0; $hours / 1")
|
|
|
|
minutes=$(${pkgs.bc}/bin/bc <<< "scale=0; 60 * ($hours - $hours_int)/1")
|
|
|
|
|
|
|
|
if [ "$hours_int" -gt "0" ]; then
|
|
|
|
# Show hours and minutes if time remaining is greater than or equal to 1 hour
|
|
|
|
echo "Empty in: $hours_int hours $minutes minutes"
|
|
|
|
else
|
|
|
|
# Show minutes if time remaining is less than 1 hour
|
|
|
|
echo "Empty in: $minutes minutes"
|
|
|
|
fi
|
|
|
|
|
|
|
|
elif [ "$battery_status" == "Full" ]; then
|
|
|
|
echo "Battery full"
|
|
|
|
elif [ "$battery_status" == "Not charging" ]; then
|
|
|
|
echo "Battery full - not charging"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "Power consumption: $power_watts W"
|
2024-07-21 01:03:28 +01:00
|
|
|
'')
|
|
|
|
];
|
|
|
|
}
|