2025-09-25 20:44:23 +02:00
{
lib ,
pkgs ,
config ,
username ,
home-manager ,
. . .
} :
2024-10-21 22:57:49 +02:00
with lib ;
let
cfg = config . liv . laptop ;
2025-09-25 20:44:23 +02:00
in
{
2024-10-21 22:57:49 +02:00
options . liv . laptop = {
enable = mkEnableOption " E n a b l e l a p t o p " ;
} ;
config = mkIf cfg . enable {
2025-09-25 20:44:23 +02:00
environment . systemPackages = with pkgs ; [
cifs-utils
powertop
] ;
2024-10-21 22:57:49 +02:00
home-manager = {
users . ${ username } = {
home . packages = with pkgs ; [
acpi
brightnessctl
] ;
} ;
2024-10-21 17:12:46 +02:00
} ;
2025-09-25 20:49:27 +02:00
# DisplayLink
2026-01-26 22:39:00 +01:00
# imports = [ ../modules/core/displaylink.nix ];
2025-09-25 20:49:27 +02:00
2024-10-21 17:12:46 +02:00
networking . networkmanager . enable = true ;
boot = {
2025-09-25 20:44:23 +02:00
kernelModules = [ " a c p i _ c a l l " ] ;
extraModulePackages = with config . boot . kernelPackages ; [
acpi_call
] ;
} ;
services = {
2024-12-20 20:12:00 +01:00
thermald . enable = true ;
2024-10-22 15:00:16 +02:00
power-profiles-daemon . enable = true ;
2025-09-25 20:44:23 +02:00
2026-01-26 21:00:04 +01:00
udev . extraRules = ''
# Switch to power-save profile when on battery
SUBSYSTEM = = " p o w e r _ s u p p l y " , ATTR { online } = = " 0 " , RUN + = " ${ pkgs . power-profiles-daemon } / b i n / p o w e r p r o f i l e s c t l s e t p o w e r - s a v e r " , RUN + = " / b i n / s h - c ' e c h o 3 0 | t e e / s y s / c l a s s / b a c k l i g h t / a m d g p u _ b l 1 / b r i g h t n e s s ' "
# Switch to balanced profile when plugged in
SUBSYSTEM = = " p o w e r _ s u p p l y " , ATTR { online } = = " 1 " , RUN + = " ${ pkgs . power-profiles-daemon } / b i n / p o w e r p r o f i l e s c t l s e t b a l a n c e d " , RUN + = " / b i n / s h - c ' c a t / s y s / c l a s s / b a c k l i g h t / a m d g p u _ b l 1 / m a x _ b r i g h t n e s s > / s y s / c l a s s / b a c k l i g h t / a m d g p u _ b l 1 / b r i g h t n e s s ' "
'' ;
2024-10-21 22:57:49 +02:00
upower = {
enable = true ;
percentageLow = 20 ;
percentageCritical = 10 ;
percentageAction = 5 ;
criticalPowerAction = " H i b e r n a t e " ;
2024-10-21 17:12:46 +02:00
} ;
2026-01-26 21:00:04 +01:00
#auto-cpufreq = {
# enable = true;
# settings = {
# battery = {
# governor = "powersave";
# turbo = "never";
# energy_performance_preference = "balance_power";
# };
# charger = {
# governor = "performance";
# turbo = "auto";
# energy_performance_preference = "performance";
# };
# };
#};
2024-10-21 17:12:46 +02:00
} ;
2025-12-28 02:04:19 +01:00
# powerManagement.powertop.enable = false; # somehow figure out how to let this not apply to specific USB devices, as they will auto suspend and that is annoying.
2024-10-21 17:12:46 +02:00
} ;
}