josie / alder-tools

#!/bin/sh
# powercap-pl-rules.sh - one-shot installer for RAPL access (aldermon).
#
# RAPL energy_uj is 0400 root-only on this kernel, which gates the power
# panel. This installs a udev rule + helper so any user in group `adm`
# can read energy counters. Run once as root:
#
#   doas ./powercap-pl-rules.sh
#
# Idempotent: re-running overwrites installed files.

set -eu

HELPER=/usr/local/sbin/aldermon-powercap-chmod
RULE=/etc/udev/rules.d/60-aldermon-powercap.rules

# Helper: relax energy_uj to 0440, group adm, on every powercap dir.
cat > "$HELPER" <<'EOF'
#!/bin/sh
for d in /sys/class/powercap/intel-rapl*; do
    [ -e "$d/energy_uj" ] && chgrp adm "$d/energy_uj" && chmod 0440 "$d/energy_uj"
done
exit 0
EOF
chmod 0755 "$HELPER"

# RUN+= (not MODE=/GROUP=) - powercap has no devnode, so udev's standard
# MODE/GROUP assignment doesn't apply; we chmod in-process instead.
cat > "$RULE" <<EOF
SUBSYSTEM=="powercap", ACTION=="add", RUN+="$HELPER"
EOF

# Apply immediately so a reboot isn't required.
"$HELPER"

echo "Installed:"
echo "  $HELPER"
echo "  $RULE"
echo "Add yourself to adm if not already: doas usermod -aG adm \$USER"