about summary refs log tree commit diff
path: root/bundles/hdidle
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/hdidle')
-rwxr-xr-xbundles/hdidle/files/cron_job5
-rwxr-xr-xbundles/hdidle/files/hdidle17
-rw-r--r--bundles/hdidle/items.py16
-rw-r--r--bundles/hdidle/metadata.py7
4 files changed, 45 insertions, 0 deletions
diff --git a/bundles/hdidle/files/cron_job b/bundles/hdidle/files/cron_job
new file mode 100755
index 0000000..c4d8209
--- /dev/null
+++ b/bundles/hdidle/files/cron_job
@@ -0,0 +1,5 @@
+#!/bin/sh
+set -eu
+/usr/bin/hdidle >/dev/null 2>&1 &&
+	tgnotify '💤*shimakaze/hdidle*\nput drives to sleep' >/dev/null 2>&1
+exit 0
diff --git a/bundles/hdidle/files/hdidle b/bundles/hdidle/files/hdidle
new file mode 100755
index 0000000..d88c992
--- /dev/null
+++ b/bundles/hdidle/files/hdidle
@@ -0,0 +1,17 @@
+#!/bin/sh
+set -ex
+
+main() {
+	disks_were_put_to_sleep=0
+
+	for drv in /dev/sd*; do
+		if hdparm -C $drv | grep -vq 'standby'; then
+			hdparm -y $drv
+			disks_were_put_to_sleep=1
+		fi
+	done
+
+	test -z "$disks_were_put_to_sleep" && exit 1 || exit 0
+}
+
+main
diff --git a/bundles/hdidle/items.py b/bundles/hdidle/items.py
new file mode 100644
index 0000000..b03810e
--- /dev/null
+++ b/bundles/hdidle/items.py
@@ -0,0 +1,16 @@
+
+files = {
+    "/usr/bin/hdidle": {
+        "source": "hdidle",
+        "content_type": "text",
+        "mode": "0755",
+    },
+    "/etc/periodic/hourly/hdidle": {
+        "source": "cron_job",
+        "content_type": "text",
+        "mode": "0755",
+        "needs": {
+            "bundle:tgnotify",
+        },
+    },
+}
diff --git a/bundles/hdidle/metadata.py b/bundles/hdidle/metadata.py
new file mode 100644
index 0000000..19b0117
--- /dev/null
+++ b/bundles/hdidle/metadata.py
@@ -0,0 +1,7 @@
+defaults = {
+    "apk": {
+        "packages": {
+            "hdparm": {},
+        },
+    },
+}