summaryrefslogtreecommitdiff
path: root/modules/power/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/power/default.nix')
-rw-r--r--modules/power/default.nix49
1 files changed, 49 insertions, 0 deletions
diff --git a/modules/power/default.nix b/modules/power/default.nix
new file mode 100644
index 0000000..c3e4974
--- /dev/null
+++ b/modules/power/default.nix
@@ -0,0 +1,49 @@
+{ config, lib, ... }:
+
+let
+ cfg = config.power;
+
+ types = lib.types;
+
+ onOff = cond: if cond then "on" else "off";
+in
+
+{
+ options = {
+ power.restartAfterPowerFailure = lib.mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Whether to restart the computer after a power failure.
+
+ Option is not supported on all devices.
+ '';
+ };
+
+ power.restartAfterFreeze = lib.mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Whether to restart the computer after a system freeze.
+ '';
+ };
+ };
+
+ config = {
+
+ system.activationScripts.power.text = ''
+ echo "configuring power..." >&2
+
+ ${lib.optionalString (cfg.restartAfterPowerFailure != null) ''
+ systemsetup -setRestartPowerFailure \
+ '${onOff cfg.restartAfterPowerFailure}' &> /dev/null
+ ''}
+
+ ${lib.optionalString (cfg.restartAfterFreeze != null) ''
+ systemsetup -setRestartFreeze \
+ '${onOff cfg.restartAfterFreeze}' &> /dev/null
+ ''}
+ '';
+
+ };
+}