summaryrefslogtreecommitdiffstats
path: root/roles
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2026-07-09 23:20:14 +0200
committerAhmed Abdelhalim <[email protected]>2026-07-10 00:38:48 +0200
commit31ab4af71809028695e747cc717dae0e45a21e8e (patch)
tree0a46b0bbab2ab58a91e29669a9f5519e817d551a /roles
parent1cbb9df950175e698e1edc87953e8f4bfb22b88a (diff)
Extract logind lid configuration into it's own role
Diffstat (limited to 'roles')
-rw-r--r--roles/ethtool/defaults/main.yml1
-rw-r--r--roles/ethtool/handlers/main.yml5
-rw-r--r--roles/ethtool/meta/argument_specs.yml12
-rw-r--r--roles/ethtool/meta/main.yml3
-rw-r--r--roles/ethtool/tasks/main.yml14
-rw-r--r--roles/ethtool/templates/logind.conf.j22
-rw-r--r--roles/logind/defaults/main.yml5
-rw-r--r--roles/logind/handlers/main.yml6
-rw-r--r--roles/logind/meta/argument_specs.yml44
-rw-r--r--roles/logind/meta/main.yml18
-rw-r--r--roles/logind/tasks/main.yml17
-rw-r--r--roles/logind/templates/logind.conf.j25
12 files changed, 97 insertions, 35 deletions
diff --git a/roles/ethtool/defaults/main.yml b/roles/ethtool/defaults/main.yml
index 8da62da2..61cfd43e 100644
--- a/roles/ethtool/defaults/main.yml
+++ b/roles/ethtool/defaults/main.yml
@@ -1,3 +1,2 @@
---
ethtool_wol_interface: "eth0"
-ethtool_lid_ac_action: "suspend"
diff --git a/roles/ethtool/handlers/main.yml b/roles/ethtool/handlers/main.yml
index 88cc1a15..f2b4275a 100644
--- a/roles/ethtool/handlers/main.yml
+++ b/roles/ethtool/handlers/main.yml
@@ -4,8 +4,3 @@
ansible.builtin.systemd_service:
daemon_reload: true
-- name: "Reload systemd-logind"
- become: true
- ansible.builtin.systemd_service:
- name: "systemd-logind"
- state: "restarted"
diff --git a/roles/ethtool/meta/argument_specs.yml b/roles/ethtool/meta/argument_specs.yml
index ef5aefad..8f6ce206 100644
--- a/roles/ethtool/meta/argument_specs.yml
+++ b/roles/ethtool/meta/argument_specs.yml
@@ -6,15 +6,3 @@ argument_specs:
type: "str"
description: "Network interface to enable Wake-on-LAN on"
default: "eth0"
- ethtool_lid_ac_action:
- type: "str"
- description: "HandleLidSwitchExternalPower value"
- default: "suspend"
- choices:
- - "ignore"
- - "suspend"
- - "hibernate"
- - "hybrid-sleep"
- - "suspend-then-hibernate"
- - "lock"
- - "poweroff"
diff --git a/roles/ethtool/meta/main.yml b/roles/ethtool/meta/main.yml
index de7f32a3..e33a01b3 100644
--- a/roles/ethtool/meta/main.yml
+++ b/roles/ethtool/meta/main.yml
@@ -1,5 +1,6 @@
---
-dependencies: []
+dependencies:
+ - role: "logind"
galaxy_info:
author: "a14m"
description: "Install ethtool and enable Wake-on-LAN via systemd service"
diff --git a/roles/ethtool/tasks/main.yml b/roles/ethtool/tasks/main.yml
index f92d052e..c9c67648 100644
--- a/roles/ethtool/tasks/main.yml
+++ b/roles/ethtool/tasks/main.yml
@@ -26,17 +26,3 @@
# WoL service fails in containers — ethtool_wol_interface does not exist
- "molecule-notest"
-- name: "Ensure /etc/systemd/logind.conf.d exists"
- become: true
- ansible.builtin.file:
- path: "/etc/systemd/logind.conf.d"
- state: "directory"
- mode: "0755"
-
-- name: "Configure lid switch on AC power"
- become: true
- ansible.builtin.template:
- src: "logind.conf.j2"
- dest: "/etc/systemd/logind.conf.d/wol.conf"
- mode: "0644"
- notify: "Reload systemd-logind"
diff --git a/roles/ethtool/templates/logind.conf.j2 b/roles/ethtool/templates/logind.conf.j2
deleted file mode 100644
index 722e3a8a..00000000
--- a/roles/ethtool/templates/logind.conf.j2
+++ /dev/null
@@ -1,2 +0,0 @@
-[Login]
-HandleLidSwitchExternalPower={{ ethtool_lid_ac_action }}
diff --git a/roles/logind/defaults/main.yml b/roles/logind/defaults/main.yml
new file mode 100644
index 00000000..bff32a33
--- /dev/null
+++ b/roles/logind/defaults/main.yml
@@ -0,0 +1,5 @@
+---
+logind_lid_ac_action: "suspend"
+logind_lid_battery_action: "suspend"
+logind_idle_action: "suspend"
+logind_idle_delay: 0
diff --git a/roles/logind/handlers/main.yml b/roles/logind/handlers/main.yml
new file mode 100644
index 00000000..617bb197
--- /dev/null
+++ b/roles/logind/handlers/main.yml
@@ -0,0 +1,6 @@
+---
+- name: "Reload systemd-logind"
+ become: true
+ ansible.builtin.systemd_service:
+ name: "systemd-logind"
+ state: "restarted"
diff --git a/roles/logind/meta/argument_specs.yml b/roles/logind/meta/argument_specs.yml
new file mode 100644
index 00000000..4dca7643
--- /dev/null
+++ b/roles/logind/meta/argument_specs.yml
@@ -0,0 +1,44 @@
+---
+argument_specs:
+ main:
+ options:
+ logind_lid_battery_action:
+ type: "str"
+ description: "HandleLidSwitch — action when lid closed on battery"
+ default: "suspend"
+ choices:
+ - "ignore"
+ - "suspend"
+ - "hibernate"
+ - "hybrid-sleep"
+ - "suspend-then-hibernate"
+ - "lock"
+ - "poweroff"
+ logind_lid_ac_action:
+ type: "str"
+ description: "HandleLidSwitchExternalPower — action when lid closed on AC power"
+ default: "suspend"
+ choices:
+ - "ignore"
+ - "suspend"
+ - "hibernate"
+ - "hybrid-sleep"
+ - "suspend-then-hibernate"
+ - "lock"
+ - "poweroff"
+ logind_idle_action:
+ type: "str"
+ description: "IdleAction — action after idle timeout"
+ default: "suspend"
+ choices:
+ - "ignore"
+ - "suspend"
+ - "hibernate"
+ - "hybrid-sleep"
+ - "suspend-then-hibernate"
+ - "lock"
+ - "poweroff"
+ logind_idle_delay:
+ type: "int"
+ description: "IdleActionSec in seconds (0 disables idle action)"
+ default: 0
diff --git a/roles/logind/meta/main.yml b/roles/logind/meta/main.yml
new file mode 100644
index 00000000..7ab91f4a
--- /dev/null
+++ b/roles/logind/meta/main.yml
@@ -0,0 +1,18 @@
+---
+dependencies:
+ - role: "systemd"
+galaxy_info:
+ author: "a14m"
+ description: "Configure systemd-logind lid switch and idle behavior"
+ license: "MIT"
+ min_ansible_version: "2.18"
+ platforms:
+ - name: "ArchLinux"
+ versions:
+ - "all"
+ - name: "Ubuntu"
+ versions:
+ - "noble"
+ - name: "Debian"
+ versions:
+ - "bookworm"
diff --git a/roles/logind/tasks/main.yml b/roles/logind/tasks/main.yml
new file mode 100644
index 00000000..3b5aad5c
--- /dev/null
+++ b/roles/logind/tasks/main.yml
@@ -0,0 +1,17 @@
+---
+- name: "Ensure /etc/systemd/logind.conf.d exists"
+ become: true
+ ansible.builtin.file:
+ path: "/etc/systemd/logind.conf.d"
+ state: "directory"
+ mode: "0755"
+
+- name: "Configure systemd-logind"
+ become: true
+ ansible.builtin.template:
+ src: "logind.conf.j2"
+ dest: "/etc/systemd/logind.conf.d/override.conf"
+ owner: "root"
+ group: "root"
+ mode: "0644"
+ notify: "Reload systemd-logind"
diff --git a/roles/logind/templates/logind.conf.j2 b/roles/logind/templates/logind.conf.j2
new file mode 100644
index 00000000..b1269b15
--- /dev/null
+++ b/roles/logind/templates/logind.conf.j2
@@ -0,0 +1,5 @@
+[Login]
+HandleLidSwitch={{ logind_lid_battery_action }}
+HandleLidSwitchExternalPower={{ logind_lid_ac_action }}
+IdleAction={{ logind_idle_action }}
+IdleActionSec={{ logind_idle_delay }}