about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2022-04-05 17:51:47 -0700
committerFranck Cuny <franck@fcuny.net>2022-04-05 17:51:47 -0700
commit971ffcae9bff15eb6ac6723b4d0bba7f7c54bf0f (patch)
tree428d6a111c5128d1595711260f7245b80a1c9c9a
parentcarmel: enable the sound (diff)
downloadworld-971ffcae9bff15eb6ac6723b4d0bba7f7c54bf0f.tar.gz
create a profile for laptop
-rw-r--r--hosts/aptos/default.nix2
-rw-r--r--lib/default.nix1
-rw-r--r--modules/services/default.nix2
-rw-r--r--modules/services/thermald/default.nix10
-rw-r--r--modules/services/tlp/default.nix24
-rw-r--r--profiles/default.nix1
-rw-r--r--profiles/laptop/default.nix15
7 files changed, 53 insertions, 2 deletions
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;
+  };
+}