From 971ffcae9bff15eb6ac6723b4d0bba7f7c54bf0f Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Tue, 5 Apr 2022 17:51:47 -0700 Subject: create a profile for laptop --- hosts/aptos/default.nix | 2 +- lib/default.nix | 1 + modules/services/default.nix | 2 +- modules/services/thermald/default.nix | 10 ++++++++++ modules/services/tlp/default.nix | 24 ++++++++++++++++++++++++ profiles/default.nix | 1 + profiles/laptop/default.nix | 15 +++++++++++++++ 7 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 modules/services/thermald/default.nix create mode 100644 modules/services/tlp/default.nix create mode 100644 profiles/default.nix create mode 100644 profiles/laptop/default.nix diff --git a/hosts/aptos/default.nix b/hosts/aptos/default.nix index b596f30..a469aec 100644 --- a/hosts/aptos/default.nix +++ b/hosts/aptos/default.nix @@ -22,7 +22,7 @@ }; }; - services.thermald.enable = true; + my.profiles = { laptop = { enable = true; }; }; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions diff --git a/lib/default.nix b/lib/default.nix index ccf204e..1a16e1c 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -13,6 +13,7 @@ modules = [ inputs.agenix.nixosModules.age ../modules + ../profiles ../hosts/common ../hosts/${hostname} ./private-wireguard.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index 9a5338b..2e04cac 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -1 +1 @@ -{ ... }: { imports = [ ./ssh-server ./tailscale ]; } +{ ... }: { imports = [ ./ssh-server ./tailscale ./thermald ./tlp ]; } diff --git a/modules/services/thermald/default.nix b/modules/services/thermald/default.nix new file mode 100644 index 0000000..8325b86 --- /dev/null +++ b/modules/services/thermald/default.nix @@ -0,0 +1,10 @@ +# thermal control management +{ config, lib, ... }: +let cfg = config.my.services.thermald; +in { + options.my.services.thermald = { + enable = lib.mkEnableOption "thermald configuration"; + }; + + config = lib.mkIf cfg.enable { services.thermald = { enable = true; }; }; +} diff --git a/modules/services/tlp/default.nix b/modules/services/tlp/default.nix new file mode 100644 index 0000000..2f818e5 --- /dev/null +++ b/modules/services/tlp/default.nix @@ -0,0 +1,24 @@ +# TLP power management +{ config, lib, ... }: +let cfg = config.my.services.tlp; +in { + options.my.services.tlp = { + enable = lib.mkEnableOption "TLP power management configuration"; + }; + + config = lib.mkIf cfg.enable { + services.tlp = { + enable = true; + + settings = { + # Set CPU scaling aggressively when power is not an issue + CPU_SCALING_GOVERNOR_ON_AC = "performance"; + CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + + # Keep charge between 60% and 80% to preserve battery life + START_CHARGE_THRESH_BAT0 = 60; + STOP_CHARGE_THRESH_BAT0 = 80; + }; + }; + }; +} diff --git a/profiles/default.nix b/profiles/default.nix new file mode 100644 index 0000000..0e5d948 --- /dev/null +++ b/profiles/default.nix @@ -0,0 +1 @@ +{ ... }: { imports = [ ./laptop ]; } diff --git a/profiles/laptop/default.nix b/profiles/laptop/default.nix new file mode 100644 index 0000000..f5288b6 --- /dev/null +++ b/profiles/laptop/default.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: +let cfg = config.my.profiles.laptop; +in { + options.my.profiles.laptop = with lib; { + enable = mkEnableOption "laptop profile"; + }; + + config = lib.mkIf cfg.enable { + # monitors and controls temperature + my.services.thermald.enable = true; + + # Enable TLP power management + my.services.tlp.enable = true; + }; +} -- cgit 1.4.1