about summary refs log tree commit diff
path: root/users/glittershark/system/system/modules/reusable
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2020-06-16T00·02+0100
committerVincent Ambo <mail@tazj.in>2020-06-16T00·02+0100
commit81564185e951f69d490be8f5ad76e8ea642b5dde (patch)
treec27cd8a5bb922f710ff7da4b2942d2db09a95376 /users/glittershark/system/system/modules/reusable
parent85d82a9dc262bffa87423f595f7e957c42713798 (diff)
parent3b174300ae60f63f50427cde3bfd680fd3043c3a (diff)
Add 'users/glittershark/system/' from commit '3b174300ae60f63f50427cde3bfd680fd3043c3a' r/975
git-subtree-dir: users/glittershark/system
git-subtree-mainline: 85d82a9dc262bffa87423f595f7e957c42713798
git-subtree-split: 3b174300ae60f63f50427cde3bfd680fd3043c3a
Diffstat (limited to 'users/glittershark/system/system/modules/reusable')
-rw-r--r--users/glittershark/system/system/modules/reusable/README.org2
-rw-r--r--users/glittershark/system/system/modules/reusable/battery.nix32
2 files changed, 34 insertions, 0 deletions
diff --git a/users/glittershark/system/system/modules/reusable/README.org b/users/glittershark/system/system/modules/reusable/README.org
new file mode 100644
index 0000000000..34d9bfdcb7
--- /dev/null
+++ b/users/glittershark/system/system/modules/reusable/README.org
@@ -0,0 +1,2 @@
+This directory contains things I'm eventually planning on contributing upstream
+to nixpkgs
diff --git a/users/glittershark/system/system/modules/reusable/battery.nix b/users/glittershark/system/system/modules/reusable/battery.nix
new file mode 100644
index 0000000000..d7043bf549
--- /dev/null
+++ b/users/glittershark/system/system/modules/reusable/battery.nix
@@ -0,0 +1,32 @@
+{ config, lib, pkgs, ... }:
+with lib;
+{
+  options = {
+    laptop.onLowBattery = {
+      enable = mkEnableOption "Perform action on low battery";
+
+      thresholdPercentage = mkOption {
+        description = "Threshold battery percentage on which to perform the action";
+        default = 5;
+        type = types.int;
+      };
+
+      action = mkOption {
+        description = "Action to perform on low battery";
+        default = "hibernate";
+        type = types.enum [ "hibernate" "suspend" "suspend-then-hibernate" ];
+      };
+    };
+  };
+
+  config =
+    let cfg = config.laptop.onLowBattery;
+    in mkIf cfg.enable {
+    services.udev.extraRules = concatStrings [
+      ''SUBSYSTEM=="power_supply", ''
+      ''ATTR{status}=="Discharging", ''
+      ''ATTR{capacity}=="[0-${toString cfg.thresholdPercentage}]", ''
+      ''RUN+="/${pkgs.systemd}/bin/systemctl ${cfg.action}"''
+    ];
+  };
+}