summaryrefslogtreecommitdiff
path: root/sys-power
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-04 05:48:38 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-04 05:48:38 -0500
commitbfd9c39e4712ebdb442d4ca0673061faed1e70e1 (patch)
tree0d7a74b4463ee387f9cf9368ceb1b757f694f72a /sys-power
parentf716a9fe6455d39eef01e718aae68dae61c19704 (diff)
downloadbaldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.gz
baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.xz
baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.zip
Revert "Adding metadata"
This reverts commit f716a9fe6455d39eef01e718aae68dae61c19704.
Diffstat (limited to 'sys-power')
-rw-r--r--sys-power/RyzenAdj/Manifest2
-rw-r--r--sys-power/RyzenAdj/RyzenAdj-0.16.0.ebuild30
-rw-r--r--sys-power/RyzenAdj/RyzenAdj-0.19.0.ebuild30
-rw-r--r--sys-power/RyzenAdj/metadata.xml8
-rw-r--r--sys-power/acpi/Manifest1
-rw-r--r--sys-power/acpi/acpi-1.8.ebuild17
-rw-r--r--sys-power/acpi/metadata.xml16
-rw-r--r--sys-power/acpi_call/Manifest1
-rw-r--r--sys-power/acpi_call/acpi_call-1.2.2-r1.ebuild33
-rw-r--r--sys-power/acpi_call/acpi_call-9999.ebuild33
-rw-r--r--sys-power/acpi_call/metadata.xml12
-rw-r--r--sys-power/acpid/Manifest1
-rw-r--r--sys-power/acpid/acpid-2.0.34-r1.ebuild60
-rw-r--r--sys-power/acpid/files/acpid-1.0.4-default19
-rw-r--r--sys-power/acpid/files/acpid-1.0.6-default.sh59
-rw-r--r--sys-power/acpid/files/acpid-2.0.16-conf.d6
-rw-r--r--sys-power/acpid/files/acpid-2.0.26-init.d19
-rw-r--r--sys-power/acpid/files/acpid-2.0.34-lfs.patch19
-rw-r--r--sys-power/acpid/files/acpid.service10
-rw-r--r--sys-power/acpid/files/acpid.socket8
-rw-r--r--sys-power/acpid/metadata.xml8
-rw-r--r--sys-power/acpilight/Manifest1
-rw-r--r--sys-power/acpilight/acpilight-1.2-r5.ebuild62
-rw-r--r--sys-power/acpilight/files/acpilight-1.2-fix-log10-of-zero.patch26
-rw-r--r--sys-power/acpilight/files/acpilight.confd13
-rw-r--r--sys-power/acpilight/files/acpilight.initd50
-rw-r--r--sys-power/acpilight/metadata.xml15
-rw-r--r--sys-power/acpitool/Manifest1
-rw-r--r--sys-power/acpitool/acpitool-0.5.1-r2.ebuild19
-rw-r--r--sys-power/acpitool/files/acpitool-0.5.1-ac_adapter.patch73
-rw-r--r--sys-power/acpitool/files/acpitool-0.5.1-battery.patch484
-rw-r--r--sys-power/acpitool/files/acpitool-0.5.1-kernel3.patch14
-rw-r--r--sys-power/acpitool/files/acpitool-0.5.1-wakeup.patch70
-rw-r--r--sys-power/acpitool/metadata.xml5
-rw-r--r--sys-power/amdfan/Manifest3
-rw-r--r--sys-power/amdfan/amdfan-0.1.28.ebuild44
-rw-r--r--sys-power/amdfan/amdfan-0.2.3.ebuild64
-rw-r--r--sys-power/amdfan/amdfan-0.2.5.ebuild64
-rw-r--r--sys-power/amdfan/metadata.xml12
-rw-r--r--sys-power/apcupsd/Manifest1
-rw-r--r--sys-power/apcupsd/apcupsd-3.14.14-r4.ebuild160
-rw-r--r--sys-power/apcupsd/files/apcupsd-3.14.14-lto.patch29
-rw-r--r--sys-power/apcupsd/files/apcupsd-3.14.9-aliasing.patch39
-rw-r--r--sys-power/apcupsd/files/apcupsd-3.14.9-close-on-exec.patch50
-rw-r--r--sys-power/apcupsd/files/apcupsd-3.14.9-commfailure.patch15
-rw-r--r--sys-power/apcupsd/files/apcupsd-3.14.9-fix-nologin.patch15
-rw-r--r--sys-power/apcupsd/files/apcupsd-3.14.9-gapcmon.patch33
-rw-r--r--sys-power/apcupsd/files/apcupsd-3.14.9-wall-on-mounted-usr.patch20
-rw-r--r--sys-power/apcupsd/files/apcupsd-tmpfiles.conf3
-rw-r--r--sys-power/apcupsd/files/apcupsd-udev.rules10
-rw-r--r--sys-power/apcupsd/files/apcupsd.init28
-rw-r--r--sys-power/apcupsd/files/apcupsd.powerfail.init-r117
-rw-r--r--sys-power/apcupsd/files/apcupsd.service8
-rw-r--r--sys-power/apcupsd/metadata.xml33
-rw-r--r--sys-power/auto-cpufreq/Manifest3
-rw-r--r--sys-power/auto-cpufreq/auto-cpufreq-2.3.0.ebuild147
-rw-r--r--sys-power/auto-cpufreq/auto-cpufreq-2.4.0.ebuild145
-rw-r--r--sys-power/auto-cpufreq/auto-cpufreq-2.6.0.ebuild142
-rw-r--r--sys-power/auto-cpufreq/metadata.xml16
-rw-r--r--sys-power/autosuspend/Manifest2
-rw-r--r--sys-power/autosuspend/autosuspend-10.1.0.ebuild67
-rw-r--r--sys-power/autosuspend/autosuspend-7.2.0.ebuild70
-rw-r--r--sys-power/autosuspend/metadata.xml11
-rw-r--r--sys-power/bbswitch/Manifest1
-rw-r--r--sys-power/bbswitch/bbswitch-0.8_p20211129-r1.ebuild57
-rw-r--r--sys-power/bbswitch/files/bbswitch-kernel-5.18.patch19
-rw-r--r--sys-power/bbswitch/files/bbswitch.modprobe1
-rw-r--r--sys-power/bbswitch/metadata.xml23
-rw-r--r--sys-power/cpupower/Manifest3
-rw-r--r--sys-power/cpupower/cpupower-6.10.ebuild66
-rw-r--r--sys-power/cpupower/cpupower-6.16-r1.ebuild80
-rw-r--r--sys-power/cpupower/cpupower-6.2.ebuild61
-rw-r--r--sys-power/cpupower/files/conf.d-r236
-rw-r--r--sys-power/cpupower/files/cpupower-5.4-cflags.patch32
-rw-r--r--sys-power/cpupower/files/cpupower-frequency-set.service9
-rw-r--r--sys-power/cpupower/files/cpupower-frequency-set.service.conf2
-rw-r--r--sys-power/cpupower/files/init.d-r441
-rw-r--r--sys-power/cpupower/metadata.xml11
-rw-r--r--sys-power/envycontrol/Manifest1
-rw-r--r--sys-power/envycontrol/envycontrol-3.5.2.ebuild26
-rw-r--r--sys-power/envycontrol/envycontrol-9999.ebuild25
-rw-r--r--sys-power/envycontrol/metadata.xml11
-rw-r--r--sys-power/fan2go-tui/Manifest2
-rw-r--r--sys-power/fan2go-tui/fan2go-tui-0.2.1.ebuild54
-rw-r--r--sys-power/fan2go-tui/metadata.xml11
-rw-r--r--sys-power/fan2go/Manifest2
-rw-r--r--sys-power/fan2go/fan2go-0.13.0.ebuild54
-rw-r--r--sys-power/fan2go/metadata.xml12
-rw-r--r--sys-power/gtherm/Manifest1
-rw-r--r--sys-power/gtherm/gtherm-0.0.3.ebuild42
-rw-r--r--sys-power/gtherm/metadata.xml8
-rw-r--r--sys-power/hibernate-script/Manifest2
-rw-r--r--sys-power/hibernate-script/hibernate-script-2.0-r6.ebuild75
-rw-r--r--sys-power/hibernate-script/metadata.xml8
-rw-r--r--sys-power/iasl/Manifest2
-rw-r--r--sys-power/iasl/files/iasl-20241212-Makefile-fixes.patch93
-rw-r--r--sys-power/iasl/files/iasl-20241212-Makefile-verbose.patch129
-rw-r--r--sys-power/iasl/iasl-20241212.ebuild112
-rw-r--r--sys-power/iasl/metadata.xml20
-rw-r--r--sys-power/intel-undervolt/Manifest1
-rw-r--r--sys-power/intel-undervolt/intel-undervolt-1.7-r1.ebuild60
-rw-r--r--sys-power/intel-undervolt/metadata.xml11
-rw-r--r--sys-power/libacpica/Manifest1
-rw-r--r--sys-power/libacpica/libacpica-0_pre20220331_p6.ebuild57
-rw-r--r--sys-power/libacpica/libacpica-9999.ebuild57
-rw-r--r--sys-power/libacpica/metadata.xml8
-rw-r--r--sys-power/linux-tools-power-x86/Manifest2
-rw-r--r--sys-power/linux-tools-power-x86/files/linux-tools-power-x86-6.1-cflags.patch45
-rw-r--r--sys-power/linux-tools-power-x86/files/linux-tools-power-x86-6.6-cflags.patch45
-rw-r--r--sys-power/linux-tools-power-x86/linux-tools-power-x86-6.1.ebuild96
-rw-r--r--sys-power/linux-tools-power-x86/linux-tools-power-x86-6.6.ebuild96
-rw-r--r--sys-power/linux-tools-power-x86/metadata.xml11
-rw-r--r--sys-power/metadata.xml42
-rw-r--r--sys-power/nct6687d/Manifest2
-rw-r--r--sys-power/nct6687d/metadata.xml16
-rw-r--r--sys-power/nct6687d/nct6687d-0_pre20260313.ebuild28
-rw-r--r--sys-power/nct6687d/nct6687d-0_pre20260519.ebuild28
-rw-r--r--sys-power/nct6687d/nct6687d-9999.ebuild28
-rw-r--r--sys-power/nut/Manifest1
-rw-r--r--sys-power/nut/files/nut-2.2.2-init.d-upsdrv47
-rw-r--r--sys-power/nut/files/nut-2.6.2-lowspeed-buffer-size.patch18
-rw-r--r--sys-power/nut/files/nut-2.6.5-init.d-upslog34
-rw-r--r--sys-power/nut/files/nut-2.6.5-init.d-upsmon33
-rw-r--r--sys-power/nut/files/nut-2.8.0-init.d-upsd41
-rw-r--r--sys-power/nut/files/nut.powerfail.initd47
-rw-r--r--sys-power/nut/files/systemd_notify.patch50
-rw-r--r--sys-power/nut/files/systemd_notify_285.patch54
-rw-r--r--sys-power/nut/files/systemd_notify_285_openrc.patch54
-rw-r--r--sys-power/nut/files/systemd_notify_openrc.patch50
-rw-r--r--sys-power/nut/metadata.xml34
-rw-r--r--sys-power/nut/nut-2.8.4.ebuild266
-rw-r--r--sys-power/nut/nut-9999.ebuild266
-rw-r--r--sys-power/nvclock/Manifest1
-rw-r--r--sys-power/nvclock/files/nvclock-0.8_p20110102-buffers.patch202
-rw-r--r--sys-power/nvclock/files/nvclock-0.8_p20110102-desktop.patch18
-rw-r--r--sys-power/nvclock/files/nvclock-0.8_p20110102-fno-common.patch11
-rw-r--r--sys-power/nvclock/files/nvclock-0.8_p20110102-r1-make.patch157
-rw-r--r--sys-power/nvclock/files/nvclock-0.8_p20110102-usleep.patch14
-rw-r--r--sys-power/nvclock/files/nvclock_confd9
-rw-r--r--sys-power/nvclock/files/nvclock_initd12
-rw-r--r--sys-power/nvclock/files/nvclock_initd-r112
-rw-r--r--sys-power/nvclock/metadata.xml9
-rw-r--r--sys-power/nvclock/nvclock-0.8_p20110102-r2.ebuild67
-rw-r--r--sys-power/nvclock/nvclock-0.8_p20110102-r3.ebuild67
-rw-r--r--sys-power/nvidia-exec/Manifest1
-rw-r--r--sys-power/nvidia-exec/files/nvx.initd18
-rw-r--r--sys-power/nvidia-exec/metadata.xml11
-rw-r--r--sys-power/nvidia-exec/nvidia-exec-0.3.2.ebuild46
-rw-r--r--sys-power/nvidia-exec/nvidia-exec-9999.ebuild46
-rw-r--r--sys-power/nvram-reboot/Manifest1
-rw-r--r--sys-power/nvram-reboot/metadata.xml11
-rw-r--r--sys-power/nvram-reboot/nvram-reboot-2004.10.03-r1.ebuild22
-rw-r--r--sys-power/pmtools/Manifest1
-rw-r--r--sys-power/pmtools/files/pmtools-20071116-64bit.patch20
-rw-r--r--sys-power/pmtools/files/pmtools-20100123-acpixtract-pmtools.patch42
-rw-r--r--sys-power/pmtools/files/pmtools-20100123-madt.patch39
-rw-r--r--sys-power/pmtools/files/pmtools-20101124-cflags-ldflags.patch48
-rw-r--r--sys-power/pmtools/files/pmtools-20110323-r2-types.patch21
-rw-r--r--sys-power/pmtools/metadata.xml18
-rw-r--r--sys-power/pmtools/pmtools-20130209.ebuild54
-rw-r--r--sys-power/power-profiles-daemon/Manifest1
-rw-r--r--sys-power/power-profiles-daemon/files/power-profiles-daemon.initd14
-rw-r--r--sys-power/power-profiles-daemon/metadata.xml11
-rw-r--r--sys-power/power-profiles-daemon/power-profiles-daemon-0.30.ebuild112
-rw-r--r--sys-power/powermgmt-base/Manifest1
-rw-r--r--sys-power/powermgmt-base/metadata.xml5
-rw-r--r--sys-power/powermgmt-base/powermgmt-base-1.31-r2.ebuild46
-rw-r--r--sys-power/powerstat/Manifest2
-rw-r--r--sys-power/powerstat/metadata.xml22
-rw-r--r--sys-power/powerstat/powerstat-0.02.27.ebuild27
-rw-r--r--sys-power/powerstat/powerstat-0.04.03.ebuild33
-rw-r--r--sys-power/powerstat/powerstat-9999.ebuild33
-rw-r--r--sys-power/powertop/Manifest1
-rw-r--r--sys-power/powertop/files/powertop-2.15-gettext.patch49
-rw-r--r--sys-power/powertop/files/powertop-2.8-ncurses_tinfo.patch41
-rw-r--r--sys-power/powertop/metadata.xml8
-rw-r--r--sys-power/powertop/powertop-2.15.ebuild113
-rw-r--r--sys-power/powertop/powertop-9999.ebuild108
-rw-r--r--sys-power/rog-daemon/Manifest1
-rw-r--r--sys-power/rog-daemon/metadata.xml19
-rw-r--r--sys-power/rog-daemon/rog-daemon-2.1.0.ebuild26
-rw-r--r--sys-power/sandmann-bin/Manifest2
-rw-r--r--sys-power/sandmann-bin/metadata.xml11
-rw-r--r--sys-power/sandmann-bin/sandmann-bin-1.3.1.ebuild59
-rw-r--r--sys-power/sandmann-bin/sandmann-bin-1.4.1-r1.ebuild61
-rw-r--r--sys-power/sispmctl/Manifest1
-rw-r--r--sys-power/sispmctl/metadata.xml14
-rw-r--r--sys-power/sispmctl/sispmctl-4.12.ebuild53
-rw-r--r--sys-power/suspend/Manifest2
-rw-r--r--sys-power/suspend/files/suspend-1.0_p20200924-Use-pkgconf-for-libgcrypt.patch18
-rw-r--r--sys-power/suspend/files/suspend-1.0_p20200924-fix-loff_t-for-musl.patch24
-rw-r--r--sys-power/suspend/metadata.xml12
-rw-r--r--sys-power/suspend/suspend-1.0_p20200924.ebuild63
-rw-r--r--sys-power/switcheroo-control/Manifest2
-rw-r--r--sys-power/switcheroo-control/files/switcheroo-control-init.d12
-rw-r--r--sys-power/switcheroo-control/metadata.xml10
-rw-r--r--sys-power/switcheroo-control/switcheroo-control-2.6-r2.ebuild72
-rw-r--r--sys-power/switcheroo-control/switcheroo-control-3.0.ebuild87
-rw-r--r--sys-power/system76-power/Manifest294
-rw-r--r--sys-power/system76-power/metadata.xml15
-rw-r--r--sys-power/system76-power/system76-power-1.2.1-r2.ebuild230
-rw-r--r--sys-power/system76-power/system76-power-1.2.4.ebuild274
-rw-r--r--sys-power/system76-power/system76-power-9999.ebuild76
-rw-r--r--sys-power/thermald/Manifest3
-rw-r--r--sys-power/thermald/files/thermald19
-rw-r--r--sys-power/thermald/metadata.xml16
-rw-r--r--sys-power/thermald/thermald-2.5.10.ebuild55
-rw-r--r--sys-power/thermald/thermald-2.5.11.ebuild55
-rw-r--r--sys-power/thermald/thermald-2.5.9.ebuild55
-rw-r--r--sys-power/throttled/Manifest2
-rw-r--r--sys-power/throttled/files/throttled.initd5
-rw-r--r--sys-power/throttled/files/throttled.service11
-rw-r--r--sys-power/throttled/metadata.xml19
-rw-r--r--sys-power/throttled/throttled-0.10.0.ebuild43
-rw-r--r--sys-power/throttled/throttled-0.11.ebuild49
-rw-r--r--sys-power/tlp/Manifest2
-rw-r--r--sys-power/tlp/files/tlp-pd.init9
-rw-r--r--sys-power/tlp/files/tlp.init28
-rw-r--r--sys-power/tlp/metadata.xml19
-rw-r--r--sys-power/tlp/tlp-1.8.0-r1.ebuild50
-rw-r--r--sys-power/tlp/tlp-1.9.1.ebuild108
-rw-r--r--sys-power/uhubctl/Manifest1
-rw-r--r--sys-power/uhubctl/metadata.xml11
-rw-r--r--sys-power/uhubctl/uhubctl-2.5.0.ebuild33
-rw-r--r--sys-power/upower/Manifest1
-rw-r--r--sys-power/upower/metadata.xml10
-rw-r--r--sys-power/upower/upower-1.90.9.ebuild119
-rw-r--r--sys-power/wluma/Manifest391
-rw-r--r--sys-power/wluma/files/wluma.desktop10
-rw-r--r--sys-power/wluma/metadata.xml11
-rw-r--r--sys-power/wluma/wluma-4.3.0-r3.ebuild223
-rw-r--r--sys-power/wluma/wluma-4.4.0-r2.ebuild236
-rw-r--r--sys-power/wluma/wluma-4.9.0.ebuild229
233 files changed, 10103 insertions, 0 deletions
diff --git a/sys-power/RyzenAdj/Manifest b/sys-power/RyzenAdj/Manifest
new file mode 100644
index 000000000000..c16ac39cac2d
--- /dev/null
+++ b/sys-power/RyzenAdj/Manifest
@@ -0,0 +1,2 @@
+DIST RyzenAdj-0.16.0.tar.gz 126451 BLAKE2B c414f6fdb4f18f83aa55e1890fda18558aaabe838d7470aadaa1ac3d2d98552b967bc5753f1784d711bc80b77af3f14ace96ed9986c3dcbf5ba248329a985df0 SHA512 15a49bda180b1a60838f358031c8b443382ced2b74fa9b9717846adc62a9310da43c85841d06cbfa869ea9b9fd0457b09dea26380479b587adac5b4624eb161d
+DIST RyzenAdj-0.19.0.tar.gz 131829 BLAKE2B 09037aa671be90c4a7a4016025a0bc2b8e8d6dc8af038f0aceee6c4b8132e31eda96e7d43cbac4ae6b847aa85202ec9e933162973708041fd7eafccf2052d64c SHA512 730e67b0cc4d0db8be8466001b444e73962a1bdc6cb8c233c72db456b278fc828bd04bc7fa1a9721b6003cdd51e0a667e26444a55e8e034b67a604da6dffc5a4
diff --git a/sys-power/RyzenAdj/RyzenAdj-0.16.0.ebuild b/sys-power/RyzenAdj/RyzenAdj-0.16.0.ebuild
new file mode 100644
index 000000000000..780e3a0e7ea0
--- /dev/null
+++ b/sys-power/RyzenAdj/RyzenAdj-0.16.0.ebuild
@@ -0,0 +1,30 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="The power management tool for mobile and desktop Ryzen APUs"
+HOMEPAGE="https://github.com/FlyGoat/RyzenAdj"
+SRC_URI="https://github.com/FlyGoat/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+DEPEND="sys-apps/pciutils"
+RDEPEND="${DEPEND}"
+
+src_configure() {
+ CMAKE_BUILD_TYPE="Release"
+ cmake_src_configure
+}
+
+src_install() {
+ dosbin "${BUILD_DIR}"/ryzenadj
+
+ dolib.so "${BUILD_DIR}"/libryzenadj.so
+
+ dodoc "${S}"/README.md
+}
diff --git a/sys-power/RyzenAdj/RyzenAdj-0.19.0.ebuild b/sys-power/RyzenAdj/RyzenAdj-0.19.0.ebuild
new file mode 100644
index 000000000000..7d9537d06186
--- /dev/null
+++ b/sys-power/RyzenAdj/RyzenAdj-0.19.0.ebuild
@@ -0,0 +1,30 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="The power management tool for mobile and desktop Ryzen APUs"
+HOMEPAGE="https://github.com/FlyGoat/RyzenAdj"
+SRC_URI="https://github.com/FlyGoat/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="sys-apps/pciutils"
+RDEPEND="${DEPEND}"
+
+src_configure() {
+ CMAKE_BUILD_TYPE="Release"
+ cmake_src_configure
+}
+
+src_install() {
+ dosbin "${BUILD_DIR}"/ryzenadj
+
+ dolib.so "${BUILD_DIR}"/libryzenadj.so
+
+ dodoc "${S}"/README.md
+}
diff --git a/sys-power/RyzenAdj/metadata.xml b/sys-power/RyzenAdj/metadata.xml
new file mode 100644
index 000000000000..6d3b77011f44
--- /dev/null
+++ b/sys-power/RyzenAdj/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+ <upstream>
+ <remote-id type="github">FlyGoat/RyzenAdj</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/acpi/Manifest b/sys-power/acpi/Manifest
new file mode 100644
index 000000000000..2903167d4689
--- /dev/null
+++ b/sys-power/acpi/Manifest
@@ -0,0 +1 @@
+DIST acpi-1.8.tar.gz 106155 BLAKE2B 132ce716d98f70ba014c885441439cf2f93c69cb8f90159f2fc219efd8cb2d51d5179902d900524b9796d17ee70a3efd2e729d502fa5a01033871bdee08e76e0 SHA512 b1f8da4ece480a7bbeb04f214950c169970b7171ffa3531aec58d55bd6a1ca0de68587b35e7379a2fa643f8863617d82da2e70af70ad4b5a175d4d8f8312a3e6
diff --git a/sys-power/acpi/acpi-1.8.ebuild b/sys-power/acpi/acpi-1.8.ebuild
new file mode 100644
index 000000000000..5caf7fa3e992
--- /dev/null
+++ b/sys-power/acpi/acpi-1.8.ebuild
@@ -0,0 +1,17 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Displays information about ACPI devices"
+HOMEPAGE="https://sourceforge.net/projects/acpiclient/"
+SRC_URI="https://downloads.sourceforge.net/acpiclient/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~arm64 x86"
+
+src_install() {
+ default
+ einstalldocs
+}
diff --git a/sys-power/acpi/metadata.xml b/sys-power/acpi/metadata.xml
new file mode 100644
index 000000000000..ca902bbafd62
--- /dev/null
+++ b/sys-power/acpi/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>jsmolic@gentoo.org</email>
+ <name>Jakov Smolić</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">acpiclient</remote-id>
+ </upstream>
+ <longdescription lang="en">
+ Attempts to replicate the functionality of the 'old' apm command
+ on ACPI systems, including battery and thermal information. Does not
+ support ACPI suspending, only displays information about ACPI devices.
+ </longdescription>
+</pkgmetadata>
diff --git a/sys-power/acpi_call/Manifest b/sys-power/acpi_call/Manifest
new file mode 100644
index 000000000000..14f25846bc08
--- /dev/null
+++ b/sys-power/acpi_call/Manifest
@@ -0,0 +1 @@
+DIST acpi_call-1.2.2.tar.gz 12403 BLAKE2B 3195ec7e4d6189abdbb1409914d97d481f63ec79ec89a2ab630120ea99aabf8ca5890c500149a386a4a661d17e58387a6b252b625b6abadef1d977691156745e SHA512 3916a211bcc4a2435c6ba9664b1c86d8ab587c052a03e6edccd00fd7d01c6a756003dcc146e22e2cf688795600589c8cac1d83774c989794dcadc91f5caa2b5e
diff --git a/sys-power/acpi_call/acpi_call-1.2.2-r1.ebuild b/sys-power/acpi_call/acpi_call-1.2.2-r1.ebuild
new file mode 100644
index 000000000000..b7fd9601068a
--- /dev/null
+++ b/sys-power/acpi_call/acpi_call-1.2.2-r1.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit linux-mod-r1
+
+DESCRIPTION="A linux kernel module that enables calls to ACPI"
+HOMEPAGE="https://github.com/nix-community/acpi_call"
+SRC_URI="https://github.com/nix-community/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="amd64"
+IUSE="examples"
+
+CONFIG_CHECK="ACPI"
+
+src_compile() {
+ local modargs=( KDIR=${KV_OUT_DIR} )
+ local modlist=( acpi_call=misc )
+
+ linux-mod-r1_src_compile
+}
+
+src_install() {
+ linux-mod-r1_src_install
+
+ if use examples; then
+ insinto /usr/share/acpi_call
+ doins examples/*.sh
+ fi
+}
diff --git a/sys-power/acpi_call/acpi_call-9999.ebuild b/sys-power/acpi_call/acpi_call-9999.ebuild
new file mode 100644
index 000000000000..c8b96da325e2
--- /dev/null
+++ b/sys-power/acpi_call/acpi_call-9999.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit git-r3 linux-mod-r1
+
+DESCRIPTION="A linux kernel module that enables calls to ACPI"
+HOMEPAGE="https://github.com/nix-community/acpi_call"
+EGIT_REPO_URI="https://github.com/teleshoes/acpi_call.git"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS=""
+IUSE="examples"
+
+CONFIG_CHECK="ACPI"
+
+src_compile() {
+ local modargs=( KDIR=${KV_OUT_DIR} )
+ local modlist=( acpi_call=misc )
+
+ linux-mod-r1_src_compile
+}
+
+src_install() {
+ linux-mod-r1_src_install
+
+ if use examples; then
+ insinto /usr/share/acpi_call
+ doins examples/*.sh
+ fi
+}
diff --git a/sys-power/acpi_call/metadata.xml b/sys-power/acpi_call/metadata.xml
new file mode 100644
index 000000000000..d24fb7b2859b
--- /dev/null
+++ b/sys-power/acpi_call/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>conikost@gentoo.org</email>
+ <name>Conrad Kostecki</name>
+ </maintainer>
+ <upstream>
+ <bugs-to>https://github.com/nix-community/acpi_call/issues</bugs-to>
+ <remote-id type="github">nix-community/acpi_call</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/acpid/Manifest b/sys-power/acpid/Manifest
new file mode 100644
index 000000000000..7fde26cc1593
--- /dev/null
+++ b/sys-power/acpid/Manifest
@@ -0,0 +1 @@
+DIST acpid-2.0.34.tar.xz 159924 BLAKE2B 1379978f8c5816febcde2d3bb641f8a51736ae0caed97a45caa990576d314608a455307df11f6abafa2ef8bbaa47554f581605aa9c1af150ee64b9eb684fee15 SHA512 2bf92295b55bb44fe83074b3e0c1ae639f63edaeea84b2184ae95b38852be40f380d5413110b8c0fcb2efc2ec01bf4764e1dcb97022fc724bebbfc35c0b63c81
diff --git a/sys-power/acpid/acpid-2.0.34-r1.ebuild b/sys-power/acpid/acpid-2.0.34-r1.ebuild
new file mode 100644
index 000000000000..86cc15f7cf1e
--- /dev/null
+++ b/sys-power/acpid/acpid-2.0.34-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit linux-info systemd
+
+DESCRIPTION="Daemon for Advanced Configuration and Power Interface"
+HOMEPAGE="https://sourceforge.net/projects/acpid2/"
+SRC_URI="https://downloads.sourceforge.net/${PN}2/${P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~arm arm64 ~loong ~riscv x86"
+IUSE="selinux"
+
+RDEPEND="selinux? ( sec-policy/selinux-apm )"
+DEPEND=">=sys-kernel/linux-headers-3"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.0.34-lfs.patch
+)
+
+pkg_pretend() {
+ local CONFIG_CHECK="~INPUT_EVDEV"
+ local WARNING_INPUT_EVDEV="CONFIG_INPUT_EVDEV is required for ACPI button event support."
+ [[ ${MERGE_TYPE} != buildonly ]] && check_extra_config
+}
+
+pkg_setup() { :; }
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ newdoc kacpimon/README README.kacpimon
+ dodoc -r samples
+ rm -f "${D}"/usr/share/doc/${PF}/COPYING || die
+
+ exeinto /etc/acpi
+ newexe "${FILESDIR}"/${PN}-1.0.6-default.sh default.sh
+ exeinto /etc/acpi/actions
+ newexe samples/powerbtn/powerbtn.sh powerbtn.sh
+ insinto /etc/acpi/events
+ newins "${FILESDIR}"/${PN}-1.0.4-default default
+
+ newinitd "${FILESDIR}"/${PN}-2.0.26-init.d ${PN}
+ newconfd "${FILESDIR}"/${PN}-2.0.16-conf.d ${PN}
+
+ systemd_dounit "${FILESDIR}"/${PN}.{service,socket}
+}
+
+pkg_postinst() {
+ if [[ -z ${REPLACING_VERSIONS} ]]; then
+ elog
+ elog "You may wish to read the Gentoo Linux Power Management Guide,"
+ elog "which can be found online at:"
+ elog "https://wiki.gentoo.org/wiki/Power_management/Guide"
+ elog
+ fi
+}
diff --git a/sys-power/acpid/files/acpid-1.0.4-default b/sys-power/acpid/files/acpid-1.0.4-default
new file mode 100644
index 000000000000..a07c1827f4e9
--- /dev/null
+++ b/sys-power/acpid/files/acpid-1.0.4-default
@@ -0,0 +1,19 @@
+# /etc/acpi/events/default
+# This is the ACPID default configuration, it takes all
+# events and passes them to /etc/acpi/default.sh for further
+# processing.
+
+# event keeps a regular expression matching the event. To get
+# power events only, just use something like "event=button[ /]power.*"
+# to catch it.
+# action keeps the command to be executed after an event occurs
+# In case of the power event above, your entry may look this way:
+#event=button[ /]power.*
+#action=/sbin/init 0
+
+# Optionally you can specify the placeholder %e. It will pass
+# through the whole kernel event message to the program you've
+# specified.
+
+event=.*
+action=/etc/acpi/default.sh %e
diff --git a/sys-power/acpid/files/acpid-1.0.6-default.sh b/sys-power/acpid/files/acpid-1.0.6-default.sh
new file mode 100644
index 000000000000..8be6f3e1a9f4
--- /dev/null
+++ b/sys-power/acpid/files/acpid-1.0.6-default.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+# /etc/acpi/default.sh
+# Default acpi script that takes an entry for all actions
+
+set $*
+
+group=${1%%/*}
+action=${1#*/}
+device=$2
+id=$3
+value=$4
+
+log_unhandled() {
+ logger "ACPI event unhandled: $*"
+}
+
+case "$group" in
+ button)
+ case "$action" in
+ power)
+ /etc/acpi/actions/powerbtn.sh
+ ;;
+
+ # if your laptop doesnt turn on/off the display via hardware
+ # switch and instead just generates an acpi event, you can force
+ # X to turn off the display via dpms. note you will have to run
+ # 'xhost +local:0' so root can access the X DISPLAY.
+ #lid)
+ # xset dpms force off
+ # ;;
+
+ *) log_unhandled $* ;;
+ esac
+ ;;
+
+ ac_adapter)
+ case "$value" in
+ # Add code here to handle when the system is unplugged
+ # (maybe change cpu scaling to powersave mode). For
+ # multicore systems, make sure you set powersave mode
+ # for each core!
+ #*0)
+ # cpufreq-set -g powersave
+ # ;;
+
+ # Add code here to handle when the system is plugged in
+ # (maybe change cpu scaling to performance mode). For
+ # multicore systems, make sure you set performance mode
+ # for each core!
+ #*1)
+ # cpufreq-set -g performance
+ # ;;
+
+ *) log_unhandled $* ;;
+ esac
+ ;;
+
+ *) log_unhandled $* ;;
+esac
diff --git a/sys-power/acpid/files/acpid-2.0.16-conf.d b/sys-power/acpid/files/acpid-2.0.16-conf.d
new file mode 100644
index 000000000000..9aadb4cd814a
--- /dev/null
+++ b/sys-power/acpid/files/acpid-2.0.16-conf.d
@@ -0,0 +1,6 @@
+# /etc/conf.d/acpid: config file for /etc/init.d/acpid
+
+# Options to pass to the acpid daemon.
+# See the acpid(8) man page for more info.
+
+ACPID_ARGS=""
diff --git a/sys-power/acpid/files/acpid-2.0.26-init.d b/sys-power/acpid/files/acpid-2.0.26-init.d
new file mode 100644
index 000000000000..f8076d43b0ab
--- /dev/null
+++ b/sys-power/acpid/files/acpid-2.0.26-init.d
@@ -0,0 +1,19 @@
+#!/sbin/openrc-run
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+extra_started_commands="reload"
+command="/usr/sbin/acpid"
+command_args="${ACPID_ARGS}"
+description="Daemon for Advanced Configuration and Power Interface"
+
+depend() {
+ need localmount
+ use logger
+}
+
+reload() {
+ ebegin "Reloading acpid configuration"
+ start-stop-daemon --exec $command --signal HUP
+ eend $?
+}
diff --git a/sys-power/acpid/files/acpid-2.0.34-lfs.patch b/sys-power/acpid/files/acpid-2.0.34-lfs.patch
new file mode 100644
index 000000000000..0abca60af422
--- /dev/null
+++ b/sys-power/acpid/files/acpid-2.0.34-lfs.patch
@@ -0,0 +1,19 @@
+Since version 1.2.4 musl no longer enables legacy LFS interfaces as part
+of _GNU_SOURCE, and will remove them altogether in a future release [1].
+Just switch to the standard interfaces.
+
+[1] https://musl.libc.org/releases.html
+
+--- a/sock.c
++++ b/sock.c
+@@ -54,8 +54,8 @@
+ static int
+ isfdtype(int fd, int fdtype)
+ {
+- struct stat64 st;
+- if (fstat64(fd, &st) != 0)
++ struct stat st;
++ if (fstat(fd, &st) != 0)
+ return -1;
+ return ((st.st_mode & S_IFMT) == (mode_t)fdtype);
+ }
diff --git a/sys-power/acpid/files/acpid.service b/sys-power/acpid/files/acpid.service
new file mode 100644
index 000000000000..e4ddacdbead7
--- /dev/null
+++ b/sys-power/acpid/files/acpid.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=ACPI event daemon
+Requires=acpid.socket
+
+[Service]
+ExecStart=/usr/sbin/acpid -f
+
+[Install]
+WantedBy=multi-user.target
+Also=acpid.socket
diff --git a/sys-power/acpid/files/acpid.socket b/sys-power/acpid/files/acpid.socket
new file mode 100644
index 000000000000..1e5365bf1ecb
--- /dev/null
+++ b/sys-power/acpid/files/acpid.socket
@@ -0,0 +1,8 @@
+[Unit]
+Description=ACPID Listen Socket
+
+[Socket]
+ListenStream=/run/acpid.socket
+
+[Install]
+WantedBy=sockets.target
diff --git a/sys-power/acpid/metadata.xml b/sys-power/acpid/metadata.xml
new file mode 100644
index 000000000000..623b20efe336
--- /dev/null
+++ b/sys-power/acpid/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+ <upstream>
+ <remote-id type="sourceforge">acpid2</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/acpilight/Manifest b/sys-power/acpilight/Manifest
new file mode 100644
index 000000000000..7a09eba6189d
--- /dev/null
+++ b/sys-power/acpilight/Manifest
@@ -0,0 +1 @@
+DIST acpilight-v1.2.tar.bz2 16371 BLAKE2B 4727ba2ed160b0068d46c8cd1fb1ca4701ebd9e05ce5e8f32b6098fbe8fc003294ed41321b61a804c8b0974b33989cf00de19e10cd5a4283751986d55bc0cd98 SHA512 e129de51911df83224ab99c0e7c9cda8058ee748e11473595add0e22367b21716fe62e14461300ca812c4be3485138b7f0f4823d848e3a0386680522621ec121
diff --git a/sys-power/acpilight/acpilight-1.2-r5.ebuild b/sys-power/acpilight/acpilight-1.2-r5.ebuild
new file mode 100644
index 000000000000..ba3ec868cf6f
--- /dev/null
+++ b/sys-power/acpilight/acpilight-1.2-r5.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit python-single-r1 udev
+
+MY_P="${PN}-v${PV}"
+
+DESCRIPTION="Replacement for xbacklight that uses the ACPI interface to set brightness"
+HOMEPAGE="https://gitlab.com/wavexx/acpilight/"
+SRC_URI="https://gitlab.com/wavexx/acpilight/-/archive/v${PV}/${MY_P}.tar.bz2"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="amd64 x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ !dev-libs/light
+ !x11-apps/xbacklight
+ acct-group/video
+ virtual/udev
+"
+
+DOCS=( README.rst NEWS.rst )
+
+PATCHES=( "${FILESDIR}/acpilight-1.2-fix-log10-of-zero.patch" )
+
+# Disable Makefile that installs by default
+src_compile() { :; }
+
+src_install() {
+ python_doscript xbacklight
+ udev_dorules "${S}"/90-backlight.rules
+ doman xbacklight.1
+ einstalldocs
+ newinitd "${FILESDIR}"/acpilight.initd acpilight
+ newconfd "${FILESDIR}"/acpilight.confd acpilight
+}
+
+pkg_postinst() {
+ udev_reload
+ elog "To use the xbacklight binary as a regular user, you must be a part of the video group"
+ einfo
+ elog "If this utility does not find any backlights to manipulate,"
+ elog "verify you have kernel support on the device and display driver enabled."
+ einfo
+ elog "To take advantage of the OpenRC init script, and automate the process of"
+ elog "saving and restoring the brightness level you should add acpilight"
+ elog "to the boot runlevel. You can do this as root like so:"
+ elog "# rc-update add acpilight boot"
+ einfo
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/sys-power/acpilight/files/acpilight-1.2-fix-log10-of-zero.patch b/sys-power/acpilight/files/acpilight-1.2-fix-log10-of-zero.patch
new file mode 100644
index 000000000000..ffc061910f01
--- /dev/null
+++ b/sys-power/acpilight/files/acpilight-1.2-fix-log10-of-zero.patch
@@ -0,0 +1,26 @@
+From fdf8a4c57c3997f95ea0571b627f3c5a31dfe7b1 Mon Sep 17 00:00:00 2001
+From: Mart <mart@martlubbers.net>
+Date: Thu, 1 Oct 2020 09:55:08 +0000
+Subject: [PATCH] set the perceived to zero when the screen is off
+
+This fixes the issue that you cannot take the 10-log of zero
+---
+ xbacklight | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/xbacklight b/xbacklight
+index 2cb0fa8..f1c2187 100755
+--- a/xbacklight
++++ b/xbacklight
+@@ -82,6 +82,8 @@ class LogController(RawController):
+
+ @property
+ def brightness(self):
++ if super().brightness == 0:
++ return 0
+ return log10(super().brightness)/log10(super().max_brightness)*self.max_brightness
+
+ @brightness.setter
+--
+GitLab
+
diff --git a/sys-power/acpilight/files/acpilight.confd b/sys-power/acpilight/files/acpilight.confd
new file mode 100644
index 000000000000..ecb74eb7209f
--- /dev/null
+++ b/sys-power/acpilight/files/acpilight.confd
@@ -0,0 +1,13 @@
+# RESTORE_ON_START:
+# Restore brightness level when acpilight starts
+# no - Do not restore state
+# yes - Restore state
+
+RESTORE_ON_START="yes"
+
+# SAVE_ON_STOP:
+# Save brightness level when acpilight stops
+# no - Do not save state
+# yes - Save state
+
+SAVE_ON_STOP="yes"
diff --git a/sys-power/acpilight/files/acpilight.initd b/sys-power/acpilight/files/acpilight.initd
new file mode 100644
index 000000000000..780828246712
--- /dev/null
+++ b/sys-power/acpilight/files/acpilight.initd
@@ -0,0 +1,50 @@
+#!/sbin/openrc-run
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+state_dir=/var/lib/acpilight
+
+extra_commands="save restore"
+
+depend() {
+ need localmount
+ after bootmisc modules isapnp coldplug hotplug
+}
+
+restore() {
+ ebegin "Restoring brightness level"
+ if [ ! -r "${state_dir}/state" ] ; then
+ ewarn "No brightness level in ${state_dir}/state"
+ eend 0
+ return 0
+ fi
+ xbacklight "$(cat "${state_dir}/state")"
+ ewend $? "Could not restore brightness. The state file ${state_dir}/state is invalid or the system cannot apply the value."
+}
+
+save() {
+ local newValue
+ ebegin "Saving brightness level"
+ # Save the value here so an error won't record an empty/invalid value
+ newValue=$(xbacklight -get) && \
+ mkdir -p "${state_dir}" && \
+ echo "${newValue}" > "${state_dir}/state"
+ if [ $? -gt 0 ]; then
+ ewarn "Could not save brightness."
+ ewarn "The state file ${state_dir}/state cannot be written to or the system cannot read the brightness value."
+ fi
+ # Don't fail on error
+ eend 0
+}
+
+start() {
+ if [ "${RESTORE_ON_START}" = "yes" ]; then
+ restore
+ fi
+}
+
+stop() {
+ if [ "${SAVE_ON_STOP}" = "yes" ]; then
+ save
+ fi
+}
diff --git a/sys-power/acpilight/metadata.xml b/sys-power/acpilight/metadata.xml
new file mode 100644
index 000000000000..d8e794487e77
--- /dev/null
+++ b/sys-power/acpilight/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>brahmajit.xyz@gmail.com</email>
+ <name>Brahmajit Das</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="gitlab">wavexx/acpilight</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/acpitool/Manifest b/sys-power/acpitool/Manifest
new file mode 100644
index 000000000000..1a923081d6ad
--- /dev/null
+++ b/sys-power/acpitool/Manifest
@@ -0,0 +1 @@
+DIST acpitool-0.5.1.tar.bz2 109584 BLAKE2B 6c37495dbb9075fd08a594839aafcda5ac45233eb8ff24954a6f55dc4d74644fb2aceb9ba7caa4a194614c7d2f007df142d9358a11002716e3cb2df172d90823 SHA512 3e8684525b3dbe165b30507943beb975881a374ac3171fcfdf88098721fa3f751bfc161c3ac84180df1ae455673e0c0bc24fd06f0786911f15502effeeaab86b
diff --git a/sys-power/acpitool/acpitool-0.5.1-r2.ebuild b/sys-power/acpitool/acpitool-0.5.1-r2.ebuild
new file mode 100644
index 000000000000..e88c1dc56f8e
--- /dev/null
+++ b/sys-power/acpitool/acpitool-0.5.1-r2.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="A replacement for the APM tool"
+HOMEPAGE="https://packages.debian.org/sid/acpitool"
+SRC_URI="mirror://gentoo/${P}.tar.bz2"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-ac_adapter.patch
+ "${FILESDIR}"/${P}-battery.patch
+ "${FILESDIR}"/${P}-kernel3.patch
+ "${FILESDIR}"/${P}-wakeup.patch
+)
diff --git a/sys-power/acpitool/files/acpitool-0.5.1-ac_adapter.patch b/sys-power/acpitool/files/acpitool-0.5.1-ac_adapter.patch
new file mode 100644
index 000000000000..fb70e86d2b81
--- /dev/null
+++ b/sys-power/acpitool/files/acpitool-0.5.1-ac_adapter.patch
@@ -0,0 +1,73 @@
+Author: Michael Meskes <meskes@debian.org>
+Description: Fix reading of ac_adapter information.
+
+--- a/src/ac_adapter.cpp
++++ b/src/ac_adapter.cpp
+@@ -149,7 +149,7 @@
+ int Do_AC_Info_Sys()
+ {
+ ifstream file_in;
+- char filename[2][65], str[100], temp[100];
++ char filename[2][65], str[100], temp[100], attr[100];
+ int ac_count = 0, start = 0, findex = 0;
+ DIR *ac_dir;
+ char *name, *dirname;
+@@ -206,31 +206,40 @@
+
+ if(ac_count>0)
+ {
+- for(int i=0; i<ac_count; i++) /* I don't expect to find > 1, but you never know */
++ for(int i=0, t=0; i<ac_count; i++) /* I don't expect to find > 1, but you never know */
+ {
+ FILE *power_fp = fopen(filename[i], "r");
+ if(power_fp)
+ {
+- for(int t=0; t<5; t++)
+- fgets(str, 100, power_fp); /* just skip the first 5 lines */
+-
+- memset(str, '\0', 100);
+- fgets(str, 100, power_fp);
++ // see linux-2.6/drivers/power/power_supply_sysfs.c
++ // there can be different number of lines, so read up to 40 lines
++ for(; t<40; t++)
++ {
++ memset(str, '\0', 100);
++ fgets(str, 100, power_fp);
+
+- if (strlen(str)!=0)
+- {
+- memset(temp, '\0', 100);
+- sscanf(str, "%*[^=] %*c %s %[^\n]",temp);
++ if (strlen(str)!=0)
++ {
++ memset(temp, '\0', 100);
++ memset(attr, '\0', 100);
++ sscanf(str, "%[^=]s %*s %[^\n]", attr);
++ sscanf(str, "%*[^=] %*c %s %[^\n]",temp);
+
+- /* keep this for debugging */
+- /* printf(" from Do_AC_SYS: temp = %s \n", temp);*/
+-
+- if(strncmp(temp,"1",1)==0)
+- printf(" AC adapter : online \n");
+- else
+- printf(" AC adapter : off-line \n");
++ /* keep this for debugging */
++ /* printf(" from Do_AC_SYS: temp = %s \n", temp);*/
++
++ if (strcmp(attr, "POWER_SUPPLY_ONLINE") == 0)
++ {
++ if(strncmp(temp,"1",1)==0)
++ printf(" AC adapter : online \n");
++ else
++ printf(" AC adapter : off-line \n");
++
++ break;
++ }
++ }
+ }
+- else
++ if (t == 40)
+ printf(" AC adapter : <info not available> \n");
+ }
+ else
diff --git a/sys-power/acpitool/files/acpitool-0.5.1-battery.patch b/sys-power/acpitool/files/acpitool-0.5.1-battery.patch
new file mode 100644
index 000000000000..c4a9a5e6a65d
--- /dev/null
+++ b/sys-power/acpitool/files/acpitool-0.5.1-battery.patch
@@ -0,0 +1,484 @@
+Author: Evgeni Golov <evgeni@debian.org>, Michael Meskes <meskes@debian.org>
+Description: Fix reading of battery information.
+
+--- a/src/acpitool.h
++++ b/src/acpitool.h
+@@ -39,6 +39,9 @@
+ char Serial[13];
+ char Bat_Type[13];
+ char Voltage_Now[13];
++ char Charge_Now[13];
++ char Charge_Full[13];
++ char Charge_Full_Design[13];
+ };
+
+
+--- a/src/battery.cpp
++++ b/src/battery.cpp
+@@ -107,6 +107,9 @@
+ memset(Batt_Info[i]->Serial, '\0', 13);
+ memset(Batt_Info[i]->Bat_Type, '\0', 13);
+ memset(Batt_Info[i]->Voltage_Now, '\0', 13);
++ memset(Batt_Info[i]->Charge_Now, '\0', 13);
++ memset(Batt_Info[i]->Charge_Full, '\0', 13);
++ memset(Batt_Info[i]->Charge_Full_Design, '\0', 13);
+
+ // initialize all struct members to blanks --> avoid rubbish in output //
+
+@@ -139,7 +142,12 @@
+ case 1 :
+ {
+ Present_Batteries++;
+- Remaining_Percentage = float(atoi(Batt_Info[i]->Remaining_Cap)) / float(atoi(Batt_Info[i]->LastFull_Cap)) * 100.0;
++
++ if (strcmp(Batt_Info[i]->Charge_Now,"")!=0 &&
++ strcmp(Batt_Info[i]->Charge_Now,"unknown")!=0)
++ Remaining_Percentage = float(atoi(Batt_Info[i]->Charge_Now)) / float(atoi(Batt_Info[i]->Charge_Full)) * 100.0;
++ else
++ Remaining_Percentage = float(atoi(Batt_Info[i]->Remaining_Cap)) / float(atoi(Batt_Info[i]->LastFull_Cap)) * 100.0;
+
+ /* from Alan Pope : some broken Dell batteries report a remaining capacity bigger
+ than their last full capacity or their design capacity. This led acpitool to report
+@@ -153,19 +161,24 @@
+ else
+ Precision = 4;
+
+- if( strncmp(Batt_Info[i]->Charging_State,"char",4)==0 )
++ if(strncasecmp(Batt_Info[i]->Charging_State,"char",4)==0)
+ {
+ Is_Charging = 1;
+ }
+ else
+ {
+- if(strncmp(Batt_Info[i]->Charging_State,"disch",5)==0) Is_Discharging = 1;
++ if(strncasecmp(Batt_Info[i]->Charging_State,"disch",5)==0) Is_Discharging = 1;
+ }
+
+ if(Show_Time) // calculate remaining or charging time only if present battery rate != 0 //
+ {
+- if(Is_Charging)
+- Remaining_Time = (float(atoi(Batt_Info[i]->LastFull_Cap)) - float(atoi(Batt_Info[i]->Remaining_Cap))) / float(atoi(Batt_Info[i]->Present_Rate));
++ if(Is_Charging) {
++ if (strcmp(Batt_Info[i]->Charge_Now,"")!=0 &&
++ strcmp(Batt_Info[i]->Charge_Now,"unknown")!=0)
++ Remaining_Time = (float(atoi(Batt_Info[i]->Charge_Full)) - float(atoi(Batt_Info[i]->Charge_Now))) / float(atoi(Batt_Info[i]->Present_Rate));
++ else
++ Remaining_Time = (float(atoi(Batt_Info[i]->LastFull_Cap)) - float(atoi(Batt_Info[i]->Remaining_Cap))) / float(atoi(Batt_Info[i]->Present_Rate));
++ }
+ else
+ Remaining_Time = float(atoi(Batt_Info[i]->Remaining_Cap)) / float(atoi(Batt_Info[i]->Present_Rate));
+ // this represents hours //
+@@ -180,9 +193,11 @@
+ Minutes = Time_In_Seconds / 60;
+ Time_In_Seconds = Time_In_Seconds - (Minutes * 60);
+ }
+-
++
+ if(atoi(Batt_Info[i]->Design_Cap) > 0)
+ Battery_Left_Percent = float(atoi(Batt_Info[i]->LastFull_Cap)) / float(atoi(Batt_Info[i]->Design_Cap)) * 100.0;
++ else if(atoi(Batt_Info[i]->Charge_Full_Design) > 0)
++ Battery_Left_Percent = float(atoi(Batt_Info[i]->Charge_Full)) / float(atoi(Batt_Info[i]->Charge_Full_Design)) * 100.0;
+ else
+ Battery_Left_Percent = -1.0;
+
+@@ -207,8 +222,15 @@
+ <<setfill('0')<<setw(2)<<Time_In_Seconds;
+ cout<<endl;
+
+- cout<<" Design capacity : "<<Batt_Info[i]->Design_Cap<<endl;
+- cout<<" Last full capacity : "<<Batt_Info[i]->LastFull_Cap;
++ if(atoi(Batt_Info[i]->Design_Cap) > 0)
++ cout<<" Design capacity : "<<Batt_Info[i]->Design_Cap<<endl;
++ else if(atoi(Batt_Info[i]->Charge_Full_Design) > 0)
++ cout<<" Design capacity : "<<Batt_Info[i]->Charge_Full_Design<<endl;
++
++ if(atoi(Batt_Info[i]->LastFull_Cap) > 0)
++ cout<<" Last full capacity : "<<Batt_Info[i]->LastFull_Cap;
++ else if(atoi(Batt_Info[i]->Charge_Full) > 0)
++ cout<<" Last full capacity : "<<Batt_Info[i]->Charge_Full;
+
+ if(Battery_Left_Percent<100.0)
+ {
+@@ -327,7 +349,7 @@
+
+
+
+-int Get_Battery_Info_from_Proc(const int bat_nr, Battery_Info *bat_info, int verbose)
++int Get_Battery_Info_from_Proc(const int bat_nr, Battery_Info *batt_info, int verbose)
+ {
+ ifstream file_in;
+ char filename[4][65], str[100], temp[100];
+@@ -378,7 +400,7 @@
+ {
+ if(!verbose)
+ {
+- bat_info->Battery_Present = 2; // 2 represents error value //
++ batt_info->Battery_Present = 2; // 2 represents error value //
+ return 0;
+ }
+ else
+@@ -422,24 +444,24 @@
+ file_in.getline(str, 100);
+ strncpy(temp, str+25, 4);
+ if(strncmp(temp,"yes",3)==0)
+- bat_info->Battery_Present = 1; //yes, we have a battery //
++ batt_info->Battery_Present = 1; //yes, we have a battery //
+ else
+ {
+- bat_info->Battery_Present = 0;
++ batt_info->Battery_Present = 0;
+ return 0; //bail out if battery is not present //
+ }
+
+ // then get the design capacity //
+ file_in.getline(str, 100);
+- strncpy(bat_info->Design_Cap, str+25, 9);
++ strncpy(batt_info->Design_Cap, str+25, 9);
+
+ // then get the last full capacity //
+ file_in.getline(str, 100);
+- strncpy(bat_info->LastFull_Cap, str+25, 9);
++ strncpy(batt_info->LastFull_Cap, str+25, 9);
+
+- if (strncmp(bat_info->LastFull_Cap,"unknown",7)==0)
++ if (strncmp(batt_info->LastFull_Cap,"unknown",7)==0)
+ {
+- bat_info->Battery_Present = 0;
++ batt_info->Battery_Present = 0;
+ return 0; //bail out if battery is not present //
+ }
+ /* some Dell laptops seem to report a 2nd battery as being present, while it is NOT, but then report the
+@@ -449,21 +471,21 @@
+
+ // then get the technology //
+ file_in.getline(str, 100);
+- strncpy(bat_info->Technology, str+25, 12);
++ strncpy(batt_info->Technology, str+25, 12);
+
+ // then get the model number //
+ for(int t=0; t<5; t++)
+ file_in.getline(str, 100); //skip 5 lines //
+ file_in.getline(str, 100);
+- strncpy(bat_info->Model, str+25, 12);
++ strncpy(batt_info->Model, str+25, 12);
+
+ // then get the serial number //
+ file_in.getline(str, 100);
+- strncpy(bat_info->Serial, str+25, 12);
++ strncpy(batt_info->Serial, str+25, 12);
+
+ // then get the battery type //
+ file_in.getline(str, 100);
+- strncpy(bat_info->Bat_Type, str+25, 12);
++ strncpy(batt_info->Bat_Type, str+25, 12);
+
+ file_in.close();
+
+@@ -480,17 +502,17 @@
+ // then get the charging state //
+ file_in.getline(str, 100); file_in.getline(str, 100); // skip first 2 lines //
+ file_in.getline(str, 100);
+- strncpy(bat_info->Charging_State, str+25, 12);
+- if (strncmp(bat_info->Charging_State,"unknown",7)==0) strncpy(bat_info->Charging_State, "charged",7);
++ strncpy(batt_info->Charging_State, str+25, 12);
++ if (strncmp(batt_info->Charging_State,"unknown",7)==0) strncpy(batt_info->Charging_State, "charged",7);
+ /* on older kernels, like 2.4.22, the charging state is reported as "unknown", whereas in recent kernels
+ this was changed to "charged". */
+
+ // then get the charging rate //
+ file_in.getline(str, 100);
+- strncpy(bat_info->Present_Rate, str+25, 9);
+- if (strncmp(bat_info->Charging_State,"charged",7)==0)
++ strncpy(batt_info->Present_Rate, str+25, 9);
++ if (strncmp(batt_info->Charging_State,"charged",7)==0)
+ {
+- if (strncmp(bat_info->Present_Rate, "unknown",7)==0) strncpy(bat_info->Present_Rate, "0 ",7);
++ if (strncmp(batt_info->Present_Rate, "unknown",7)==0) strncpy(batt_info->Present_Rate, "0 ",7);
+ }
+ /* some batteries report the present rate as "unknown", even when they report the battery as being charged.
+ If the battery is charged, the rate should be 0 */
+@@ -498,12 +520,12 @@
+
+ // then get the remaining capacity //
+ file_in.getline(str, 100);
+- strncpy(bat_info->Remaining_Cap, str+25, 9);
++ strncpy(batt_info->Remaining_Cap, str+25, 9);
+
+ file_in.close();
+ }
+ else // battery dir is readable but empty : only . and .. at most //
+- bat_info->Battery_Present = 3;
++ batt_info->Battery_Present = 3;
+
+ return 0;
+ }
+@@ -513,8 +535,8 @@
+ int Get_Battery_Info_from_Sys(const int bat_nr, Battery_Info *batt_info, int verbose)
+ {
+ ifstream file_in;
+- char filename[6][65], str[100], temp[100];
+- int bat_count = 0, start = 0, findex = 0;
++ char filename[6][65], str[100], temp[100], attr[100];
++ int bat_count = 0, start = 0, findex = 0, value = 0;
+ DIR *battery_dir;
+ char *name, *dirname;
+
+@@ -613,165 +635,104 @@
+ return -1;
+ }
+
+- memset(str, '\0', 100);
+- for(int t=0; t<5; t++)
+- fgets(str, 100, power_fp); /* skip first 5 lines */
+-
+- /* get battery status (full, charging, ...) */
+- memset(str, '\0', 100);
+- fgets(str, 100, power_fp);
+- if (strlen(str)>0)
+- {
+- memset(temp, '\0', 100);
+- sscanf(str, "%*[^=] %*c %s %[^\n]",temp);
+- strncpy(batt_info->Charging_State, temp, 12);
+- }
+-
+-
+- /* get battery presence (0 or 1) */
+- memset(str, '\0', 100);
+- fgets(str, 100, power_fp);
+- if (strlen(str)>0)
+- {
+- memset(temp, '\0', 100);
+- strncpy(temp, str+21, 1);
+- if(strncmp(temp,"1",1)==0)
+- batt_info->Battery_Present = 1; /* yes, we have a battery */
+- else
+- {
+- batt_info->Battery_Present = 0;
+- printf(" Battery is not present, bailing out. \n");
+- return 0; /* bail out if battery is not present */
+- }
+- }
+-
+-
+- /* get technology */
+- memset(str, '\0', 100);
+- fgets(str, 100, power_fp);
+- if (strlen(str)>0)
+- {
+- memset(temp, '\0', 100);
+- sscanf(str, "%*[^=] %*c %s %[^\n]",temp);
+- strncpy(batt_info->Technology, temp, 12);
+- }
+- else
+- strncpy(batt_info->Technology, "unknown", 7);
+-
+-
+-
+- //printf(" \n bat_info_tech = %s \n\n ", batt_info->Technology);
+-
+-
+-
+- fgets(str, 100, power_fp); /* skip 1 line */
+-
+-
+- /* get voltage_now */
+- memset(str, '\0', 100);
+- fgets(str, 100, power_fp);
+- if (strlen(str)>0)
+- {
+- memset(temp, '\0', 100);
+- sscanf(str, "%*[^=] %*c %s %[^\n]",temp);
+- strncpy(batt_info->Voltage_Now, temp, 12);
+- }
+- else
+- strncpy(batt_info->Voltage_Now, "unknown", 7);
+-
+-
+- /* get current_now, which I believe is the charging rate ? */
+- memset(str, '\0', 100);
+- fgets(str, 100, power_fp);
+- if (strlen(str)>0)
+- {
+- memset(temp, '\0', 100);
+- sscanf(str, "%*[^=] %*c %s %[^\n]",temp);
+- strncpy(batt_info->Present_Rate, temp, 12);
+- }
+- else
+- strncpy(batt_info->Present_Rate, "unknown", 7);
+-
+-
+- /* get charge_full_design */
+- memset(str, '\0', 100);
+- fgets(str, 100, power_fp);
+- if (strlen(str)>0)
+- {
+- memset(temp, '\0', 100);
+- sscanf(str, "%*[^=] %*c %s %[^\n]",temp);
+- strncpy(batt_info->Design_Cap, temp, 12);
+- }
+- else
+- strncpy(batt_info->Design_Cap, "unknown", 7);
+-
+-
+- //printf(" \n bat_info_design_cap = %s \n ", batt_info->Design_Cap);
+-
+-
+- /* get charge_full, which is the last full capacity I guess ? */
+- memset(str, '\0', 100);
+- fgets(str, 100, power_fp);
+- if (strlen(str)>0)
+- {
+- memset(temp, '\0', 100);
+- sscanf(str, "%*[^=] %*c %s %[^\n]",temp);
+- strncpy(batt_info->LastFull_Cap, temp, 12);
+- }
+- else
+- strncpy(batt_info->LastFull_Cap, "unknown", 7);
+-
+-
+- //printf(" \n bat_info_lastfull_cap = %s \n\n ", batt_info->LastFull_Cap);
+-
+-
+- /* get charge_now */
+- memset(str, '\0', 100);
+- fgets(str, 100, power_fp);
+- if (strlen(str)>0)
+- {
+- memset(temp, '\0', 100);
+- sscanf(str, "%*[^=] %*c %s %[^\n]",temp);
+- strncpy(batt_info->Remaining_Cap, temp, 12);
+- }
+- else
+- strncpy(batt_info->Remaining_Cap, "unknown", 7);
+-
+- //printf(" \n bat_info_remaining_cap = %s \n\n ", batt_info->Remaining_Cap);
+-
+-
+- /* get model_name */
+- memset(str, '\0', 100);
+- fgets(str, 100, power_fp);
+- if (strlen(str)>0)
+- {
+- memset(temp, '\0', 100);
+- strncpy(temp, str+24, 12); // use strncpy here because sscanf chokes on blanks in this one ? //
+-
+- memset(str, '\0', 100);
+- sscanf(temp, "%[^\n]", str); // strip trailing \n, fucks up output //
+-
+- strncpy(batt_info->Model, str, 12);
++ strncpy(batt_info->Technology, "unknown", 7);
++ strncpy(batt_info->Voltage_Now, "unknown", 7);
++ strncpy(batt_info->Charge_Now, "unknown", 7);
++ strncpy(batt_info->Charge_Full, "unknown", 7);
++ strncpy(batt_info->Charge_Full_Design, "unknown", 7);
++ strncpy(batt_info->Present_Rate, "unknown", 7);
++ strncpy(batt_info->Design_Cap, "unknown", 7);
++ strncpy(batt_info->LastFull_Cap, "unknown", 7);
++ strncpy(batt_info->Remaining_Cap, "unknown", 7);
++ strncpy(batt_info->Model, "unknown", 7);
++ strncpy(batt_info->Serial, "unknown", 7);
++
++ // see linux-2.6/drivers/power/power_supply_sysfs.c
++ // there can be different number of lines, so read up to 40 lines
++ for(int t=0; t<40; t++) {
++ memset(str, '\0', 100);
++ memset(attr, '\0', 100);
++ memset(temp, '\0', 100);
++ fgets(str, 100, power_fp);
++ sscanf(str, "%[^=]s %*s %*[^\n]", attr);
++ sscanf(str, "%*[^=] %*c %s %*[^\n]",temp);
++ if (strcmp(attr,"POWER_SUPPLY_STATUS")==0) {
++ strncpy(batt_info->Charging_State, temp, 12);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_TYPE")==0) {
++ strncpy(batt_info->Bat_Type, temp, 12);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_TECHNOLOGY")==0) {
++ strncpy(batt_info->Technology, temp, 12);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_VOLTAGE_NOW")==0) {
++ value = atoi(temp) / 1000;
++ snprintf(temp, sizeof(temp), "%i mV", value);
++ strncpy(batt_info->Voltage_Now, temp, 12);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_CURRENT_NOW")==0 ||
++ strcmp(attr,"POWER_SUPPLY_POWER_NOW")==0) {
++ value = atoi(temp) / 1000;
++ snprintf(temp, sizeof(temp), "%i", value);
++ strncpy(batt_info->Present_Rate, temp, 9);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_CHARGE_NOW")==0) {
++ value = atoi(temp) / 1000;
++ snprintf(temp, sizeof(temp), "%i mA", value);
++ strncpy(batt_info->Charge_Now, temp, 12);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_CHARGE_FULL_DESIGN")==0) {
++ value = atoi(temp) / 1000;
++ snprintf(temp, sizeof(temp), "%i mA", value);
++ strncpy(batt_info->Charge_Full_Design, temp, 12);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_CHARGE_FULL")==0) {
++ value = atoi(temp) / 1000;
++ snprintf(temp, sizeof(temp), "%i mA", value);
++ strncpy(batt_info->Charge_Full, temp, 12);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_ENERGY_FULL_DESIGN")==0) {
++ value = atoi(temp) / 1000;
++ snprintf(temp, sizeof(temp), "%i mWh", value);
++ strncpy(batt_info->Design_Cap, temp, 9);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_ENERGY_FULL")==0) {
++ value = atoi(temp) / 1000;
++ snprintf(temp, sizeof(temp), "%i mWh", value);
++ strncpy(batt_info->LastFull_Cap, temp, 9);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_ENERGY_NOW")==0) {
++ value = atoi(temp) / 1000;
++ snprintf(temp, sizeof(temp), "%i mWh", value);
++ strncpy(batt_info->Remaining_Cap, temp, 9);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_MODEL_NAME")==0) {
++ strncpy(batt_info->Model, temp, 12);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_SERIAL_NUMBER")==0) {
++ strncpy(batt_info->Serial, temp, 12);
++ }
++ else if (strcmp(attr,"POWER_SUPPLY_PRESENT")==0) {
++ if(strncmp(temp,"1",1)==0) {
++ batt_info->Battery_Present = 1;
++ }
++ else {
++ batt_info->Battery_Present = 0;
++ printf(" Battery is not present, bailing out. \n");
++ return 0;
++ }
++ }
+ }
++ if (strcmp(batt_info->Charge_Now,"")!=0 &&
++ strcmp(batt_info->Charge_Now,"unknown")!=0)
++ snprintf(temp, sizeof(temp), "%s mA", batt_info->Present_Rate);
+ else
+- strncpy(batt_info->Model, "unknown", 7);
++ snprintf(temp, sizeof(temp), "%s mW", batt_info->Present_Rate);
+
+- fgets(str, 100, power_fp);
++ strncpy(batt_info->Present_Rate, temp, 9);
+
+- /* get serial */
+- memset(str, '\0', 100);
+- fgets(str, 100, power_fp);
+- if (strlen(str)!=0)
+- {
+- memset(temp, '\0', 100);
+- sscanf(str, "%*[^=] %*c %s %[^\n]",temp);
+- strncpy(batt_info->Serial, temp, 12);
+- }
+- else
+- strncpy(batt_info->Serial, "unknown", 7);
+-
+ fclose(power_fp);
+- }
++ }
+ else // battery dir is readable but empty : only . and .. at most //
+ batt_info->Battery_Present = 3;
+ return 0;
diff --git a/sys-power/acpitool/files/acpitool-0.5.1-kernel3.patch b/sys-power/acpitool/files/acpitool-0.5.1-kernel3.patch
new file mode 100644
index 000000000000..cd4b5c357e65
--- /dev/null
+++ b/sys-power/acpitool/files/acpitool-0.5.1-kernel3.patch
@@ -0,0 +1,14 @@
+http://bugs.gentoo.org/377355
+
+--- a/src/acpitool.cpp
++++ b/src/acpitool.cpp
+@@ -205,8 +205,7 @@
+ Kernel_24 = 1;
+ Kernel_26 = 0;
+ }
+-
+- if(strncmp(str,"2.6",3)==0)
++ else
+ {
+ Kernel_24 = 0;
+ Kernel_26 = 1;
diff --git a/sys-power/acpitool/files/acpitool-0.5.1-wakeup.patch b/sys-power/acpitool/files/acpitool-0.5.1-wakeup.patch
new file mode 100644
index 000000000000..b36d7306bddf
--- /dev/null
+++ b/sys-power/acpitool/files/acpitool-0.5.1-wakeup.patch
@@ -0,0 +1,70 @@
+From 3a87a4132667f78fc85c54ad89992bbdd02d1e55 Mon Sep 17 00:00:00 2001
+From: Carlos Alberto Lopez Perez <clopez@igalia.com>
+Date: Thu, 6 Oct 2011 03:12:55 +0200
+Subject: [PATCH] Use dynamic structures instead of predefined ones
+
+ * The file /proc/acpi/wakeup can have much more than 25 entries.
+ In my computer (Dell E6420) I have 27 entries.
+ So instead of using an array of [x] entries better use dynamic
+ vectors and push the new entries when a new line from the file
+ is read.
+
+ * The name of the device is not ever 4 characters. For example I
+ have a device called "LID" which is 3 characters long.
+ Instead of using a fixed size for the device we split the line
+ on the first tab (\t) and use the first part.
+---
+ src/acpitool.cpp | 23 +++++++++++------------
+ 1 files changed, 11 insertions(+), 12 deletions(-)
+
+diff --git a/src/acpitool.cpp b/src/acpitool.cpp
+index 2a610a5..71e01d7 100644
+--- a/src/acpitool.cpp
++++ b/src/acpitool.cpp
+@@ -460,16 +460,14 @@ int Show_WakeUp_Devices(int verbose)
+
+ int Toggle_WakeUp_Device(const int Device, int verbose)
+ {
+- ifstream file_in;
+ ofstream file_out;
+- char *filename, str[50];
+- int index = 1;
+- char Name[25][5]; // 25 should be enough I guess, I have only 9 so far //
+-
++ char *filename; string str;
++ int index = 1; int charindex = 0;
++ std::vector <std::string> Name(index); // Never is enough, use dynamic structures //
+ filename = "/proc/acpi/wakeup";
+
+- file_in.open(filename);
+- if (!file_in)
++ ifstream file_in(filename, ifstream::in);
++ if (!file_in.good()) // if opening is not successful
+ {
+ if(!verbose)
+ {
+@@ -484,14 +482,15 @@ int Toggle_WakeUp_Device(const int Device, int verbose)
+ }
+ }
+
+- file_in.getline(str, 50); // first line are just headers //
++ getline(file_in, str); // first line are just headers //
+ while(!file_in.eof()) // count all devices and store their names//
+ {
+- file_in.getline(str, 50);
+- if(strlen(str)!=0) // avoid empty last line //
++ getline(file_in, str);
++ if( str.length() != 0 ) // avoid empty last line //
+ {
+- memset(Name[index], '\0', 5);
+- strncpy(Name[index], str, 4);
++ charindex = 0; // reset to zero
++ while ( (str[++charindex]!='\t') ); // stop on first tab and get the array index
++ Name.push_back(str.substr(0,charindex)); // Push the name into the vector
+ index++;
+ }
+ }
+--
+1.7.5.4
+
+
diff --git a/sys-power/acpitool/metadata.xml b/sys-power/acpitool/metadata.xml
new file mode 100644
index 000000000000..85e4ed814fa2
--- /dev/null
+++ b/sys-power/acpitool/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<!-- maintainer-needed -->
+</pkgmetadata>
diff --git a/sys-power/amdfan/Manifest b/sys-power/amdfan/Manifest
new file mode 100644
index 000000000000..c80abf5d20dc
--- /dev/null
+++ b/sys-power/amdfan/Manifest
@@ -0,0 +1,3 @@
+DIST amdfan-0.1.28.tar.gz 81901 BLAKE2B 84e461a2f230e560c80badd99ec658774e5b46785a78387d6906d8ebe8a855f1e421a33872246af2a96ff06790615ad47a7d3d248e97a615c78a4ff9de8f641e SHA512 214b4940e747a8c8c0083d1cd90e78a3080e6b6b56031fff42f6bdca867e47ba81defb490e7704786f6e2a2c9634d990d53cbcfbc24c2c43d4ec9691023c06d8
+DIST amdfan-0.2.3.tar.gz 85434 BLAKE2B 092a0f4123bb6e81688855ec868ddad3c55eee543fd9b5c81f4e0363c3e244b16fc8f2c82d1461a8471fa3074dc6cb47a6220d6740aabfa514f849e9075dfcf2 SHA512 fa46e89df1ea26b5fc6eec7596c8fec3c7d41e602210fb1544ca468f958739a97010616f3cefc30134199d9355281a7b572252b5b360b79f0f0029d3a825d970
+DIST amdfan-0.2.5.tar.gz 86664 BLAKE2B 5165065d499c3c57cdba0981da35bd0a4d758ef31fd8ab341ee44809d85feb1b8eedfb500427afd52b477999e641f1fe7912fdb861f8d9c8a60ebe76c02e4b10 SHA512 40a74c956f3c7a665ec5bb12093b9fc4f0a69ddfdb2f4cfdaf0f875a5c5df48028192e402c988773dd24977ddf2d09695f423fab16a6a13d64a3cd403ff3782e
diff --git a/sys-power/amdfan/amdfan-0.1.28.ebuild b/sys-power/amdfan/amdfan-0.1.28.ebuild
new file mode 100644
index 000000000000..f7e994ed7468
--- /dev/null
+++ b/sys-power/amdfan/amdfan-0.1.28.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 systemd
+
+DESCRIPTION="Updated AMD Fan control utility forked from amdgpu-fan and updated. "
+HOMEPAGE="https://mcgillij.dev/pages/amdfan.html"
+SRC_URI="https://github.com/mcgillij/amdfan/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+"
+DEPEND="${PYTHON_DEPS}"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+DOCS=( README.md )
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ systemd_dounit src/amdfan/amdfan.service
+}
+
+python_test() {
+ "${EPYTHON}" -m unittest discover tests || die
+}
diff --git a/sys-power/amdfan/amdfan-0.2.3.ebuild b/sys-power/amdfan/amdfan-0.2.3.ebuild
new file mode 100644
index 000000000000..770963eeb935
--- /dev/null
+++ b/sys-power/amdfan/amdfan-0.2.3.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+# shellcheck disable=2034
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 systemd autotools
+
+DESCRIPTION="Updated AMD Fan control utility forked from amdgpu-fan and updated."
+HOMEPAGE="https://mcgillij.dev/pages/amdfan.html"
+SRC_URI="https://github.com/mcgillij/amdfan/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+"
+DEPEND="${PYTHON_DEPS}"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+DOCS=( README.md )
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # this sed isn't clean. i haven't used PATCHES for this, since we're
+ # hoping to find a better fix upstream. suggestions are welcome
+ #
+ # relevant discussion:
+ # https://github.com/mcgillij/amdfan/commit/529fd3d4#r144705633
+ sed -i '/^include = \["dist\/systemd\/amdfan.service"\]$/d' pyproject.toml || die
+
+ eautoreconf -vfi
+}
+
+src_configure() {
+ # i don't like hardcoding --bindir like this, but
+ # if i don't, i get ${exec_prefix}/bin instead of /usr/bin
+ #
+ # is there a better approach?
+ econf --bindir="${EPREFIX}"/usr/bin
+}
+
+src_install() {
+ newinitd dist/openrc/amdfan amdfan
+ systemd_dounit dist/systemd/amdfan.service
+
+ distutils-r1_src_install
+}
+
+python_test() {
+ "${EPYTHON}" -m unittest discover tests || die
+}
diff --git a/sys-power/amdfan/amdfan-0.2.5.ebuild b/sys-power/amdfan/amdfan-0.2.5.ebuild
new file mode 100644
index 000000000000..770963eeb935
--- /dev/null
+++ b/sys-power/amdfan/amdfan-0.2.5.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+# shellcheck disable=2034
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 systemd autotools
+
+DESCRIPTION="Updated AMD Fan control utility forked from amdgpu-fan and updated."
+HOMEPAGE="https://mcgillij.dev/pages/amdfan.html"
+SRC_URI="https://github.com/mcgillij/amdfan/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+"
+DEPEND="${PYTHON_DEPS}"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+DOCS=( README.md )
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # this sed isn't clean. i haven't used PATCHES for this, since we're
+ # hoping to find a better fix upstream. suggestions are welcome
+ #
+ # relevant discussion:
+ # https://github.com/mcgillij/amdfan/commit/529fd3d4#r144705633
+ sed -i '/^include = \["dist\/systemd\/amdfan.service"\]$/d' pyproject.toml || die
+
+ eautoreconf -vfi
+}
+
+src_configure() {
+ # i don't like hardcoding --bindir like this, but
+ # if i don't, i get ${exec_prefix}/bin instead of /usr/bin
+ #
+ # is there a better approach?
+ econf --bindir="${EPREFIX}"/usr/bin
+}
+
+src_install() {
+ newinitd dist/openrc/amdfan amdfan
+ systemd_dounit dist/systemd/amdfan.service
+
+ distutils-r1_src_install
+}
+
+python_test() {
+ "${EPYTHON}" -m unittest discover tests || die
+}
diff --git a/sys-power/amdfan/metadata.xml b/sys-power/amdfan/metadata.xml
new file mode 100644
index 000000000000..b6dc73fbf711
--- /dev/null
+++ b/sys-power/amdfan/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>rolferen@gmail.com</email>
+ <name>Mazunki Hoksaas</name>
+ </maintainer>
+ <upstream>
+ <bugs-to>https://github.com/mcgillij/amdfan/issues</bugs-to>
+ <remote-id type="github">mcgillij/amdfan</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/apcupsd/Manifest b/sys-power/apcupsd/Manifest
new file mode 100644
index 000000000000..7f3bbbf73658
--- /dev/null
+++ b/sys-power/apcupsd/Manifest
@@ -0,0 +1 @@
+DIST apcupsd-3.14.14.tar.gz 1843409 BLAKE2B 48a3b249780064d699d86b658584aa222ce9f3b46a81209110b4684bf737cca7492b87b063154864ce76478f29f73cda83ab96b47f4a7aa7aa91e29a8abbf4a8 SHA512 c953bbf3e08f809748a7978a3952604176390d1cd276f187fe096d9bc3c8993b52127e8350c0363387da41318e24b4d1e00ea58df71f3bb8f50c9a5a64cd2d7f
diff --git a/sys-power/apcupsd/apcupsd-3.14.14-r4.ebuild b/sys-power/apcupsd/apcupsd-3.14.14-r4.ebuild
new file mode 100644
index 000000000000..e524435a49b8
--- /dev/null
+++ b/sys-power/apcupsd/apcupsd-3.14.14-r4.ebuild
@@ -0,0 +1,160 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit linux-info systemd udev tmpfiles
+
+DESCRIPTION="APC UPS daemon with integrated tcp/ip remote shutdown"
+HOMEPAGE="http://www.apcupsd.org/"
+SRC_URI="https://downloads.sourceforge.net/apcupsd/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~arm64 ppc ~riscv x86"
+IUSE="cgi +modbus selinux snmp +usb"
+
+DEPEND="
+ sys-apps/util-linux[tty-helpers]
+ cgi? ( media-libs/gd:2= )
+ modbus? (
+ usb? ( virtual/libusb:0= )
+ )
+ snmp? ( net-analyzer/net-snmp )
+"
+
+RDEPEND="
+ virtual/mailx
+ selinux? ( sec-policy/selinux-apcupsd )
+ ${DEPEND}
+"
+
+CONFIG_CHECK="~USB_HIDDEV ~HIDRAW"
+ERROR_USB_HIDDEV="CONFIG_USB_HIDDEV: needed to access USB-attached UPSes"
+ERROR_HIDRAW="CONFIG_HIDRAW: needed to access USB-attached UPSes"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-3.14.9-aliasing.patch
+ "${FILESDIR}"/${PN}-3.14.9-close-on-exec.patch
+ "${FILESDIR}"/${PN}-3.14.9-commfailure.patch
+ "${FILESDIR}"/${PN}-3.14.9-fix-nologin.patch
+ "${FILESDIR}"/${PN}-3.14.9-gapcmon.patch
+ "${FILESDIR}"/${PN}-3.14.9-wall-on-mounted-usr.patch
+ "${FILESDIR}"/${PN}-3.14.14-lto.patch
+)
+
+pkg_setup() {
+ if use kernel_linux && use usb && linux_config_exists ; then
+ check_extra_config
+ fi
+}
+
+src_prepare() {
+ default
+ # skip this specific doc step as produced files never installed
+ # this avoids calling the col command not available on musl based system.
+ sed -i "/^SUBDIRS/ s/doc//g" Makefile || die
+}
+
+src_configure() {
+ # We force the DISTNAME to gentoo so it will use gentoo's layout also
+ # when installed on non-linux systems.
+ local myeconfargs
+ myeconfargs=(
+ APCUPSD_MAIL="$(type -p mail)"
+ --disable-gapcmon
+ --enable-net
+ --enable-pcnet
+ --sbindir="/sbin"
+ --sysconfdir="${EPREFIX}/etc/apcupsd"
+ --with-distname="gentoo"
+ --with-pwrfail-dir="${EPREFIX}/etc/apcupsd"
+ --with-lock-dir="${EPREFIX}/run/apcupsd"
+ --with-log-dir="${EPREFIX}/var/log"
+ --with-nisip="127.0.0.1"
+ --with-nis-port="3551"
+ --with-pid-dir="${EPREFIX}/run/apcupsd"
+ --with-upscable="$(usex usb usb smart)"
+ --with-upstype="$(usex usb usb apcsmart)"
+ $(use_enable cgi)
+ $(use_enable modbus)
+ $(use_enable snmp)
+ $(use_enable usb)
+ $(use_with cgi cgi-bin "${EPREFIX}/usr/libexec/${PN}/cgi-bin")
+ $(usex modbus $(use_enable usb modbus-usb) "--disable-modbus-usb")
+ $(usex usb "--without-serial-dev" "--with-serial-dev=/dev/ttyS0")
+ $(usex usb "--with-dev=" "--with-dev=/dev/ttyS0")
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+ emake VERBOSE="2"
+}
+
+src_install() {
+ emake DESTDIR="${D}" VERBOSE="2" install
+
+ rm "${ED}"/etc/init.d/apcupsd || die
+ rm "${ED}"/etc/init.d/halt || die
+ rm -r "${ED}"/usr/share/hal || die
+
+ insinto /etc/apcupsd
+ newins examples/safe.apccontrol safe.apccontrol
+
+ doman doc/*.8 doc/*.5
+
+ docinto html
+ dodoc -r doc/manual/.
+ einstalldocs
+
+ newinitd "${FILESDIR}"/apcupsd.init apcupsd
+ newinitd "${FILESDIR}"/apcupsd.powerfail.init-r1 apcupsd.powerfail
+
+ systemd_dounit "${FILESDIR}"/apcupsd.service
+ dotmpfiles "${FILESDIR}"/apcupsd-tmpfiles.conf
+
+ # replace it with our udev rules if we're in Linux
+ if use kernel_linux ; then
+ udev_newrules "${FILESDIR}"/apcupsd-udev.rules 60-${PN}.rules
+ fi
+
+}
+
+pkg_postinst() {
+ use kernel_linux && udev_reload
+
+ tmpfiles_process ${PN}-tmpfiles.conf
+
+ if use cgi ; then
+ elog "The cgi-bin directory for ${PN} is /usr/libexec/${PN}/cgi-bin."
+ elog "Set up your ScriptAlias or symbolic links accordingly."
+ fi
+
+ elog ""
+ elog "Since version 3.14.0 you can use multiple apcupsd instances to"
+ elog "control more than one UPS in a single box with openRC."
+ elog "To do this, create a link between /etc/init.d/apcupsd to a new"
+ elog "/etc/init.d/apcupsd.something, and it will then load the"
+ elog "configuration file at /etc/apcupsd/something.conf."
+ elog ""
+
+ elog 'If you want apcupsd to power off your UPS when it'
+ elog 'shuts down your system in a power failure, you must'
+ elog 'add apcupsd.powerfail to your shutdown runlevel:'
+ elog ''
+ elog ' \e[01m rc-update add apcupsd.powerfail shutdown \e[0m'
+ elog ''
+
+ if use kernel_linux; then
+ elog "Starting from version 3.14.9-r1, ${PN} installs udev rules"
+ elog "for persistent device naming. If you have multiple UPS"
+ elog "connected to the machine, you can point them to the devices"
+ elog "in /dev/apcups/by-id directory."
+ fi
+}
+
+pkg_postrm() {
+ use kernel_linux && udev_reload
+}
diff --git a/sys-power/apcupsd/files/apcupsd-3.14.14-lto.patch b/sys-power/apcupsd/files/apcupsd-3.14.14-lto.patch
new file mode 100644
index 000000000000..54ad76b61a35
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd-3.14.14-lto.patch
@@ -0,0 +1,29 @@
+Fix extern symbol declarations to be consistent with the definition.
+
+Bug: https://bugs.gentoo.org/941584
+Signed-off-by: Holger Hoffstätte <holger@applied-asynchrony.com>
+
+diff -rup a/src/apcupsd.c a/src/apcupsd.c
+--- a/src/apcupsd.c
++++ b/src/apcupsd.c
+@@ -31,7 +31,7 @@ static void daemon_start(void);
+ int pidcreated = 0;
+ extern int kill_on_powerfail;
+ extern FILE *trace_fd;
+-extern char *pidfile;
++extern const char *pidfile;
+
+ /*
+ * The terminate function and trapping signals allows apcupsd
+diff -rup a/src/options.c b/src/options.c
+--- a/src/options.c
++++ b/src/options.c
+@@ -62,7 +62,7 @@ int terminate_on_powerfail = FALSE;
+ int kill_on_powerfail = FALSE;
+ int dumb_mode_test = FALSE; /* for testing dumb mode */
+ int go_background = TRUE;
+-extern char *pidfile;
++extern const char *pidfile;
+ extern bool trace;
+
+ static void print_usage(char *argv[])
diff --git a/sys-power/apcupsd/files/apcupsd-3.14.9-aliasing.patch b/sys-power/apcupsd/files/apcupsd-3.14.9-aliasing.patch
new file mode 100644
index 000000000000..09d9883a22f2
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd-3.14.9-aliasing.patch
@@ -0,0 +1,39 @@
+Index: apcupsd-3.14.9/src/apctest.c
+===================================================================
+--- apcupsd-3.14.9.orig/src/apctest.c
++++ apcupsd-3.14.9/src/apctest.c
+@@ -2206,18 +2206,18 @@ static struct {
+ const char *config_directive;
+ const char *descript;
+ char type;
+- int *data;
++ void *data;
+ } cmd_table[] = {
+ {'u', "HITRANSFER", "Upper transfer voltage", 'i', &eeprom_ups.hitrans},
+ {'l', "LOTRANSFER", "Lower transfer voltage", 'i', &eeprom_ups.lotrans},
+ {'e', "RETURNCHARGE", "Return threshold", 'i', &eeprom_ups.rtnpct},
+ {'o', "OUTPUTVOLTS", "Output voltage on batts", 'i', &eeprom_ups.NomOutputVoltage},
+- {'s', "SENSITIVITY", "Sensitivity", 'c', (int *)eeprom_ups.sensitivity},
++ {'s', "SENSITIVITY", "Sensitivity", 'c', eeprom_ups.sensitivity},
+ {'q', "LOWBATT", "Low battery warning", 'i', &eeprom_ups.dlowbatt},
+ {'p', "SLEEP", "Shutdown grace delay", 'i', &eeprom_ups.dshutd},
+- {'k', "BEEPSTATE", "Alarm delay", 'c', (int *)eeprom_ups.beepstate},
++ {'k', "BEEPSTATE", "Alarm delay", 'c', eeprom_ups.beepstate},
+ {'r', "WAKEUP", "Wakeup delay", 'i', &eeprom_ups.dwake},
+- {'E', "SELFTEST", "Self test interval", 'c', (int *)eeprom_ups.selftest},
++ {'E', "SELFTEST", "Self test interval", 'c', eeprom_ups.selftest},
+ {0, NULL, NULL} /* Last entry */
+ };
+
+@@ -2240,9 +2240,9 @@ static void print_valid_eeprom_values(UP
+ for (j = 0; cmd_table[j].cmd; j++) {
+ if (cmd[i].cmd == cmd_table[j].cmd) {
+ if (cmd_table[j].type == 'c')
+- asnprintf(val, sizeof(val), "%s", (char *)cmd_table[j].data);
++ asnprintf(val, sizeof(val), "%s", cmd_table[j].data);
+ else
+- asnprintf(val, sizeof(val), "%d", *cmd_table[j].data);
++ asnprintf(val, sizeof(val), "%d", *((int*)cmd_table[j].data));
+
+ pmsg("%-24s %-12s %-6s ", cmd_table[j].descript,
+ cmd_table[j].config_directive, val);
diff --git a/sys-power/apcupsd/files/apcupsd-3.14.9-close-on-exec.patch b/sys-power/apcupsd/files/apcupsd-3.14.9-close-on-exec.patch
new file mode 100644
index 000000000000..aeaa78b35420
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd-3.14.9-close-on-exec.patch
@@ -0,0 +1,50 @@
+Close the socket on exec - avoid leaked file descriptors, patch from Fedora
+
+--- a/src/apcnis.c
++++ b/src/apcnis.c
+@@ -157,6 +157,9 @@ void do_server(UPSINFO *ups)
+ sleep(5 * 60);
+ }
+
++ /* Close the socket on exec - avoid leaked file descriptors */
++ fcntl(sockfd, F_SETFD, FD_CLOEXEC);
++
+ /* Reuse old sockets */
+ #ifndef HAVE_MINGW
+ if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (void*)&turnon, sizeof(turnon)) < 0) {
+--- a/src/apcupsd.c
++++ b/src/apcupsd.c
+@@ -212,6 +212,9 @@ int main(int argc, char *argv[])
+ if (ups->event_fd < 0) {
+ log_event(ups, LOG_WARNING, "Could not open events file %s: %s\n",
+ ups->eventfile, strerror(errno));
++ } else {
++ /* Close the file on exec - avoid leaked file descriptors */
++ fcntl(ups->event_fd, F_SETFD, FD_CLOEXEC);
+ }
+ }
+
+--- a/src/drivers/usb/linux/linux-usb.c
++++ b/src/drivers/usb/linux/linux-usb.c
+@@ -246,8 +246,11 @@ bool LinuxUsbUpsDriver::open_usb_device()
+ /* Retry 10 times */
+ for (i = 0; i < 10; i++) {
+ _fd = open_device(_ups->device);
+- if (_fd != -1)
++ if (_fd != -1) {
++ /* Close the device on exec - avoid leaked file descriptors */
++ fcntl(_fd, F_SETFD, FD_CLOEXEC);
+ return true;
++ }
+ sleep(1);
+ }
+
+@@ -270,6 +273,7 @@ auto_detect:
+ asnprintf(devname, sizeof(devname), "%s%d", hiddev[j], k);
+ _fd = open_device(devname);
+ if (_fd != -1) {
++ fcntl(_fd, F_SETFD, FD_CLOEXEC);
+ /* Successful open, save device name and return */
+ strlcpy(_ups->device, devname, sizeof(_ups->device));
+ return true;
+
diff --git a/sys-power/apcupsd/files/apcupsd-3.14.9-commfailure.patch b/sys-power/apcupsd/files/apcupsd-3.14.9-commfailure.patch
new file mode 100644
index 000000000000..49641c06bef3
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd-3.14.9-commfailure.patch
@@ -0,0 +1,15 @@
+Author: Tero Janka <tero.janka@mbnet.fi>
+Description: apcaccess call blocking commfailure mails (Closes: #409734).
+
+Index: apcupsd/platforms/etc/commfailure.in
+===================================================================
+--- apcupsd.orig/platforms/etc/commfailure.in
++++ apcupsd/platforms/etc/commfailure.in
+@@ -13,7 +13,5 @@ MSG="$HOSTNAME Communications with UPS $
+ echo "Subject: $MSG"
+ echo " "
+ echo "$MSG"
+- echo " "
+- @sbindir@/apcaccess status
+ ) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
+ exit 0
diff --git a/sys-power/apcupsd/files/apcupsd-3.14.9-fix-nologin.patch b/sys-power/apcupsd/files/apcupsd-3.14.9-fix-nologin.patch
new file mode 100644
index 000000000000..75f9e4449bf5
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd-3.14.9-fix-nologin.patch
@@ -0,0 +1,15 @@
+Description: only prohibit logins on shutdown if login is allowed at all
+Index: apcupsd-3.14.12/src/action.c
+===================================================================
+--- apcupsd-3.14.12.orig/src/action.c
++++ apcupsd-3.14.12/src/action.c
+@@ -208,7 +208,8 @@ static void do_shutdown(UPSINFO *ups, in
+ delete_lockfile(ups);
+ ups->set_fastpoll();
+ make_file(ups, ups->pwrfailpath);
+- prohibit_logins(ups);
++ if (ups->nologin.type != NEVER)
++ prohibit_logins(ups);
+
+ if (!ups->is_slave()) {
+ /*
diff --git a/sys-power/apcupsd/files/apcupsd-3.14.9-gapcmon.patch b/sys-power/apcupsd/files/apcupsd-3.14.9-gapcmon.patch
new file mode 100644
index 000000000000..0dd1cc69aa35
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd-3.14.9-gapcmon.patch
@@ -0,0 +1,33 @@
+Description: take care of some deprecated functions and format issue
+Author: Thorsten Alteholz <debian@alteholz.de>
+Index: apcupsd-3.14.14/src/gapcmon/gapcmon.c
+===================================================================
+--- apcupsd-3.14.14.orig/src/gapcmon/gapcmon.c 2016-07-16 03:04:22.000000000 +0200
++++ apcupsd-3.14.14/src/gapcmon/gapcmon.c 2017-10-06 09:26:40.412004149 +0200
+@@ -1580,7 +1580,7 @@
+ scaled = gdk_pixbuf_scale_simple(pixbuf, size, size, GDK_INTERP_BILINEAR);
+ gtk_image_set_from_pixbuf(GTK_IMAGE(pm->tray_image), scaled);
+ gtk_widget_show(pm->tray_image);
+- gdk_pixbuf_unref(scaled);
++ g_object_unref(scaled);
+ }
+
+ if (pm->window != NULL)
+@@ -2889,7 +2889,7 @@
+
+ pch = g_strdup_printf("%s(%s) emsg=%s", pch_func, pch_topic, pch_emsg);
+
+- g_message(pch);
++ g_message("%s",pch);
+
+ g_free(pch);
+
+@@ -4474,7 +4474,7 @@
+ gtk_image_set_from_pixbuf(GTK_IMAGE(image), scaled);
+ gtk_box_pack_start(GTK_BOX(hbox), image, TRUE, TRUE, 0);
+ gtk_widget_show(image);
+- gdk_pixbuf_unref(scaled);
++ g_object_unref(scaled);
+
+ label = gtk_label_new(about_text);
+ gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
diff --git a/sys-power/apcupsd/files/apcupsd-3.14.9-wall-on-mounted-usr.patch b/sys-power/apcupsd/files/apcupsd-3.14.9-wall-on-mounted-usr.patch
new file mode 100644
index 000000000000..b89a5309e5ba
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd-3.14.9-wall-on-mounted-usr.patch
@@ -0,0 +1,20 @@
+At halt/killpower time, /usr may already be umounted, and wall
+lives in /usr. Avoid failing by using cat if needed.
+
+Index: apcupsd/platforms/apccontrol.in
+===================================================================
+--- apcupsd.orig/platforms/apccontrol.in
++++ apcupsd/platforms/apccontrol.in
+@@ -62,10 +62,10 @@ fi
+
+ case "$1" in
+ killpower)
+- echo "Apccontrol doing: ${APCUPSD} --killpower on UPS ${2}" | ${WALL}
++ echo "Apccontrol doing: ${APCUPSD} --killpower on UPS ${2}" | (${WALL} 2>/dev/null || cat)
+ sleep 10
+ ${APCUPSD} --killpower
+- echo "Apccontrol has done: ${APCUPSD} --killpower on UPS ${2}" | ${WALL}
++ echo "Apccontrol has done: ${APCUPSD} --killpower on UPS ${2}" | (${WALL} 2>/dev/null || cat)
+ ;;
+ commfailure)
+ echo "Warning communications lost with UPS ${2}" | ${WALL}
diff --git a/sys-power/apcupsd/files/apcupsd-tmpfiles.conf b/sys-power/apcupsd/files/apcupsd-tmpfiles.conf
new file mode 100644
index 000000000000..601b5aeab5ef
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd-tmpfiles.conf
@@ -0,0 +1,3 @@
+D /run/apcupsd 0755 root root
+r /etc/apcupsd/powerfail
+r /etc/nologin
diff --git a/sys-power/apcupsd/files/apcupsd-udev.rules b/sys-power/apcupsd/files/apcupsd-udev.rules
new file mode 100644
index 000000000000..b2eeb27302d8
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd-udev.rules
@@ -0,0 +1,10 @@
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add", GOTO="apcupsd_end"
+SUBSYSTEM!="usb", GOTO="apcupsd_end"
+ENV{ID_VENDOR}=="", IMPORT{program}="usb_id --export %p"
+ENV{ID_VENDOR_ID}!="051d", GOTO="apcupsd_end"
+
+KERNEL=="?*", SYMLINK+="apcups/by-id/$env{ID_BUS}-$env{ID_SERIAL_SHORT}"
+
+LABEL="apcupsd_end"
diff --git a/sys-power/apcupsd/files/apcupsd.init b/sys-power/apcupsd/files/apcupsd.init
new file mode 100644
index 000000000000..e544fd4f3900
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd.init
@@ -0,0 +1,28 @@
+#!/sbin/openrc-run
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+: ${APCUPSD_CONFIGFILE:=/etc/apcupsd/${SVCNAME#*.}.conf}
+: ${APCUPSD_POWERFAILFILE:=/etc/apcupsd/powerfail}
+: ${APCUPSD_PIDFILE:=/run/${SVCNAME}.pid}
+: ${APCUPSD_SSDARGS:=--wait 1000}
+: ${APCUPSD_TERMTIMEOUT:=TERM/60/KILL/5}
+
+command="/sbin/apcupsd"
+command_args="${APCUPSD_OPTS} --config-file \"${APCUPSD_CONFIGFILE}\" --pid-file \"${APCUPSD_PIDFILE}\""
+pidfile="${APCUPSD_PIDFILE}"
+retry="${APCUPSD_TERMTIMEOUT}"
+start_stop_daemon_args="${APCUPSD_SSDARGS}"
+required_files="${APCUPSD_CONFIGFILE}"
+
+depend() {
+ use dns
+}
+
+start_pre() {
+ if [ -e "${APCUPSD_POWERFAILFILE}" ] ; then
+ ebegin "Removing stale ${APCUPSD_POWERFAILFILE}"
+ rm "${APCUPSD_POWERFAILFILE}"
+ eend $?
+ fi
+}
diff --git a/sys-power/apcupsd/files/apcupsd.powerfail.init-r1 b/sys-power/apcupsd/files/apcupsd.powerfail.init-r1
new file mode 100644
index 000000000000..d582d9eb5b3a
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd.powerfail.init-r1
@@ -0,0 +1,17 @@
+#!/sbin/openrc-run
+# Copyright 2009-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+description='Signal the UPS to kill power in a power failure condition'
+
+depend() {
+ need mount-ro
+}
+
+start() {
+ if [ -f /etc/apcupsd/powerfail ] ; then
+ ebegin 'Signaling UPS to kill power'
+ /sbin/apcupsd --killpower
+ eend $?
+ fi
+}
diff --git a/sys-power/apcupsd/files/apcupsd.service b/sys-power/apcupsd/files/apcupsd.service
new file mode 100644
index 000000000000..9cec6e44194a
--- /dev/null
+++ b/sys-power/apcupsd/files/apcupsd.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=APC UPS Monitor
+
+[Service]
+ExecStart=/sbin/apcupsd -b
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sys-power/apcupsd/metadata.xml b/sys-power/apcupsd/metadata.xml
new file mode 100644
index 000000000000..e37ee3898b20
--- /dev/null
+++ b/sys-power/apcupsd/metadata.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>john.einar@gmail.com</email>
+ <name>John Einar Reitan</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>conikost@gentoo.org</email>
+ <name>Conrad Kostecki</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>base-system@gentoo.org</email>
+ <name>Gentoo Base System</name>
+ </maintainer>
+ <longdescription lang="en">
+ Apcupsd can be used for power mangement and controlling most of
+ APC's UPS models on Unix and Windows machines. Apcupsd works with
+ most of APC's Smart-UPS models as well as most simple signalling
+ models such a Back-UPS, and BackUPS-Office. During a power failure,
+ apcupsd will inform the users about the power failure and that a
+ shutdown may occur. If power is not restored, a system shutdown
+ will follow when the battery is exhausted, a timeout (seconds)
+ expires, or runtime expires based on internal APC calculations
+ determined by power consumption rates.
+ </longdescription>
+ <upstream>
+ <remote-id type="sourceforge">apcupsd</remote-id>
+ </upstream>
+ <use>
+ <flag name="modbus">Enable MODBUS support over USB</flag>
+ </use>
+</pkgmetadata>
diff --git a/sys-power/auto-cpufreq/Manifest b/sys-power/auto-cpufreq/Manifest
new file mode 100644
index 000000000000..c2861c17725d
--- /dev/null
+++ b/sys-power/auto-cpufreq/Manifest
@@ -0,0 +1,3 @@
+DIST auto-cpufreq-2.3.0.tar.gz 216356 BLAKE2B ac4c0f293575d7e0deb7b31437674f06e614930eeff35cc7e57cca0088e8cf928b9401fcda72d48de12ccf158181cb9290a57dd49047fe3ae9ee182507dfab12 SHA512 46438401cfc662c8b26350e8e6d8ff147d87b49b65162dbdcced5c6e2d7a4762e8d732823c92ae6da80e2b4298999a3131ff574a3ec4293bd8b65979de36e688
+DIST auto-cpufreq-2.4.0.tar.gz 217070 BLAKE2B c572f6665feb55d2fc62d7cb0ec1ec5a8fd382e6745a422ab276deacd1936a6fbd4af8191725877c07958c1b89cb2daaff8cfb9c8ecdbd7cd4047e7986ce82ec SHA512 42fbf2d1a0b97b76343546d1f67c6da25e912001b521a94b7d4e4170b0b5e8e5450a08535a9f22e289ffaccffcd8c8377b22b7bb07d3e139b602f1cb924bd301
+DIST auto-cpufreq-2.6.0.tar.gz 226319 BLAKE2B 990c969c154416f3df36a4976931df818590330560bb557513b5edc68a409a871c16575d35408a3f0866cd5e910bdffe3c2a8f9089484b139aec00d5c48506ce SHA512 b05ee63f9480fb60c4adea642298259168a6137dd4fe81bcc6406a690ec27e26c0b5bb03d4d3331df4bf4c30cc8d267a4a2ab254f921d883123a656519639b54
diff --git a/sys-power/auto-cpufreq/auto-cpufreq-2.3.0.ebuild b/sys-power/auto-cpufreq/auto-cpufreq-2.3.0.ebuild
new file mode 100644
index 000000000000..d319bb7e9288
--- /dev/null
+++ b/sys-power/auto-cpufreq/auto-cpufreq-2.3.0.ebuild
@@ -0,0 +1,147 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+DISTUTILS_USE_PEP517=poetry
+
+inherit distutils-r1 systemd xdg-utils desktop
+
+DESCRIPTION="Automatic CPU speed & power optimizer for Linux"
+HOMEPAGE="https://github.com/AdnanHodzic/auto-cpufreq"
+SRC_URI="https://github.com/AdnanHodzic/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/distro[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pygobject[${PYTHON_USEDEP}]
+ dev-python/pyinotify[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-python/poetry-core[${PYTHON_USEDEP}]
+"
+
+DOCS=( README.md )
+
+src_prepare() {
+ default
+ # Update pyproject.toml to avoid dynamic_versioning in poetry
+ sed -i 's/poetry_dynamic_versioning.backend/poetry.core.masonry.api/' pyproject.toml || die
+ # Replace /usr/local/ paths with /usr/ in the source code to adhere to Gentoo standards
+ sed -i 's|/usr/local/share|/usr/share|g' scripts/auto-cpufreq-install.sh || die
+ sed -i 's|usr/local|usr|g' "scripts/${PN}.service" "scripts/${PN}-openrc" auto_cpufreq/core.py || die
+ sed -i 's|usr/local|usr|g' "scripts/${PN}.service" "scripts/${PN}-openrc" auto_cpufreq/gui/app.py || die
+ # Modify the service file to launch auto-cpufreq natively without the need for virtual environment
+ sed -i 's|WorkingDirectory=/opt/auto-cpufreq/venv||g' scripts/auto-cpufreq.service || die
+ sed -i 's|Environment=PYTHONPATH=/opt/auto-cpufreq||g' scripts/auto-cpufreq.service || die
+ sed -i 's|ExecStart=/opt/auto-cpufreq/venv/bin/python /opt/auto-cpufreq/venv/bin/auto-cpufreq --daemon|ExecStart=/usr/bin/auto-cpufreq --daemon|g' scripts/auto-cpufreq.service || die
+ # Change the path in core.py
+ sed -i 's|/opt/auto-cpufreq/override.pickle|/var/lib/auto-cpufreq/override.pickle|g' auto_cpufreq/core.py || die
+ distutils-r1_src_prepare
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # Create the scripts directory if it doesn't exist
+ dodir "/usr/share/${PN}/scripts"
+
+ # Create the directory for override.pickle
+ dodir /var/lib/auto-cpufreq
+ keepdir /var/lib/auto-cpufreq
+ fowners root:root /var/lib/auto-cpufreq
+ fperms 0755 /var/lib/auto-cpufreq
+
+ # Copy all scripts from the 'scripts' directory
+ for script in scripts/*; do
+ if [[ -f "$script" ]]; then
+ case "${script##*/}" in
+ *.sh|*.py|auto-cpufreq-*|cpufreqctl.sh)
+ exeinto "/usr/share/${PN}/scripts"
+ doexe "$script"
+ ;;
+ *)
+ insinto "/usr/share/${PN}/scripts"
+ doins "$script"
+ ;;
+ esac
+ fi
+ done
+
+ # Copy images
+ insinto "/usr/share/${PN}/images"
+ doins images/*
+
+ # Install icon
+ doicon -s 128 images/icon.png
+
+ # Install polkit policy
+ insinto /usr/share/polkit-1/actions
+ doins scripts/org.auto-cpufreq.pkexec.policy
+
+ # Install desktop file
+ domenu scripts/auto-cpufreq-gtk.desktop
+
+ # Install systemd service file
+ systemd_dounit "scripts/${PN}.service"
+
+ # Install OpenRC init script
+ newinitd "scripts/${PN}-openrc" "${PN}"
+}
+
+pkg_postinst() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+
+ elog "Updating XDG database"
+
+ elog "The auto-cpufreq override file will be stored in /var/lib/auto-cpufreq/override.pickle"
+
+ # Create log file
+ touch /var/log/auto-cpufreq.log
+ elog ""
+ elog "Enable auto-cpufreq daemon service at boot:"
+ elog "systemd: systemctl enable --now auto-cpufreq"
+ elog "openrc: rc-update add auto-cpufreq default"
+ elog ""
+ elog "To view live log, run:"
+ elog "auto-cpufreq --stats"
+}
+
+pkg_postrm() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+
+ # Remove the override.pickle file and directory
+ if [[ -d "${EROOT}/var/lib/auto-cpufreq" ]]; then
+ rm -rf "${EROOT}"/var/lib/auto-cpufreq || die
+ fi
+
+ # Remove auto-cpufreq log file
+ if [ -f "${EROOT}/var/log/auto-cpufreq.log" ]; then
+ rm "${EROOT}"/var/log/auto-cpufreq.log || die
+ fi
+
+ # Remove auto-cpufreq-install script
+ if [ -f "${EROOT}/usr/bin/auto-cpufreq-install" ]; then
+ rm "${EROOT}"/usr/bin/auto-cpufreq-install || die
+ fi
+
+ # Restore original cpufreqctl binary if backup was made
+ if [ -f "${EROOT}/usr/bin/cpufreqctl.auto-cpufreq.bak" ]; then
+ mv "${EROOT}"/usr/bin/cpufreqctl.auto-cpufreq{.bak,} || die
+ fi
+ # Remove auto-cpufreq's cpufreqctl binary
+ # it overwrites cpufreqctl.sh
+ if [ -f "${EROOT}/usr/bin/cpufreqctl" ]; then
+ rm "${EROOT}"/usr/bin/cpufreqctl || die
+ fi
+}
diff --git a/sys-power/auto-cpufreq/auto-cpufreq-2.4.0.ebuild b/sys-power/auto-cpufreq/auto-cpufreq-2.4.0.ebuild
new file mode 100644
index 000000000000..46e4b334e7a1
--- /dev/null
+++ b/sys-power/auto-cpufreq/auto-cpufreq-2.4.0.ebuild
@@ -0,0 +1,145 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+DISTUTILS_USE_PEP517=poetry
+
+inherit distutils-r1 systemd xdg-utils desktop
+
+DESCRIPTION="Automatic CPU speed & power optimizer for Linux"
+HOMEPAGE="https://github.com/AdnanHodzic/auto-cpufreq"
+SRC_URI="https://github.com/AdnanHodzic/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/distro[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pygobject[${PYTHON_USEDEP}]
+ dev-python/pyinotify[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-python/poetry-core[${PYTHON_USEDEP}]
+"
+
+DOCS=( README.md )
+
+src_prepare() {
+ default
+ # Update pyproject.toml to avoid dynamic_versioning in poetry
+ sed -i 's/poetry_dynamic_versioning.backend/poetry.core.masonry.api/' pyproject.toml || die
+ # Replace /usr/local/ paths with /usr/ in the source code to adhere to Gentoo standards
+ sed -i 's|/usr/local/share|/usr/share|g' scripts/auto-cpufreq-install.sh || die
+ sed -i 's|usr/local|usr|g' "scripts/${PN}.service" "scripts/${PN}-openrc" auto_cpufreq/core.py || die
+ sed -i 's|usr/local|usr|g' "scripts/${PN}.service" "scripts/${PN}-openrc" auto_cpufreq/gui/app.py || die
+ # Modify the service file to launch auto-cpufreq natively without the need for virtual environment
+ sed -i 's|WorkingDirectory=/opt/auto-cpufreq/venv||g' scripts/auto-cpufreq.service || die
+ sed -i 's|Environment=PYTHONPATH=/opt/auto-cpufreq||g' scripts/auto-cpufreq.service || die
+ sed -i 's|ExecStart=/opt/auto-cpufreq/venv/bin/python /opt/auto-cpufreq/venv/bin/auto-cpufreq --daemon|ExecStart=/usr/bin/auto-cpufreq --daemon|g' scripts/auto-cpufreq.service || die
+ # Change the path in core.py
+ sed -i 's|/opt/auto-cpufreq/override.pickle|/var/lib/auto-cpufreq/override.pickle|g' auto_cpufreq/core.py || die
+ distutils-r1_src_prepare
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # Create the scripts directory if it doesn't exist
+ dodir "/usr/share/${PN}/scripts"
+
+ # Create the directory for override.pickle
+ dodir /var/lib/auto-cpufreq
+ keepdir /var/lib/auto-cpufreq
+ fowners root:root /var/lib/auto-cpufreq
+ fperms 0755 /var/lib/auto-cpufreq
+
+ # Copy all scripts from the 'scripts' directory
+ for script in scripts/*; do
+ if [[ -f "$script" ]]; then
+ case "${script##*/}" in
+ *.sh|*.py|auto-cpufreq-*|cpufreqctl.sh)
+ exeinto "/usr/share/${PN}/scripts"
+ doexe "$script"
+ ;;
+ *)
+ insinto "/usr/share/${PN}/scripts"
+ doins "$script"
+ ;;
+ esac
+ fi
+ done
+
+ # Copy images
+ insinto "/usr/share/${PN}/images"
+ doins images/*
+
+ # Install icon
+ doicon -s 128 images/icon.png
+
+ # Install polkit policy
+ insinto /usr/share/polkit-1/actions
+ doins scripts/org.auto-cpufreq.pkexec.policy
+
+ # Install desktop file
+ domenu scripts/auto-cpufreq-gtk.desktop
+
+ # Install systemd service file
+ systemd_dounit "scripts/${PN}.service"
+
+ # Install OpenRC init script
+ newinitd "scripts/${PN}-openrc" "${PN}"
+}
+
+pkg_postinst() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+
+ elog "The auto-cpufreq override file will be stored in /var/lib/auto-cpufreq/override.pickle"
+
+ # Create log file
+ touch /var/log/auto-cpufreq.log
+ elog ""
+ elog "Enable auto-cpufreq daemon service at boot:"
+ elog "systemd: systemctl enable --now auto-cpufreq"
+ elog "openrc: rc-update add auto-cpufreq default"
+ elog ""
+ elog "To view live log, run:"
+ elog "auto-cpufreq --stats"
+}
+
+pkg_postrm() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+
+ # Remove the override.pickle file and directory
+ if [[ -d "${EROOT}/var/lib/auto-cpufreq" ]]; then
+ rm -rf "${EROOT}"/var/lib/auto-cpufreq || die
+ fi
+
+ # Remove auto-cpufreq log file
+ if [ -f "${EROOT}/var/log/auto-cpufreq.log" ]; then
+ rm "${EROOT}"/var/log/auto-cpufreq.log || die
+ fi
+
+ # Remove auto-cpufreq-install script
+ if [ -f "${EROOT}/usr/bin/auto-cpufreq-install" ]; then
+ rm "${EROOT}"/usr/bin/auto-cpufreq-install || die
+ fi
+
+ # Restore original cpufreqctl binary if backup was made
+ if [ -f "${EROOT}/usr/bin/cpufreqctl.auto-cpufreq.bak" ]; then
+ mv "${EROOT}"/usr/bin/cpufreqctl.auto-cpufreq{.bak,} || die
+ fi
+ # Remove auto-cpufreq's cpufreqctl binary
+ # it overwrites cpufreqctl.sh
+ if [ -f "${EROOT}/usr/bin/cpufreqctl" ]; then
+ rm "${EROOT}"/usr/bin/cpufreqctl || die
+ fi
+}
diff --git a/sys-power/auto-cpufreq/auto-cpufreq-2.6.0.ebuild b/sys-power/auto-cpufreq/auto-cpufreq-2.6.0.ebuild
new file mode 100644
index 000000000000..113e821efbe3
--- /dev/null
+++ b/sys-power/auto-cpufreq/auto-cpufreq-2.6.0.ebuild
@@ -0,0 +1,142 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+DISTUTILS_USE_PEP517=poetry
+
+inherit distutils-r1 systemd xdg desktop
+
+DESCRIPTION="Automatic CPU speed & power optimizer for Linux"
+HOMEPAGE="https://github.com/AdnanHodzic/auto-cpufreq"
+SRC_URI="https://github.com/AdnanHodzic/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/distro[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pyasyncore[${PYTHON_USEDEP}]
+ dev-python/pygobject[${PYTHON_USEDEP}]
+ dev-python/pyinotify[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/urwid[${PYTHON_USEDEP}]
+"
+DEPEND="${RDEPEND}"
+
+DOCS=( README.md )
+
+src_prepare() {
+ default
+ # Update pyproject.toml to avoid dynamic_versioning in poetry
+ sed -i 's/poetry_dynamic_versioning.backend/poetry.core.masonry.api/' pyproject.toml || die
+ # Replace /usr/local/ paths with /usr/ in the source code to adhere to Gentoo standards
+ sed -i 's|/usr/local/share|/usr/share|g' scripts/auto-cpufreq-install.sh || die
+ sed -i 's|usr/local|usr|g' "scripts/${PN}.service" "scripts/${PN}-openrc" auto_cpufreq/core.py || die
+ sed -i 's|usr/local|usr|g' "scripts/${PN}.service" "scripts/${PN}-openrc" auto_cpufreq/gui/app.py || die
+ # Modify the service file to launch auto-cpufreq natively without the need for virtual environment
+ sed -i 's|WorkingDirectory=/opt/auto-cpufreq/venv||g' scripts/auto-cpufreq.service || die
+ sed -i 's|Environment=PYTHONPATH=/opt/auto-cpufreq||g' scripts/auto-cpufreq.service || die
+ sed -i 's|ExecStart=/opt/auto-cpufreq/venv/bin/python /opt/auto-cpufreq/venv/bin/auto-cpufreq --daemon|ExecStart=/usr/bin/auto-cpufreq --daemon|g' scripts/auto-cpufreq.service || die
+ # Change the path in core.py
+ sed -i 's|/opt/auto-cpufreq/override.pickle|/var/lib/auto-cpufreq/override.pickle|g' auto_cpufreq/core.py || die
+ distutils-r1_src_prepare
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # Create the scripts directory if it doesn't exist
+ dodir "/usr/share/${PN}/scripts"
+
+ # Create the directory for override.pickle
+ dodir /var/lib/auto-cpufreq
+ keepdir /var/lib/auto-cpufreq
+ fowners root:root /var/lib/auto-cpufreq
+ fperms 0755 /var/lib/auto-cpufreq
+
+ # Copy all scripts from the 'scripts' directory
+ for script in scripts/*; do
+ if [[ -f "$script" ]]; then
+ case "${script##*/}" in
+ *.sh|*.py|auto-cpufreq-*|cpufreqctl.sh)
+ exeinto "/usr/share/${PN}/scripts"
+ doexe "$script"
+ ;;
+ *)
+ insinto "/usr/share/${PN}/scripts"
+ doins "$script"
+ ;;
+ esac
+ fi
+ done
+
+ # Copy images
+ insinto "/usr/share/${PN}/images"
+ doins images/*
+
+ # Install icon
+ doicon -s 128 images/icon.png
+
+ # Install polkit policy
+ insinto /usr/share/polkit-1/actions
+ doins scripts/org.auto-cpufreq.pkexec.policy
+
+ # Install desktop file
+ domenu scripts/auto-cpufreq-gtk.desktop
+
+ # Install systemd service file
+ systemd_dounit "scripts/${PN}.service"
+
+ # Install OpenRC init script
+ newinitd "scripts/${PN}-openrc" "${PN}"
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ elog "The auto-cpufreq override file will be stored in /var/lib/auto-cpufreq/override.pickle"
+
+ # Create log file
+ touch /var/log/auto-cpufreq.log
+ elog ""
+ elog "Enable auto-cpufreq daemon service at boot:"
+ elog "systemd: systemctl enable --now auto-cpufreq"
+ elog "openrc: rc-update add auto-cpufreq default"
+ elog ""
+ elog "To view live log, run:"
+ elog "auto-cpufreq --stats"
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+
+ # Remove the override.pickle file and directory
+ if [[ -d "${EROOT}/var/lib/auto-cpufreq" ]]; then
+ rm -rf "${EROOT}"/var/lib/auto-cpufreq || die
+ fi
+
+ # Remove auto-cpufreq log file
+ if [ -f "${EROOT}/var/log/auto-cpufreq.log" ]; then
+ rm "${EROOT}"/var/log/auto-cpufreq.log || die
+ fi
+
+ # Remove auto-cpufreq-install script
+ if [ -f "${EROOT}/usr/bin/auto-cpufreq-install" ]; then
+ rm "${EROOT}"/usr/bin/auto-cpufreq-install || die
+ fi
+
+ # Restore original cpufreqctl binary if backup was made
+ if [ -f "${EROOT}/usr/bin/cpufreqctl.auto-cpufreq.bak" ]; then
+ mv "${EROOT}"/usr/bin/cpufreqctl.auto-cpufreq{.bak,} || die
+ fi
+ # Remove auto-cpufreq's cpufreqctl binary
+ # it overwrites cpufreqctl.sh
+ if [ -f "${EROOT}/usr/bin/cpufreqctl" ]; then
+ rm "${EROOT}"/usr/bin/cpufreqctl || die
+ fi
+}
diff --git a/sys-power/auto-cpufreq/metadata.xml b/sys-power/auto-cpufreq/metadata.xml
new file mode 100644
index 000000000000..742c44f05fcd
--- /dev/null
+++ b/sys-power/auto-cpufreq/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>pascal.jaeger@leimstift.de</email>
+ <name>Pascal Jäger</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">AdnanHodzic/auto-cpufreq</remote-id>
+ </upstream>
+ <longdescription lang="en">
+ Automatic CPU speed and power optimizer for Linux based on active monitoring
+ of laptop's battery state, CPU usage, CPU temperature and system load.
+ Ultimately allowing you to improve battery life without making any compromises.
+ </longdescription>
+</pkgmetadata>
diff --git a/sys-power/autosuspend/Manifest b/sys-power/autosuspend/Manifest
new file mode 100644
index 000000000000..70e13f8ab7a0
--- /dev/null
+++ b/sys-power/autosuspend/Manifest
@@ -0,0 +1,2 @@
+DIST autosuspend-10.1.0.gh.tar.gz 166538 BLAKE2B fab721de3238c4cd27d5ff75d15917bf1ceb2f0f7473c418fd5519f2ed698c95f16b0347d24750094f12dcfd990e9e4520f949871679919265ab956ee45e048a SHA512 77a10f50beb2a227267c3c71acf2881c1d2d1d5d028858b7506e97a509739aa56db7a68c132231278cabcac0f07df599ba6331d49496ee959cd1166fa5ea525a
+DIST autosuspend-7.2.0.gh.tar.gz 172910 BLAKE2B 81d411196ed0953cd9aff13c52c2ad3111a861fdbc7563cd534223c7b4c04c194fce44557eebf0cef8d0a6c94f1518eb9dfcf4e43220d8aae7b0beac1783c628 SHA512 7c8dd7afec4eca6b70f7800e3a94a89d461d836e5e725376fc2ded2b4bd2ec2335bf8ceeffe83f9db513703358a5f03e258f69e9a6a92874071996f84cf7857f
diff --git a/sys-power/autosuspend/autosuspend-10.1.0.ebuild b/sys-power/autosuspend/autosuspend-10.1.0.ebuild
new file mode 100644
index 000000000000..d0be3fba2ddf
--- /dev/null
+++ b/sys-power/autosuspend/autosuspend-10.1.0.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A daemon to automatically suspend and wake up a system"
+HOMEPAGE="
+ https://github.com/languitar/autosuspend
+ https://autosuspend.readthedocs.io
+"
+SRC_URI="
+ https://github.com/languitar/${PN}/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64"
+IUSE="mpd"
+
+RDEPEND="
+ dev-python/dbus-python[${PYTHON_USEDEP}]
+ dev-python/portalocker[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pygobject:3[${PYTHON_USEDEP}]
+ mpd? ( dev-python/python-mpd2[${PYTHON_USEDEP}] )
+"
+
+BDEPEND="
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/icalendar[${PYTHON_USEDEP}]
+ dev-python/jsonpath-ng[${PYTHON_USEDEP}]
+ dev-python/python-dbusmock[${PYTHON_USEDEP}]
+ dev-python/python-mpd2[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/tzlocal[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-datadir pytest-httpserver pytest-mock )
+EPYTEST_DESELECT=(
+ tests/test_checks_util.py::TestNetworkMixin::test_file_url
+)
+
+distutils_enable_tests pytest
+distutils_enable_sphinx doc/source \
+ dev-python/furo \
+ dev-python/recommonmark \
+ dev-python/sphinx-autodoc-typehints \
+ dev-python/sphinx-issues \
+ dev-python/sphinxcontrib-plantuml
+
+python_test() {
+ # Disable code coverage in tests by setting addopts to the empty value.
+ epytest -o addopts=
+}
+
+src_install() {
+ distutils-r1_src_install
+ mv "${ED}/usr/etc" "${ED}/etc" || die
+}
diff --git a/sys-power/autosuspend/autosuspend-7.2.0.ebuild b/sys-power/autosuspend/autosuspend-7.2.0.ebuild
new file mode 100644
index 000000000000..c18514dfa870
--- /dev/null
+++ b/sys-power/autosuspend/autosuspend-7.2.0.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A daemon to automatically suspend and wake up a system"
+HOMEPAGE="
+ https://github.com/languitar/autosuspend
+ https://autosuspend.readthedocs.io
+"
+SRC_URI="
+ https://github.com/languitar/${PN}/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64"
+IUSE="dbus mpd test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-python/portalocker[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dbus? ( dev-python/dbus-python[${PYTHON_USEDEP}] )
+ mpd? ( dev-python/python-mpd2[${PYTHON_USEDEP}] )
+"
+
+BDEPEND="
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/icalendar[${PYTHON_USEDEP}]
+ dev-python/jsonpath-ng[${PYTHON_USEDEP}]
+ dev-python/pygobject[${PYTHON_USEDEP}]
+ dev-python/pytest-datadir[${PYTHON_USEDEP}]
+ dev-python/pytest-httpserver[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/python-dbusmock[${PYTHON_USEDEP}]
+ dev-python/python-mpd2[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/tzlocal[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_DESELECT=(
+ tests/test_checks_util.py::TestNetworkMixin::test_file_url
+)
+
+distutils_enable_tests pytest
+distutils_enable_sphinx doc/source \
+ dev-python/furo \
+ dev-python/recommonmark \
+ dev-python/sphinx-autodoc-typehints \
+ dev-python/sphinx-issues \
+ dev-python/sphinxcontrib-plantuml
+
+python_test() {
+ # Disable code coverage in tests by setting addopts to the empty value.
+ epytest -o addopts=
+}
+
+src_install() {
+ distutils-r1_src_install
+ mv "${ED}/usr/etc" "${ED}/etc" || die
+}
diff --git a/sys-power/autosuspend/metadata.xml b/sys-power/autosuspend/metadata.xml
new file mode 100644
index 000000000000..7c2792834313
--- /dev/null
+++ b/sys-power/autosuspend/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+ <use>
+ <flag name="mpd">Enable support for the Music Player Daemon</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">languitar/autosuspend</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/bbswitch/Manifest b/sys-power/bbswitch/Manifest
new file mode 100644
index 000000000000..959fb69350c2
--- /dev/null
+++ b/sys-power/bbswitch/Manifest
@@ -0,0 +1 @@
+DIST bbswitch-0.8_p20211129.tar.gz 15889 BLAKE2B f81343529957603734bc29453ae9513eb5e19a87425adb8975c621357c7caa0f353e06367cc186230adb28f75ae48330a58ba904854415bc118c8573f71566a0 SHA512 e7873ae34aed13e8f4d5709fede763552c28528e853ad02ee4a4377c043f1ce2ae5f7fc3e831ea1dc65f5a1c0a5ddded93b451258b539ed72b0e1c196676a677
diff --git a/sys-power/bbswitch/bbswitch-0.8_p20211129-r1.ebuild b/sys-power/bbswitch/bbswitch-0.8_p20211129-r1.ebuild
new file mode 100644
index 000000000000..cbcafe0ac39e
--- /dev/null
+++ b/sys-power/bbswitch/bbswitch-0.8_p20211129-r1.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit linux-mod-r1
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/Bumblebee-Project/${PN}.git"
+ EGIT_BRANCH="develop"
+else
+ COMMIT="23891174a80ea79c7720bcc7048a5c2bfcde5cd9"
+ SRC_URI="https://github.com/Bumblebee-Project/bbswitch/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 x86"
+ S="${WORKDIR}/bbswitch-${COMMIT}"
+fi
+
+DESCRIPTION="Toggle discrete NVIDIA Optimus graphics card"
+HOMEPAGE="https://github.com/Bumblebee-Project/bbswitch"
+
+LICENSE="GPL-3+"
+SLOT="0"
+
+DEPEND="
+ virtual/linux-sources
+ sys-kernel/linux-headers
+"
+
+PATCHES=( "${FILESDIR}/${PN}-kernel-5.18.patch" )
+
+pkg_setup() {
+ linux-mod-r1_pkg_setup
+}
+
+src_prepare() {
+ # Fix build failure, bug #513542 and bug #761370
+ sed "s%^KDIR :=.*%KDIR := ${KV_OUT_DIR:-$KERNEL_DIR}%g" -i Makefile || die
+
+ default
+}
+
+src_compile() {
+ local modlist=( bbswitch=acpi )
+ local modargs=(
+ KVERSION=${KV_FULL}
+ )
+ linux-mod-r1_src_compile
+}
+
+src_install() {
+ einstalldocs
+
+ insinto /etc/modprobe.d
+ newins "${FILESDIR}"/bbswitch.modprobe bbswitch.conf
+ linux-mod-r1_src_install
+}
diff --git a/sys-power/bbswitch/files/bbswitch-kernel-5.18.patch b/sys-power/bbswitch/files/bbswitch-kernel-5.18.patch
new file mode 100644
index 000000000000..07cecd4cdf41
--- /dev/null
+++ b/sys-power/bbswitch/files/bbswitch-kernel-5.18.patch
@@ -0,0 +1,19 @@
+diff -u -r bbswitch-0.8/bbswitch.c bbswitch-0.8-5.18/bbswitch.c
+--- bbswitch-0.8/bbswitch.c 2022-05-24 20:26:22.184553495 +0000
++++ bbswitch-0.8-5.18/bbswitch.c 2022-05-24 20:29:00.797008130 +0000
+@@ -264,10 +264,15 @@
+ pci_disable_device(dis_dev);
+ do {
+ struct acpi_device *ad = NULL;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
++ ad = acpi_fetch_acpi_dev(dis_handle);
++ if (!ad) {
++#else
+ int r;
+
+ r = acpi_bus_get_device(dis_handle, &ad);
+ if (r || !ad) {
++#endif
+ pr_warn("Cannot get ACPI device for PCI device\n");
+ break;
+ }
diff --git a/sys-power/bbswitch/files/bbswitch.modprobe b/sys-power/bbswitch/files/bbswitch.modprobe
new file mode 100644
index 000000000000..dd6500c77131
--- /dev/null
+++ b/sys-power/bbswitch/files/bbswitch.modprobe
@@ -0,0 +1 @@
+options bbswitch load_state=-1 unload_state=-1 \ No newline at end of file
diff --git a/sys-power/bbswitch/metadata.xml b/sys-power/bbswitch/metadata.xml
new file mode 100644
index 000000000000..e68ae9aee340
--- /dev/null
+++ b/sys-power/bbswitch/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>pacho@gentoo.org</email>
+ <name>Pacho Ramos</name>
+ </maintainer>
+ <maintainer type="person" proxied="yes">
+ <email>rei4dan@gmail.com</email>
+ <name>My Th</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <longdescription>
+ Kernel module which automatically detects the required ACPI calls for two
+ kinds of Optimus laptops for safe disabling/enabling the discrete graphics card.
+ </longdescription>
+ <upstream>
+ <remote-id type="github">Bumblebee-Project/bbswitch</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/cpupower/Manifest b/sys-power/cpupower/Manifest
new file mode 100644
index 000000000000..4e5294889f76
--- /dev/null
+++ b/sys-power/cpupower/Manifest
@@ -0,0 +1,3 @@
+DIST cpupower-6.10.tar.xz 96672 BLAKE2B 379e1ce6a098fcbb8a16e1388a096e19503eda83babb0179cf056adadf655ad67ddb5bb2c702f4e8b929301c4cdc60690ed10c1823faed048f2d2b4449fadeaa SHA512 58734cead2a0366e08edff5864b1d28b4af1473c860d7b032a880279a792c3d545f97a9349fb00bbd90fbaced817e31b5e4a8ea5d2c4d0bc9a40e51df4fca0e6
+DIST cpupower-6.16.tar.xz 105600 BLAKE2B 5315844fb8ebc07f35656012d2f8a58763d1e163056de9ddd4efa12a442c986e5d10697ab91e6c75d24d5d8c5abed70aefb278c27b87a91c02a6227fb855cdac SHA512 0b775fed3d974d5cb42ca3a28b283709df3ec304e9e58b514a03943ebd05a2d7b32f6897bd723a4ee8e0a9f2625b9ca655d68b7eb2d688e826a62e15a4fa7783
+DIST cpupower-6.2.tar.xz 97292 BLAKE2B 08812ff41bb488d72fb9686e1d40bd369669832f5e23c13b06d14a418209c5db57ebed10a3e17ffd7102d20c0905a72c166dd0cfc4af999aba9d4a1aa38c14c5 SHA512 e7d910865da3cb3a1ff1595f67271e586b40244567226f8aa84b744a57add7e582e7d0ec0709ca31e7ec49a46d48d21957763f9d4fc7cd892fe014da86ee6cb0
diff --git a/sys-power/cpupower/cpupower-6.10.ebuild b/sys-power/cpupower/cpupower-6.10.ebuild
new file mode 100644
index 000000000000..0c51b812915c
--- /dev/null
+++ b/sys-power/cpupower/cpupower-6.10.ebuild
@@ -0,0 +1,66 @@
+# Copyright 2013-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit systemd toolchain-funcs
+
+DESCRIPTION="Shows and sets processor power related values"
+HOMEPAGE="https://www.kernel.org/"
+SRC_URI="https://dev.gentoo.org/~floppym/dist/${P}.tar.xz"
+
+# Run from a kernel git repo to generate a tarball for version x.y:
+# PV=x.y
+# git archive --prefix=cpupower-${PV}/ v{PV} Makefile tools/scripts/Makefile.arch \
+# tools/power/cpupower | xz > /tmp/cpupower-${PV}.tar.xz
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="nls"
+
+# File collision w/ headers of the deprecated cpufrequtils
+RDEPEND="sys-apps/pciutils"
+DEPEND="${RDEPEND}
+ virtual/os-headers
+ nls? ( sys-devel/gettext )"
+
+PATCHES=(
+ "${FILESDIR}/cpupower-5.4-cflags.patch"
+)
+
+src_configure() {
+ export bindir="${EPREFIX}/usr/bin"
+ export sbindir="${EPREFIX}/usr/sbin"
+ export mandir="${EPREFIX}/usr/share/man"
+ export includedir="${EPREFIX}/usr/include"
+ export libdir="${EPREFIX}/usr/$(get_libdir)"
+ export localedir="${EPREFIX}/usr/share/locale"
+ export docdir="${EPREFIX}/usr/share/doc/${PF}"
+ export confdir="${EPREFIX}/etc"
+ export bash_completion_dir="${EPREFIX}/usr/share/bash-completion/completions"
+ export V=1
+ export NLS=$(usex nls true false)
+}
+
+src_compile() {
+ myemakeargs=(
+ AR="$(tc-getAR)"
+ CC="$(tc-getCC)"
+ LD="$(tc-getCC)"
+ )
+ emake -C tools/power/cpupower "${myemakeargs[@]}"
+}
+
+src_install() {
+ cd tools/power/cpupower || die
+ emake "${myemakeargs[@]}" DESTDIR="${D}" install
+ doheader lib/cpupower.h
+ einstalldocs
+
+ newconfd "${FILESDIR}"/conf.d-r2 cpupower
+ newinitd "${FILESDIR}"/init.d-r4 cpupower
+
+ systemd_dounit "${FILESDIR}"/cpupower-frequency-set.service
+ systemd_install_serviced "${FILESDIR}"/cpupower-frequency-set.service.conf
+}
diff --git a/sys-power/cpupower/cpupower-6.16-r1.ebuild b/sys-power/cpupower/cpupower-6.16-r1.ebuild
new file mode 100644
index 000000000000..9ed6363cf23d
--- /dev/null
+++ b/sys-power/cpupower/cpupower-6.16-r1.ebuild
@@ -0,0 +1,80 @@
+# Copyright 2013-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit bash-completion-r1 eapi9-ver systemd toolchain-funcs
+
+DESCRIPTION="Shows and sets processor power related values"
+HOMEPAGE="https://www.kernel.org/"
+SRC_URI="https://dev.gentoo.org/~floppym/dist/${P}.tar.xz"
+
+# Run from a kernel git repo to generate a tarball for version x.y:
+# PV=x.y
+# git archive --prefix=cpupower-${PV}/ v{PV} Makefile tools/power/cpupower |
+# xz > /tmp/cpupower-${PV}.tar.xz
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="nls"
+
+# File collision w/ headers of the deprecated cpufrequtils
+RDEPEND="
+ sys-apps/pciutils
+"
+DEPEND="${RDEPEND}
+ virtual/os-headers
+ nls? ( sys-devel/gettext )
+"
+BDEPEND="
+ sys-apps/which
+"
+
+PATCHES=(
+ "${FILESDIR}/cpupower-5.4-cflags.patch"
+)
+
+src_configure() {
+ export bindir="${EPREFIX}/usr/bin"
+ export sbindir="${EPREFIX}/usr/sbin"
+ export mandir="${EPREFIX}/usr/share/man"
+ export libdir="${EPREFIX}/usr/$(get_libdir)"
+ export libexecdir="${EPREFIX}/usr/libexec"
+ export unitdir="$(systemd_get_systemunitdir)"
+ export includedir="${EPREFIX}/usr/include"
+ export localedir="${EPREFIX}/usr/share/locale"
+ export docdir="${EPREFIX}/usr/share/doc/${PF}"
+ export confdir="${EPREFIX}/etc/"
+ export bash_completion_dir="$(get_bashcompdir)"
+ export V=1
+ export NLS=$(usex nls true false)
+}
+
+src_compile() {
+ cd tools/power/cpupower || die
+ myemakeargs=(
+ AR="$(tc-getAR)"
+ CC="$(tc-getCC)"
+ LD="$(tc-getCC)"
+ )
+ emake "${myemakeargs[@]}"
+}
+
+src_install() {
+ cd tools/power/cpupower || die
+ emake "${myemakeargs[@]}" DESTDIR="${D}" install
+ doheader lib/cpupower.h
+ einstalldocs
+
+ newconfd "${FILESDIR}"/conf.d-r2 cpupower
+ newinitd "${FILESDIR}"/init.d-r4 cpupower
+}
+
+pkg_postinst() {
+ if ver_replacing -lt 6.16; then
+ ewarn "Starting with cpupower-1.16, an upstream systemd unit is provided."
+ ewarn "See cpupower.service and /etc/cpupower-service.conf."
+ ewarn "Settings must be migrated manually."
+ fi
+}
diff --git a/sys-power/cpupower/cpupower-6.2.ebuild b/sys-power/cpupower/cpupower-6.2.ebuild
new file mode 100644
index 000000000000..c536b4bdaa95
--- /dev/null
+++ b/sys-power/cpupower/cpupower-6.2.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2013-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit systemd toolchain-funcs
+
+DESCRIPTION="Shows and sets processor power related values"
+HOMEPAGE="https://www.kernel.org/"
+SRC_URI="https://dev.gentoo.org/~floppym/dist/${P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86"
+IUSE="nls"
+
+# File collision w/ headers of the deprecated cpufrequtils
+RDEPEND="sys-apps/pciutils"
+DEPEND="${RDEPEND}
+ virtual/os-headers
+ nls? ( sys-devel/gettext )"
+
+PATCHES=(
+ "${FILESDIR}/cpupower-5.4-cflags.patch"
+)
+
+src_configure() {
+ export bindir="${EPREFIX}/usr/bin"
+ export sbindir="${EPREFIX}/usr/sbin"
+ export mandir="${EPREFIX}/usr/share/man"
+ export includedir="${EPREFIX}/usr/include"
+ export libdir="${EPREFIX}/usr/$(get_libdir)"
+ export localedir="${EPREFIX}/usr/share/locale"
+ export docdir="${EPREFIX}/usr/share/doc/${PF}"
+ export confdir="${EPREFIX}/etc"
+ export bash_completion_dir="${EPREFIX}/usr/share/bash-completion/completions"
+ export V=1
+ export NLS=$(usex nls true false)
+}
+
+src_compile() {
+ myemakeargs=(
+ AR="$(tc-getAR)"
+ CC="$(tc-getCC)"
+ LD="$(tc-getCC)"
+ )
+ emake -C tools/power/cpupower "${myemakeargs[@]}"
+}
+
+src_install() {
+ cd tools/power/cpupower || die
+ emake "${myemakeargs[@]}" DESTDIR="${D}" install
+ doheader lib/cpupower.h
+ einstalldocs
+
+ newconfd "${FILESDIR}"/conf.d-r2 cpupower
+ newinitd "${FILESDIR}"/init.d-r4 cpupower
+
+ systemd_dounit "${FILESDIR}"/cpupower-frequency-set.service
+ systemd_install_serviced "${FILESDIR}"/cpupower-frequency-set.service.conf
+}
diff --git a/sys-power/cpupower/files/conf.d-r2 b/sys-power/cpupower/files/conf.d-r2
new file mode 100644
index 000000000000..1e67ed04e254
--- /dev/null
+++ b/sys-power/cpupower/files/conf.d-r2
@@ -0,0 +1,36 @@
+# /etc/conf.d/cpupower: config file for /etc/init.d/cpupower
+
+# Options when starting cpufreq (given to the `cpupower` program)
+# Possible options are:
+# -g --governor <GOV> (ie: ondemand, performance, or powersave)
+# -d --min <FREQ> (ie: 1000MHz)
+# -u --max <FREQ> (ie: 2000MHz)
+# -f --freq <FREQ> (requires userspace governor, this *can not* be combined with
+# with any other parameters).
+# Frequencies can be passed in Hz, kHz (default), MHz, GHz, or THz by postfixing the
+# value with the wanted unit name, without any space.
+# (frequency in kHz =^ Hz * 0.001 =^ MHz * 1000 =^ GHz * 1000000).
+
+START_OPTS="--governor ondemand"
+
+# Options when stopping cpufreq (given to the `cpupower` program)
+# This option can be used to change governer on stop. Leaving it empty will ensure
+# the governer remains on the one provided above.
+STOP_OPTS=""
+
+# Extra settings to write to sysfs cpufreq values.
+#
+# up_threshold: threshold for stepping up frequency, where the value represents
+# the percentage of cpu load.
+#
+# down_threshold: threshold for stepping down frequency, where the value
+# represents the percentage of cpu load.
+#
+# sampling_down_factor: determines how frequently the governor polls the cpu, a
+# value greater than 1 improves performance by reducing the polling when the
+# load is high. This tunable has no effect on behavior at lower CPU frequencies.
+#
+# ignore_nice_load: when set to '1' the processes that are run with a 'nice'
+# value will not count in the usage calculation.
+
+#SYSFS_EXTRA="ondemand/ignore_nice_load=1 ondemand/up_threshold=75 ondemand/sampling_down_factor=10"
diff --git a/sys-power/cpupower/files/cpupower-5.4-cflags.patch b/sys-power/cpupower/files/cpupower-5.4-cflags.patch
new file mode 100644
index 000000000000..f21435a0cd02
--- /dev/null
+++ b/sys-power/cpupower/files/cpupower-5.4-cflags.patch
@@ -0,0 +1,32 @@
+From 6ae1f1b03aaaee6a9a56040d3ba7af6bf6648ad6 Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Wed, 27 Nov 2019 10:51:15 -0500
+Subject: [PATCH] Respect user CFLAGS
+
+---
+ tools/power/cpupower/Makefile | 9 +--------
+ 1 file changed, 1 insertion(+), 8 deletions(-)
+
+diff --git a/tools/power/cpupower/Makefile b/tools/power/cpupower/Makefile
+index c8622497ef23..f17e8c94da16 100644
+--- a/tools/power/cpupower/Makefile
++++ b/tools/power/cpupower/Makefile
+@@ -178,14 +178,7 @@ else
+ endif
+ export QUIET ECHO
+
+-# if DEBUG is enabled, then we do not strip or optimize
+-ifeq ($(strip $(DEBUG)),true)
+- override CFLAGS += -O1 -g -DDEBUG
+- STRIPCMD = /bin/true -Since_we_are_debugging
+-else
+- override CFLAGS += $(OPTIMIZATION) -fomit-frame-pointer
+- STRIPCMD = $(STRIP) -s --remove-section=.note --remove-section=.comment
+-endif
++STRIPCMD = true
+
+
+ # the actual make rules
+--
+2.24.0
+
diff --git a/sys-power/cpupower/files/cpupower-frequency-set.service b/sys-power/cpupower/files/cpupower-frequency-set.service
new file mode 100644
index 000000000000..8f2f4d9b7628
--- /dev/null
+++ b/sys-power/cpupower/files/cpupower-frequency-set.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=CPU Frequency Scaling
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/cpupower frequency-set $OPTS
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sys-power/cpupower/files/cpupower-frequency-set.service.conf b/sys-power/cpupower/files/cpupower-frequency-set.service.conf
new file mode 100644
index 000000000000..969c8ab2f214
--- /dev/null
+++ b/sys-power/cpupower/files/cpupower-frequency-set.service.conf
@@ -0,0 +1,2 @@
+[Service]
+Environment="OPTS=-g ondemand"
diff --git a/sys-power/cpupower/files/init.d-r4 b/sys-power/cpupower/files/init.d-r4
new file mode 100644
index 000000000000..febed865b250
--- /dev/null
+++ b/sys-power/cpupower/files/init.d-r4
@@ -0,0 +1,41 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+CPUFREQ_SYSFS=/sys/devices/system/cpu/cpufreq
+
+change() {
+ local c ret=0 opts="$1"
+ if [ -n "$opts" ] ; then
+ ebegin "Running cpupower -c all frequency-set ${opts}"
+ cpupower -c all frequency-set ${opts} >/dev/null 2>&1
+ : $(( ret += $? ))
+ eend ${ret}
+
+ if [ -d ${CPUFREQ_SYSFS} ] && [ -n "${SYSFS_EXTRA}" ] ; then
+ c=1
+ einfo "Setting extra options: ${SYSFS_EXTRA}"
+ if cd ${CPUFREQ_SYSFS} ; then
+ local o v
+ for o in ${SYSFS_EXTRA} ; do
+ v=${o#*=}
+ o=${o%%=*}
+ echo ${v} > ${o} || break
+ done
+ c=0
+ fi
+ eend ${c}
+ : $(( ret += c ))
+ fi
+ fi
+
+ return ${ret}
+}
+
+start() {
+ change "${START_OPTS}"
+}
+
+stop() {
+ change "${STOP_OPTS}"
+}
diff --git a/sys-power/cpupower/metadata.xml b/sys-power/cpupower/metadata.xml
new file mode 100644
index 000000000000..afa419e5b84a
--- /dev/null
+++ b/sys-power/cpupower/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>floppym@gentoo.org</email>
+ <name>Mike Gilbert</name>
+ </maintainer>
+ <slots>
+ <subslots>Subslots correspond to major version of libcpupower</subslots>
+ </slots>
+</pkgmetadata>
diff --git a/sys-power/envycontrol/Manifest b/sys-power/envycontrol/Manifest
new file mode 100644
index 000000000000..49f5eaa2c913
--- /dev/null
+++ b/sys-power/envycontrol/Manifest
@@ -0,0 +1 @@
+DIST envycontrol-3.5.2.tar.gz 79309 BLAKE2B 268d2919cfc63b4aed38ea9314363dbb04dd1eb3bd35780fcd85090d416307cbec99a179330e8f1cb748a392daa2ec75a470d2eda9a34ebc2cb0a66b83b953c4 SHA512 ad42c61161e10d6c2922261589b9f27015888eed73268fb02da0aa2f319e3eaa69205f5dfbe2dfc5bea36116e1aecb0bd9d0939202387275043f05f47161aa9c
diff --git a/sys-power/envycontrol/envycontrol-3.5.2.ebuild b/sys-power/envycontrol/envycontrol-3.5.2.ebuild
new file mode 100644
index 000000000000..034d5366247c
--- /dev/null
+++ b/sys-power/envycontrol/envycontrol-3.5.2.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Easy GPU switching for Nvidia Optimus laptops under Linux "
+HOMEPAGE="https://github.com/bayasdev/envycontrol"
+SRC_URI="https://github.com/bayasdev/envycontrol/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+IUSE="+systemd"
+
+REQUIRED_USE="systemd"
+
+RDEPEND="
+ x11-drivers/nvidia-drivers[persistenced]
+ systemd? ( sys-apps/systemd )
+"
diff --git a/sys-power/envycontrol/envycontrol-9999.ebuild b/sys-power/envycontrol/envycontrol-9999.ebuild
new file mode 100644
index 000000000000..8b2e423fb8ee
--- /dev/null
+++ b/sys-power/envycontrol/envycontrol-9999.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit git-r3 distutils-r1
+
+EGIT_REPO_URI="https://github.com/bayasdev/envycontrol.git"
+DESCRIPTION="Easy GPU switching for Nvidia Optimus laptops under Linux"
+HOMEPAGE="https://github.com/bayasdev/envycontrol"
+
+LICENSE="MIT"
+SLOT="0"
+
+IUSE="+systemd"
+
+REQUIRED_USE="systemd"
+
+RDEPEND="
+ x11-drivers/nvidia-drivers[persistenced]
+ systemd? ( sys-apps/systemd )
+"
diff --git a/sys-power/envycontrol/metadata.xml b/sys-power/envycontrol/metadata.xml
new file mode 100644
index 000000000000..53f5fc5ed86c
--- /dev/null
+++ b/sys-power/envycontrol/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>gonegrier.duarte@gmail.com</email>
+ <name>Gonçalo Negrier Duarte</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">bayasdev/envycontrol</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/fan2go-tui/Manifest b/sys-power/fan2go-tui/Manifest
new file mode 100644
index 000000000000..2b072bae3388
--- /dev/null
+++ b/sys-power/fan2go-tui/Manifest
@@ -0,0 +1,2 @@
+DIST fan2go-tui-0.2.1-vendor.tar.xz 3363352 BLAKE2B 02941eebcfa20a11d2b04bf14bf96843dfdf3773689b51e23283237a400a62bc11c2e5181b0e3df4964ecb992b06b09563ec4161355a4043647b23d46d6f3a35 SHA512 e2568cbf6a083d16193e541d4da86b6c5ccd76e6d731119f1b0f52256015a3abd38145bde13839e968ac284cba51be9af8c532d305ae8e02e60df0999cf394d8
+DIST fan2go-tui-0.2.1.tar.gz 49286 BLAKE2B 6254a803bc14e6eff0f19b64a8445e42f92b2158a5facb4194bf0ec12484a6a1369be3f2d235caf593c759dc432a761e7b3de196cb0fd353217fae77ec621fe8 SHA512 f45bc6c6e3266456027a56b69929b8634d3a2cd6a77e84e41ab56a2d2f183b9602ff1c0c3b35a334c655e4ff59258e89e19425b953538f62fc04f18178083932
diff --git a/sys-power/fan2go-tui/fan2go-tui-0.2.1.ebuild b/sys-power/fan2go-tui/fan2go-tui-0.2.1.ebuild
new file mode 100644
index 000000000000..719bbb79df91
--- /dev/null
+++ b/sys-power/fan2go-tui/fan2go-tui-0.2.1.ebuild
@@ -0,0 +1,54 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit go-module shell-completion
+
+DESCRIPTION="A simple daemon providing dynamic fan speed control"
+HOMEPAGE="https://github.com/markusressel/fan2go-tui"
+SRC_URI="https://github.com/markusressel/fan2go-tui/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+SRC_URI+=" https://github.com/dsafxP/gentoo-distfiles/releases/download/${P}/${P}-vendor.tar.xz"
+
+LICENSE="AGPL-3"
+# Dependent licenses
+LICENSE+=" Apache-2.0 BSD-2 BSD MIT MPL-2.0"
+SLOT="0"
+
+KEYWORDS="~amd64"
+
+RDEPEND="sys-power/fan2go"
+
+src_compile() {
+ local src_date_epoch=$(date +%s || die)
+ local date=$(date -u -d @${src_date_epoch} +"%Y-%m-%dT%H:%M:%SZ" || die)
+ local package=${HOMEPAGE#*://}
+
+ ego build ${GOFLAGS} -v -x \
+ -ldflags "-extldflags=-Wl,-z,lazy \
+ -X ${PN}/cmd/global.Version=${PN} \
+ -X ${package}/cmd/global.Version=${PN} \
+ -X ${PN}/cmd/global.Date=${date} \
+ -X ${package}/cmd/global.Date=${date}" \
+ -tags netgo -o ${PN} main.go
+
+ ./${PN} completion fish > ${PN}.fish || die
+ ./${PN} completion bash > ${PN}.bash || die
+ ./${PN} completion zsh > ${PN}.zsh || die
+}
+
+src_install() {
+ dobin ${PN}
+ einstalldocs
+
+ insinto /etc/${PN}
+ doins ${PN}.yaml
+
+ newbashcomp "${PN}.bash" "${PN}"
+ dofishcomp "${PN}.fish"
+ newzshcomp "${PN}.zsh" "_${PN}"
+}
+
+pkg_postinst() {
+ elog "You will need to enable fan2go API in its configuration"
+}
diff --git a/sys-power/fan2go-tui/metadata.xml b/sys-power/fan2go-tui/metadata.xml
new file mode 100644
index 000000000000..69cfe5f67316
--- /dev/null
+++ b/sys-power/fan2go-tui/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>ghostyn678+git@gmail.com</email>
+ <name>dsaf</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">markusressel/fan2go-tui</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/fan2go/Manifest b/sys-power/fan2go/Manifest
new file mode 100644
index 000000000000..87b6b91e3836
--- /dev/null
+++ b/sys-power/fan2go/Manifest
@@ -0,0 +1,2 @@
+DIST fan2go-0.13.0-vendor.tar.xz 2502196 BLAKE2B 27296a117d6f9f4c683f0ae369b1db94f216d890d473ea68e50b7f1ea766c8ff91de53610a0393f9aee0ef95da283fc8c8ce6cec2f18aca3c289b94806ac8624 SHA512 50f0da6b564c86221f27a5ebb466753105caab4cc6a6037290f28286dbd79eaab724aae52120075e2311844a9f1f7b7ab0054a3c1dd7f745cf28ad653b6cf5e8
+DIST fan2go-0.13.0.tar.gz 240777 BLAKE2B e181d6585ac712a909eecf677df5786b995c9addb84717048708189e913fe7d7329ca9c741aab32cbeec18310fa76dfe1705370898b10ad75f55a2e44098fa39 SHA512 650b486ad72e7ea5e16f97d3881bdbd3e96d0d4adec156ce13e4f5088bdff288785b7d4aa8015397aed7f81c069231448057a2509ff085d24d049f6fdf1e9b52
diff --git a/sys-power/fan2go/fan2go-0.13.0.ebuild b/sys-power/fan2go/fan2go-0.13.0.ebuild
new file mode 100644
index 000000000000..63ac33155ef7
--- /dev/null
+++ b/sys-power/fan2go/fan2go-0.13.0.ebuild
@@ -0,0 +1,54 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit go-module shell-completion systemd
+
+DESCRIPTION="A simple daemon providing dynamic fan speed control"
+HOMEPAGE="https://github.com/markusressel/fan2go"
+SRC_URI="https://github.com/markusressel/fan2go/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+SRC_URI+=" https://github.com/dsafxP/gentoo-distfiles/releases/download/${P}a/${P}-vendor.tar.xz"
+
+LICENSE="AGPL-3"
+# Dependent licenses
+LICENSE+=" Apache-2.0 BSD ISC MIT"
+SLOT="0"
+
+KEYWORDS="~amd64"
+
+BDEPEND=">=dev-lang/go-1.25.0"
+DEPEND="sys-apps/lm-sensors"
+RDEPEND="${DEPEND}"
+
+src_compile() {
+ local src_date_epoch=$(date +%s || die)
+ local date=$(date -u -d @${src_date_epoch} +"%Y-%m-%dT%H:%M:%SZ" || die)
+ local package=${HOMEPAGE#*://}
+
+ ego build ${GOFLAGS} -v -x \
+ -ldflags "-extldflags=-Wl,-z,lazy \
+ -X ${PN}/cmd/global.Version=${PN} \
+ -X ${package}/cmd/global.Version=${PN} \
+ -X ${PN}/cmd/global.Date=${date} \
+ -X ${package}/cmd/global.Date=${date}" \
+ -tags netgo -o ${PN} main.go
+
+ ./${PN} completion fish > ${PN}.fish || die
+ ./${PN} completion bash > ${PN}.bash || die
+ ./${PN} completion zsh > ${PN}.zsh || die
+}
+
+src_install() {
+ dobin ${PN}
+ einstalldocs
+
+ systemd_dounit fan2go.service
+
+ insinto /etc/fan2go
+ doins fan2go.yaml
+
+ newbashcomp "${PN}.bash" "${PN}"
+ dofishcomp "${PN}.fish"
+ newzshcomp "${PN}.zsh" "_${PN}"
+}
diff --git a/sys-power/fan2go/metadata.xml b/sys-power/fan2go/metadata.xml
new file mode 100644
index 000000000000..bdbd4c9b748b
--- /dev/null
+++ b/sys-power/fan2go/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>ghostyn678+git@gmail.com</email>
+ <name>dsaf</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">markusressel/fan2go</remote-id>
+ <bugs-to>https://github.com/markusressel/fan2go/issues</bugs-to>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/gtherm/Manifest b/sys-power/gtherm/Manifest
new file mode 100644
index 000000000000..c34ac117d162
--- /dev/null
+++ b/sys-power/gtherm/Manifest
@@ -0,0 +1 @@
+DIST gtherm-0.0.3.tar.gz 39400 BLAKE2B fbd0e36b7708d8d6c8f2b620ed3e78d9276b910f93e0d6854370d6b4962e875e5967e82c857ccb892e71ebed6ecbe2a35f9ee734ccbfac300ebb7ab31a6c9b85 SHA512 903226a6bd0686ac4b02a0539bd392fda22202ff8c7d8f0c5e4ef9fa96fe4b6a5841ef07c82c59781de85c8cd8f8ec02411af89f605a88731a55c17df3d97ba8
diff --git a/sys-power/gtherm/gtherm-0.0.3.ebuild b/sys-power/gtherm/gtherm-0.0.3.ebuild
new file mode 100644
index 000000000000..209df7a5e2a5
--- /dev/null
+++ b/sys-power/gtherm/gtherm-0.0.3.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+VALA_USE_DEPEND="vapigen"
+
+inherit meson systemd vala
+
+DESCRIPTION="A simple daemon to monitor thermal zones and cooling devices"
+HOMEPAGE="https://source.puri.sm/Librem5/gtherm"
+SRC_URI="https://source.puri.sm/Librem5/${PN}/-/archive/v${PV}/${PN}-v${PV}.tar.gz -> ${P}.tar.gz"
+
+S="${WORKDIR}/${PN}-v${PV}"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+IUSE="+introspection +vala"
+REQUIRED_USE="vala? ( introspection )"
+
+DEPEND="
+ dev-libs/gobject-introspection
+ dev-util/gdbus-codegen
+ vala? ( $(vala_depend) )
+"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ eapply_user
+ use vala && vala_src_prepare
+}
+
+src_install() {
+ meson_src_install
+ systemd_newuserunit "${S}"/debian/gthd.user.service "gthd.service"
+}
+
+pkg_postinst() {
+ systemd_reenable --global gthd
+}
diff --git a/sys-power/gtherm/metadata.xml b/sys-power/gtherm/metadata.xml
new file mode 100644
index 000000000000..3b196a0080bf
--- /dev/null
+++ b/sys-power/gtherm/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>gjdijkman@gjdwebserver.nl</email>
+ <name>Gerben Jan Dijkman</name>
+ </maintainer>
+</pkgmetadata>
diff --git a/sys-power/hibernate-script/Manifest b/sys-power/hibernate-script/Manifest
new file mode 100644
index 000000000000..f876d96e889d
--- /dev/null
+++ b/sys-power/hibernate-script/Manifest
@@ -0,0 +1,2 @@
+DIST hibernate-script-2.0-patches-5.tar.bz2 4203 BLAKE2B 4635f1e39c92b7d63de7fe0cf75903d0fd12763c63ac303f06015893268dda81727725cdb4ef055e1a266d9298598776b498f00f9f683a295abb4e9c97c29dbb SHA512 9e9c45c8f9bfde9bfb7d2ab229e355e635ae2f98cfdefa964c07401cdef5e57d0c58976bd491f82a3b9204af213c82f840e0a9b794b2869f2dfe7783dbdb4970
+DIST hibernate-script-2.0.tar.gz 84453 BLAKE2B 14b0b2fef2d3e84503a12feed935d44cb65be9e67a14686b5dad18cfa69177bd27dd9e287ffddb13533a005c6106fd81f85f78082a27f0170d26019421090ef9 SHA512 625efdf8bd8561dd9ab93c09436f2fb93edef2fbb0fb2d259727bacffab0b7bd4a6c99d445131390883be75658f6dd28f329fdaf4f03a7d218c0021223ac1a1e
diff --git a/sys-power/hibernate-script/hibernate-script-2.0-r6.ebuild b/sys-power/hibernate-script/hibernate-script-2.0-r6.ebuild
new file mode 100644
index 000000000000..680a7bc423fc
--- /dev/null
+++ b/sys-power/hibernate-script/hibernate-script-2.0-r6.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PATCH_VERSION="5"
+
+DESCRIPTION="Hibernate script supporting multiple suspend methods"
+HOMEPAGE="https://gitlab.com/nigelcunningham/Hibernate-Script"
+SRC_URI="http://tuxonice.nigelcunningham.com.au/downloads/all/${P}.tar.gz
+ mirror://gentoo/${P}-patches-${PATCH_VERSION}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ppc x86"
+
+IUSE="vim-syntax"
+
+RDEPEND="!<media-gfx/splashutils-1.5.2"
+
+DOCS=(
+ CHANGELOG
+ README
+ SCRIPTLET-API
+)
+
+PATCHES=(
+ "${WORKDIR}/${PV}"
+)
+
+src_install() {
+ BASE_DIR="${D}" \
+ DISTRIBUTION="gentoo" \
+ PREFIX="/usr" \
+ MAN_DIR="${D}/usr/share/man" \
+ "${S}/install.sh" || die "Install failed"
+
+ # hibernate-ram will default to using ram.conf
+ dosym hibernate /usr/sbin/hibernate-ram
+
+ newinitd init.d/hibernate-cleanup.sh hibernate-cleanup
+
+ # other ebuilds can install scriplets to this dir
+ keepdir /etc/hibernate/scriptlets.d/
+
+ if use vim-syntax; then
+ insinto /usr/share/vim/vimfiles/syntax
+ doins hibernate.vim
+ fi
+
+ dodoc ${DOCS[@]}
+
+ insinto /etc/logrotate.d
+ newins "${S}"/logrotate.d-hibernate-script hibernate-script
+ chmod 644 \
+ "${D}/etc/hibernate/"*.conf \
+ "${D}/etc/hibernate/blacklisted-modules" \
+ "${D}/usr/share/hibernate/scriptlets.d/"* \
+ "${D}/usr/share/hibernate/tuxonice-binary-signature.bin" \
+ || die
+}
+
+pkg_postinst() {
+ elog
+ elog "You should run the following command to invalidate suspend"
+ elog "images on a clean boot."
+ elog
+ elog " # rc-update add hibernate-cleanup boot"
+ elog
+ elog "See /usr/share/doc/${PF}/README.* for further details."
+ elog
+ elog "Please note that you will need to manually emerge any utilities"
+ elog "(radeontool, vbetool, ...) enabled in the configuration files,"
+ elog "should you wish to use them."
+}
diff --git a/sys-power/hibernate-script/metadata.xml b/sys-power/hibernate-script/metadata.xml
new file mode 100644
index 000000000000..091204ee8903
--- /dev/null
+++ b/sys-power/hibernate-script/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+ <upstream>
+ <remote-id type="gitlab">nigelcunningham/Hibernate-Script</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/iasl/Manifest b/sys-power/iasl/Manifest
new file mode 100644
index 000000000000..559233232f38
--- /dev/null
+++ b/sys-power/iasl/Manifest
@@ -0,0 +1,2 @@
+DIST acpica-unix-20241212.tar.gz 1952563 BLAKE2B 325ed37b858f2d88d4fadf54d4a45eac9f0edef183152e02328fdba25c880226e9d254a56441bc24e018cbab595582f2b1f9d69101aee38b9eaa5972fc4b5379 SHA512 daa4243f927451ac18c337cf17c27849e68329b3f7eb25b8c3379fda9c6a484201b73d4ffccab89a0ae22cc5e432f141ba149015a003834b0515bdb3d4efe0a8
+DIST acpitests-unix-20241212.tar.gz 2006353 BLAKE2B bab6e3ac4ee8d6822f854557c0af32f02e16d5b7efe513ed22a8e5f9beb9ea6012dc7be7d55c8a647a21d6946925018475ca7c77fbf50814b2503c2bc92f7b76 SHA512 9c9b0ccd116ef0cbb51bc0b365f80e42dddd474f5e43cac2362974b0d8539ce609fd7f3c25bd1182c322f929cb55647e24a8faef8d321e6e7f078adad60fd3b6
diff --git a/sys-power/iasl/files/iasl-20241212-Makefile-fixes.patch b/sys-power/iasl/files/iasl-20241212-Makefile-fixes.patch
new file mode 100644
index 000000000000..ad1a6d62ddc8
--- /dev/null
+++ b/sys-power/iasl/files/iasl-20241212-Makefile-fixes.patch
@@ -0,0 +1,93 @@
+From 58e46dacfd83a7d33c8922fcb2ea110f37bee62f Mon Sep 17 00:00:00 2001
+From: "Evgeny Grin (Karlson2k)" <k2k@drgrin.dev>
+Date: Thu, 30 Jan 2025 11:25:24 +0100
+Subject: [PATCH 1/2] Makefile fixes for Gentoo
+
+Based on David Seifert patch seen as dadf5340788610052aeb2f4c5232fb744a8bd9f5
+in Gentoo repo git
+
+Signed-off-by: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
+---
+ generate/unix/Makefile.config | 25 ++++++-------------------
+ generate/unix/acpiexec/Makefile | 4 ++--
+ 2 files changed, 8 insertions(+), 21 deletions(-)
+
+diff --git a/generate/unix/Makefile.config b/generate/unix/Makefile.config
+index ae80ccf2e..8e985c691 100644
+--- a/generate/unix/Makefile.config
++++ b/generate/unix/Makefile.config
+@@ -42,8 +42,8 @@ CC ?= gcc
+ #
+ OBJDIR = obj
+ BINDIR = bin
+-COMPILEOBJ = $(CC) -c $(CFLAGS) $(OPT_CFLAGS) -o $@ $<
+-LINKPROG = $(CC) $(OBJECTS) -o $(PROG) $(LDFLAGS) $(OPT_LDFLAGS)
++COMPILEOBJ = $(CC) -c $(CFLAGS) $(CPPFLAGS) $(OPT_CFLAGS) -o $@ $<
++LINKPROG = $(CC) $(LDFLAGS) $(OPT_LDFLAGS) $(OBJECTS) -o $(PROG) $(LIBS)
+ PREFIX ?= /usr
+ INSTALLDIR = $(PREFIX)/bin
+ UNAME_S := $(shell uname -s)
+@@ -75,19 +75,16 @@ ifeq ($(UNAME_S), Haiku)
+ ACPI_HOST = _HAIKU
+ endif
+
++ifeq ($(UNAME_S), Linux)
++ACPI_HOST = _LINUX
++endif
++
+ ifeq ($(ACPI_HOST), _APPLE)
+ INSTALL = cp
+ INSTALLFLAGS ?= -f
+ else
+ INSTALL = install
+-
+-# Do not strip debug info when in debug mode
+-ifeq ($(DEBUG),TRUE)
+ INSTALLFLAGS ?= -m 555
+-else
+-INSTALLFLAGS ?= -m 555 -s
+-endif
+-
+ endif
+
+ INSTALLPROG = \
+@@ -174,16 +171,6 @@ CFLAGS +=-m32
+ LDFLAGS +=-m32
+ endif
+
+-#
+-# Optionally disable optimizations. Optimization causes problems on
+-# some compilers such as gcc 4.4
+-#
+-ifneq ($(NOOPT),TRUE)
+-OPT_CFLAGS += -O2
+-else
+-OPT_CFLAGS += -O0
+-endif
+-
+ #
+ # Optionally disable fortify source. This option can cause
+ # compile errors in toolchains where it is already defined.
+diff --git a/generate/unix/acpiexec/Makefile b/generate/unix/acpiexec/Makefile
+index 9e5852614..411178cf6 100644
+--- a/generate/unix/acpiexec/Makefile
++++ b/generate/unix/acpiexec/Makefile
+@@ -257,13 +257,13 @@ CFLAGS += \
+ endif
+
+ ifneq ($(ACPI_HOST),_QNX)
+-LDFLAGS += -lpthread
++LIBS += -lpthread
+ endif
+
+ ifneq ($(ACPI_HOST),_APPLE)
+ ifneq ($(ACPI_HOST),_QNX)
+ ifneq ($(ACPI_HOST),_HAIKU)
+-LDFLAGS += -lrt
++LIBS += -lrt
+ endif
+ endif
+ endif
+--
+2.45.2.windows.1
+
diff --git a/sys-power/iasl/files/iasl-20241212-Makefile-verbose.patch b/sys-power/iasl/files/iasl-20241212-Makefile-verbose.patch
new file mode 100644
index 000000000000..c833bf8f42f6
--- /dev/null
+++ b/sys-power/iasl/files/iasl-20241212-Makefile-verbose.patch
@@ -0,0 +1,129 @@
+From 9b18ed925e1e33e5b45ae79b5f47deec78ea111d Mon Sep 17 00:00:00 2001
+From: "Evgeny Grin (Karlson2k)" <k2k@drgrin.dev>
+Date: Thu, 30 Jan 2025 11:25:24 +0100
+Subject: [PATCH 2/2] Verbose make output
+
+---
+ generate/unix/Makefile.rules | 4 ++--
+ generate/unix/iasl/Makefile | 34 +++++++++++++++++-----------------
+ 2 files changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/generate/unix/Makefile.rules b/generate/unix/Makefile.rules
+index f2a16be4d..838252719 100644
+--- a/generate/unix/Makefile.rules
++++ b/generate/unix/Makefile.rules
+@@ -12,12 +12,12 @@ $(FINAL_PROG) : $(PROG)
+
+ $(PROG) : $(INTERMEDIATES) $(MISC) $(OBJECTS)
+ @echo "- Link" $(PROG)
+- @$(LINKPROG)
++ $(LINKPROG)
+ $(RENAMEPROG)
+
+ $(OBJDIR)/%.o : %.c $(HEADERS) $(ACPICA_HEADERS)
+ @echo $(PROG) $<
+- @$(COMPILEOBJ)
++ $(COMPILEOBJ)
+
+ clean :
+ @rm -f $(PROG) $(PROG).exe $(OBJECTS) $(OBJDIR)/*.o $(INTERMEDIATES) $(MISC)
+diff --git a/generate/unix/iasl/Makefile b/generate/unix/iasl/Makefile
+index 8fde63d46..271c7a704 100644
+--- a/generate/unix/iasl/Makefile
++++ b/generate/unix/iasl/Makefile
+@@ -322,42 +322,42 @@ safe_yacc = \
+ #
+ $(OBJDIR)/aslcompiler.y : $(ASL_PARSER)
+ @echo "- " $(MACROPROC) " Preprocess main iASL parser"
+- @$(MACROPROC) $(MFLAGS) $(ASL_COMPILER)/aslparser.y > $@
++ $(MACROPROC) $(MFLAGS) $(ASL_COMPILER)/aslparser.y > $@
+
+ #
+ # Parser and Lexer - intermediate C files
+ #
+ $(OBJDIR)/aslcompilerlex.c : $(ASL_LEXER)
+ @echo "- " $(LEX) " "$<
+- @$(LEX) $(LFLAGS) -PAslCompiler -o$@ $(ASL_COMPILER)/aslcompiler.l
++ $(LEX) $(LFLAGS) -PAslCompiler -o$@ $(ASL_COMPILER)/aslcompiler.l
+
+ $(OBJDIR)/aslcompilerparse.c $(OBJDIR)/aslcompiler.y.h : $(OBJDIR)/aslcompiler.y
+ @echo "- " $(YACC) " "$<
+- @$(call safe_yacc,AslCompiler,$<,$@)
++ $(call safe_yacc,AslCompiler,$<,$@)
+
+ $(OBJDIR)/dtcompilerparserlex.c : $(ASL_COMPILER)/dtcompilerparser.l $(OBJDIR)/dtcompilerparser.y.h
+ @echo "- " $(LEX) " "$<
+- @$(LEX) $(DLFLAGS) -PDtCompilerParser -o$@ $<
++ $(LEX) $(DLFLAGS) -PDtCompilerParser -o$@ $<
+
+ $(OBJDIR)/dtcompilerparserparse.c $(OBJDIR)/dtcompilerparser.y.h : $(ASL_COMPILER)/dtcompilerparser.y
+ @echo "- " $(YACC) " "$<
+- @$(call safe_yacc,DtCompilerParser,$<,$@)
++ $(call safe_yacc,DtCompilerParser,$<,$@)
+
+ $(OBJDIR)/dtparserlex.c : $(ASL_COMPILER)/dtparser.l $(OBJDIR)/dtparser.y.h
+ @echo "- " $(LEX) " "$<
+- @$(LEX) $(DLFLAGS) -PDtParser -o$@ $<
++ $(LEX) $(DLFLAGS) -PDtParser -o$@ $<
+
+ $(OBJDIR)/dtparserparse.c $(OBJDIR)/dtparser.y.h : $(ASL_COMPILER)/dtparser.y
+ @echo "- " $(YACC) " "$<
+- @$(call safe_yacc,DtParser,$<,$@)
++ $(call safe_yacc,DtParser,$<,$@)
+
+ $(OBJDIR)/prparserlex.c : $(ASL_COMPILER)/prparser.l $(OBJDIR)/prparser.y.h
+ @echo "- " $(LEX) " "$<
+- @$(LEX) $(LFLAGS) -PPrParser -o$@ $<
++ $(LEX) $(LFLAGS) -PPrParser -o$@ $<
+
+ $(OBJDIR)/prparserparse.c $(OBJDIR)/prparser.y.h : $(ASL_COMPILER)/prparser.y
+ @echo "- " $(YACC) " "$<
+- @$(call safe_yacc,PrParser,$<,$@)
++ $(call safe_yacc,PrParser,$<,$@)
+
+ #
+ # Parsers and Lexers - final object files
+@@ -367,32 +367,32 @@ $(OBJDIR)/prparserparse.c $(OBJDIR)/prparser.y.h : $(ASL_COMPILER)/prparse
+ #
+ $(OBJDIR)/aslcompilerlex.o : $(OBJDIR)/aslcompilerlex.c
+ @echo "- " "Intermediate" $<
+- @$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
++ $(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
+
+ $(OBJDIR)/aslcompilerparse.o : $(OBJDIR)/aslcompilerparse.c
+ @echo "- " "Intermediate" $<
+- @$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
++ $(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
+
+ $(OBJDIR)/dtcompilerparserlex.o : $(OBJDIR)/dtcompilerparserlex.c
+ @echo "- " "Intermediate" $<
+- @$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
++ $(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
+
+ $(OBJDIR)/dtcompilerparserparse.o : $(OBJDIR)/dtcompilerparserparse.c
+ @echo "- " "Intermediate" $<
+- @$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
++ $(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
+
+ $(OBJDIR)/dtparserlex.o : $(OBJDIR)/dtparserlex.c
+ @echo "- " "Intermediate" $<
+- @$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
++ $(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
+
+ $(OBJDIR)/dtparserparse.o : $(OBJDIR)/dtparserparse.c
+ @echo "- " "Intermediate" $<
+- @$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
++ $(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
+
+ $(OBJDIR)/prparserlex.o : $(OBJDIR)/prparserlex.c
+ @echo "- " "Intermediate" $<
+- @$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
++ $(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
+
+ $(OBJDIR)/prparserparse.o : $(OBJDIR)/prparserparse.c
+ @echo "- " "Intermediate" $<
+- @$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
++ $(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
+--
+2.45.2.windows.1
+
diff --git a/sys-power/iasl/iasl-20241212.ebuild b/sys-power/iasl/iasl-20241212.ebuild
new file mode 100644
index 000000000000..22d940c28b94
--- /dev/null
+++ b/sys-power/iasl/iasl-20241212.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit edos2unix toolchain-funcs
+
+MY_PN=acpica-unix
+MY_P="${MY_PN}-${PV}"
+MY_TESTS_P="${MY_PN/ca/tests}-${PV}"
+REL_TAG="R${PV:0:4}_${PV:4:2}_${PV:6:2}"
+
+DESCRIPTION="Intel ACPI Source Language (ASL) compiler"
+HOMEPAGE="https://www.acpica.org/downloads/"
+SRC_URI="
+ https://github.com/acpica/acpica/releases/download/${REL_TAG}/${MY_P}.tar.gz
+ test? ( https://github.com/acpica/acpica/releases/download/${REL_TAG}/${MY_TESTS_P}.tar.gz )"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="iASL"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv x86"
+IUSE="examples test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ app-alternatives/yacc
+ app-alternatives/lex"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-Makefile-fixes.patch
+ "${FILESDIR}"/${P}-Makefile-verbose.patch
+)
+
+pkg_setup() {
+ if use test; then
+ ewarn 'You have selected USE="test". This will install the test results'
+ ewarn "into /usr/share/${PF}/, compressed as a tarball."
+ ewarn 'The tests themselves will only rarely die, but the test results'
+ ewarn 'are interesting for arch testing. The tests may take quite some'
+ ewarn 'time to complete.'
+ fi
+}
+
+src_compile() {
+ emake -C generate/unix \
+ CC="$(tc-getCC)" \
+ 'YACC=LC_ALL=C yacc' \
+ 'YFLAGS=' \
+ 'LEX=LC_ALL=C lex' \
+ NOFORTIFY=TRUE \
+ NOWERROR=TRUE
+}
+
+aslts_test() {
+ export ASL="${S}"/generate/unix/bin/iasl \
+ acpibin="${S}"/generate/unix/bin/acpibin \
+ acpiexec="${S}"/generate/unix/bin/acpiexec \
+ ASLTSDIR="${WORKDIR}/${MY_TESTS_P}"/tests/aslts
+ export PATH="${PATH}:${ASLTSDIR}/bin"
+ echo "$ASLTSDIR" >"${T}"/asltdir
+ cd "${ASLTSDIR}" || die
+ edos2unix $(find . -type 'f')
+ emake install
+ chmod +x $(find bin/ ! -regex 'ERROR_OPCODES|HOW_TO_USE|README' ) || die "chmod bin +x failed"
+
+ #The below Do commands runs the tests twice and then dies if the results aren't
+ #Identical.
+ Do 1 || die "failed Do 1"
+ Do 2 || die "failed Do 2"
+}
+
+aapits_test() {
+ mv "${WORKDIR}/${MY_TESTS_P}/tests/aapits" "${S}/tools/" || die "mv failed"
+ cd "${S}/tools/aapits" || die "cannot find ${S}/tools/aapits"
+ edos2unix $(find . -type 'f')
+ chmod +x $(find bin/ | sed -r -e '/\/[A-Z_]+$/d') || die "chmod bin +x failed"
+ emake
+ emake -C asl
+ cd ../bin || die
+ ./aapitsrun || die "aapitsrun failed"
+}
+
+src_test() {
+ aslts_test
+ #The aapits test currently fails, missing include probably.
+ #aapits_test
+}
+
+src_install() {
+ emake -C generate/unix install DESTDIR="${D}"
+
+ if ! use examples; then
+ rm "${ED}/usr/bin/acpiexamples" || die
+ fi
+
+ dodoc "${S}"/changes.txt
+ newdoc "${S}"/source/compiler/readme.txt compiler-readme.txt
+ newdoc "${S}"/generate/unix/readme.txt unix-readme.txt
+ newdoc "${S}"/generate/lint/readme.txt lint-readme.txt
+ newdoc "${S}"/source/compiler/new_table.txt compiler-new_table.txt
+
+ if use test; then
+ tb="${T}"/testresults.tar.bz2
+ export ASLTSDIR="$(<"${T}"/asltdir)"
+ ebegin "Creating Test Tarball"
+ tar -cjf "${tb}" -C "${ASLTSDIR}"/tmp/RESULTS . || die "tar failed"
+ eend $?
+ insinto /usr/share/${PF}
+ doins ${tb}
+ fi
+}
diff --git a/sys-power/iasl/metadata.xml b/sys-power/iasl/metadata.xml
new file mode 100644
index 000000000000..4cf5326077e4
--- /dev/null
+++ b/sys-power/iasl/metadata.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>robbat2@gentoo.org</email>
+ </maintainer>
+ <upstream>
+ <maintainer status="active">
+ <email>saket.dumbre@intel.com</email>
+ <name>Saket Dumbre</name>
+ </maintainer>
+ <doc lang="en">https://www.intel.com/content/www/us/en/developer/topic-technology/open/acpica/documentation.html</doc>
+ <bugs-to>https://github.com/acpica/acpica/issues</bugs-to>
+ <remote-id type="github">acpica/acpica</remote-id>
+ </upstream>
+ <use>
+ <flag name="examples">Install acpiexamples binary</flag>
+ <flag name="test">Perform tests (slow!) and install compressed test results</flag>
+ </use>
+</pkgmetadata>
diff --git a/sys-power/intel-undervolt/Manifest b/sys-power/intel-undervolt/Manifest
new file mode 100644
index 000000000000..d865abb9ce3a
--- /dev/null
+++ b/sys-power/intel-undervolt/Manifest
@@ -0,0 +1 @@
+DIST intel-undervolt-1.7.tar.gz 31481 BLAKE2B 0daade381b492184616356f097de32d14c76d6ab3f7dd59240fb25f92ee1b9aebb16cbef8b6836e16e361a9560b000655470140c31b5822fed7bd90e0b9d9bf2 SHA512 727eddd47a92f6092e89f9326c6b453785fac6155f2c2c50887f9a90704226e6abaf27b4a91cabd4783c4477371699a92186fe7847ac9218da9c26fb295a5304
diff --git a/sys-power/intel-undervolt/intel-undervolt-1.7-r1.ebuild b/sys-power/intel-undervolt/intel-undervolt-1.7-r1.ebuild
new file mode 100644
index 000000000000..46f5c056910d
--- /dev/null
+++ b/sys-power/intel-undervolt/intel-undervolt-1.7-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit eapi9-ver linux-info systemd toolchain-funcs
+
+DESCRIPTION="Intel CPU undervolting and throttling configuration tool"
+HOMEPAGE="https://github.com/kitsunyan/intel-undervolt"
+
+if [ ${PV} == "9999" ] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/kitsunyan/${PN}.git"
+else
+ SRC_URI="https://github.com/kitsunyan/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="-* ~amd64"
+fi
+
+LICENSE="GPL-3"
+SLOT="0"
+IUSE="elogind"
+
+DEPEND="elogind? ( sys-auth/elogind )"
+
+RDEPEND="${DEPEND}"
+
+BDEPEND="virtual/pkgconfig"
+
+CONFIG_CHECK="~INTEL_RAPL ~X86_MSR"
+
+src_configure() {
+ local myconf=(
+ # it's a non-standard build system
+ $(usex elogind --enable-elogind '')
+ $(usex elogind --eloginddir="${EPREFIX}/$(get_libdir)/elogind" '')
+ --enable-openrc
+ --enable-systemd
+ --unitdir="$(systemd_get_systemunitdir)"
+ )
+
+ econf "${myconf[@]}"
+}
+
+src_compile() {
+ tc-export CC
+
+ local myemakeargs=(
+ CC="${CC}"
+ CFLAGS="${CFLAGS}"
+ )
+
+ emake "${myemakeargs[@]}"
+}
+
+pkg_postinst() {
+ if ver_replacing -eq 1.6 ; then
+ elog "openrc service has been renamed to intel-undervolt-loop"
+ elog "please update your startup configuration"
+ fi
+}
diff --git a/sys-power/intel-undervolt/metadata.xml b/sys-power/intel-undervolt/metadata.xml
new file mode 100644
index 000000000000..7ff25f9b9520
--- /dev/null
+++ b/sys-power/intel-undervolt/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+ <use>
+ <flag name="elogind">Use elogind hook to apply voltage after system sleep</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">kitsunyan/intel-undervolt</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/libacpica/Manifest b/sys-power/libacpica/Manifest
new file mode 100644
index 000000000000..2244e967b004
--- /dev/null
+++ b/sys-power/libacpica/Manifest
@@ -0,0 +1 @@
+DIST libacpica-debian-0_20220331-6.tar.bz2 450164 BLAKE2B 85c5263d13074059f9a0f541d70d5d81a725b10de343567196f7bbcb9985d847e2d93eede2388efd8b83b76d2e37f91461a0bee0c37e1f0a4502d6ad71ea7ba1 SHA512 c9b298d096a4839ffc2167be3b7c0528b4d5dacbdb6a0efd81346144c8b00b979113abe72517b673db2835d0f5f24b10a4e19e17adb503784215c7d05443b3ea
diff --git a/sys-power/libacpica/libacpica-0_pre20220331_p6.ebuild b/sys-power/libacpica/libacpica-0_pre20220331_p6.ebuild
new file mode 100644
index 000000000000..7369444c003d
--- /dev/null
+++ b/sys-power/libacpica/libacpica-0_pre20220331_p6.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="ACPICA as a library"
+HOMEPAGE="https://salsa.debian.org/hurd-team/libacpica"
+
+if [[ ${PV} == *9999* ]] ; then
+ EGIT_REPO_URI="https://salsa.debian.org/hurd-team/libacpica.git"
+ inherit git-r3
+elif [[ ${PV} == *_pre*_p* ]] ; then
+ # These are proper Debian relaeses. libacpica isn't currently
+ # part of the Debian archive, so this is the best we can do (no
+ # 'orig' tarballs).
+ LIBACPICA_PV=0_$(ver_cut 3)-$(ver_cut 5)
+
+ SRC_URI="https://salsa.debian.org/hurd-team/libacpica/-/archive/debian/${LIBACPICA_PV}/libacpica-debian-${LIBACPICA_PV}.tar.bz2"
+ S="${WORKDIR}"/${PN}-debian-${LIBACPICA_PV}
+else
+ # Snapshots
+ LIBACPICA_COMMIT="0c3593e27947ef0734a070143caadaed28438354"
+ SRC_URI="https://salsa.debian.org/hurd-team/libacpica/-/archive/${LIBACPICA_COMMIT}/libacpica-${LIBACPICA_COMMIT}.tar.bz2"
+fi
+
+LICENSE="BSD GPL-2+"
+SLOT="0"
+if [[ ${PV} != *9999* ]] ; then
+ KEYWORDS="~amd64 ~x86"
+fi
+
+RDEPEND="
+ x11-libs/libpciaccess
+"
+DEPEND="${RDEPEND}"
+
+src_prepare() {
+ default
+
+ eapply $(sed -e 's:^:debian/patches/:' debian/patches/series || die)
+
+ sed -i -e 's:ar crs:$(AR) crs:' Makefile || die
+}
+
+src_configure() {
+ tc-export AR CC
+}
+
+src_compile() {
+ emake PREFIX="${EPREFIX}"/usr
+}
+
+src_install() {
+ emake DESTDIR="${D}" PREFIX="${EPREFIX}"/usr libdir="${EPREFIX}/usr/$(get_libdir)" install
+}
diff --git a/sys-power/libacpica/libacpica-9999.ebuild b/sys-power/libacpica/libacpica-9999.ebuild
new file mode 100644
index 000000000000..7369444c003d
--- /dev/null
+++ b/sys-power/libacpica/libacpica-9999.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="ACPICA as a library"
+HOMEPAGE="https://salsa.debian.org/hurd-team/libacpica"
+
+if [[ ${PV} == *9999* ]] ; then
+ EGIT_REPO_URI="https://salsa.debian.org/hurd-team/libacpica.git"
+ inherit git-r3
+elif [[ ${PV} == *_pre*_p* ]] ; then
+ # These are proper Debian relaeses. libacpica isn't currently
+ # part of the Debian archive, so this is the best we can do (no
+ # 'orig' tarballs).
+ LIBACPICA_PV=0_$(ver_cut 3)-$(ver_cut 5)
+
+ SRC_URI="https://salsa.debian.org/hurd-team/libacpica/-/archive/debian/${LIBACPICA_PV}/libacpica-debian-${LIBACPICA_PV}.tar.bz2"
+ S="${WORKDIR}"/${PN}-debian-${LIBACPICA_PV}
+else
+ # Snapshots
+ LIBACPICA_COMMIT="0c3593e27947ef0734a070143caadaed28438354"
+ SRC_URI="https://salsa.debian.org/hurd-team/libacpica/-/archive/${LIBACPICA_COMMIT}/libacpica-${LIBACPICA_COMMIT}.tar.bz2"
+fi
+
+LICENSE="BSD GPL-2+"
+SLOT="0"
+if [[ ${PV} != *9999* ]] ; then
+ KEYWORDS="~amd64 ~x86"
+fi
+
+RDEPEND="
+ x11-libs/libpciaccess
+"
+DEPEND="${RDEPEND}"
+
+src_prepare() {
+ default
+
+ eapply $(sed -e 's:^:debian/patches/:' debian/patches/series || die)
+
+ sed -i -e 's:ar crs:$(AR) crs:' Makefile || die
+}
+
+src_configure() {
+ tc-export AR CC
+}
+
+src_compile() {
+ emake PREFIX="${EPREFIX}"/usr
+}
+
+src_install() {
+ emake DESTDIR="${D}" PREFIX="${EPREFIX}"/usr libdir="${EPREFIX}/usr/$(get_libdir)" install
+}
diff --git a/sys-power/libacpica/metadata.xml b/sys-power/libacpica/metadata.xml
new file mode 100644
index 000000000000..b267f548b5bf
--- /dev/null
+++ b/sys-power/libacpica/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>hurd@gentoo.org</email>
+ <name>GNU Hurd project</name>
+ </maintainer>
+</pkgmetadata>
diff --git a/sys-power/linux-tools-power-x86/Manifest b/sys-power/linux-tools-power-x86/Manifest
new file mode 100644
index 000000000000..f47107e8b3ca
--- /dev/null
+++ b/sys-power/linux-tools-power-x86/Manifest
@@ -0,0 +1,2 @@
+DIST linux-6.1.tar.xz 134728520 BLAKE2B ae60257860b2bd1bd708d183f0443afc60ebbd2b3d535c45e44c2e541bd0928530a3b62de6385dd4e4726ebbedcc0a871d4f3ffb4105b9f1f6d8ed7467f5688e SHA512 6ed2a73c2699d0810e54753715635736fc370288ad5ce95c594f2379959b0e418665cd71bc512a0273fe226fe90074d8b10d14c209080a6466498417a4fdda68
+DIST linux-6.6.tar.xz 140064536 BLAKE2B 5f02fd8696d42f7ec8c5fbadec8e7270bdcfcb1f9844a6c4db3e1fd461c93ce1ccda650ca72dceb4890ebcbbf768ba8fba0bce91efc49fbd2c307b04e95665f2 SHA512 458b2c34d46206f9b4ccbac54cc57aeca1eaecaf831bc441e59701bac6eadffc17f6ce24af6eadd0454964e843186539ac0d63295ad2cc32d112b60360c39a35
diff --git a/sys-power/linux-tools-power-x86/files/linux-tools-power-x86-6.1-cflags.patch b/sys-power/linux-tools-power-x86/files/linux-tools-power-x86-6.1-cflags.patch
new file mode 100644
index 000000000000..8de8139d8538
--- /dev/null
+++ b/sys-power/linux-tools-power-x86/files/linux-tools-power-x86-6.1-cflags.patch
@@ -0,0 +1,45 @@
+diff --git a/tools/power/x86/intel-speed-select/Makefile b/tools/power/x86/intel-speed-select/Makefile
+index 7221f2f55e8b..96b5a456a4c5 100644
+--- a/tools/power/x86/intel-speed-select/Makefile
++++ b/tools/power/x86/intel-speed-select/Makefile
+@@ -13,7 +13,7 @@ endif
+ # Do not use make's built-in rules
+ # (this improves performance and avoids hard-to-debug behaviour);
+ MAKEFLAGS += -r
+-override CFLAGS += -O2 -Wall -g -D_GNU_SOURCE -I$(OUTPUT)include -I/usr/include/libnl3
++override CFLAGS += -Wall -D_GNU_SOURCE -I$(OUTPUT)include -I/usr/include/libnl3
+ override LDFLAGS += -lnl-genl-3 -lnl-3
+
+ ALL_TARGETS := intel-speed-select
+diff --git a/tools/power/x86/turbostat/Makefile b/tools/power/x86/turbostat/Makefile
+index 92e139b9c792..d2c21035e16d 100644
+--- a/tools/power/x86/turbostat/Makefile
++++ b/tools/power/x86/turbostat/Makefile
+@@ -9,11 +9,10 @@ ifeq ("$(origin O)", "command line")
+ endif
+
+ turbostat : turbostat.c
+-override CFLAGS += -O2 -Wall -Wextra -I../../../include
++override CFLAGS += -Wall -Wextra -I../../../include
+ override CFLAGS += -DMSRHEADER='"../../../../arch/x86/include/asm/msr-index.h"'
+ override CFLAGS += -DINTEL_FAMILY_HEADER='"../../../../arch/x86/include/asm/intel-family.h"'
+ override CFLAGS += -D_FILE_OFFSET_BITS=64
+-override CFLAGS += -D_FORTIFY_SOURCE=2
+
+ %: %.c
+ @mkdir -p $(BUILD_OUTPUT)
+diff --git a/tools/power/x86/x86_energy_perf_policy/Makefile b/tools/power/x86/x86_energy_perf_policy/Makefile
+index 666b325a62a2..1fdeef864e7c 100644
+--- a/tools/power/x86/x86_energy_perf_policy/Makefile
++++ b/tools/power/x86/x86_energy_perf_policy/Makefile
+@@ -9,9 +9,8 @@ ifeq ("$(origin O)", "command line")
+ endif
+
+ x86_energy_perf_policy : x86_energy_perf_policy.c
+-override CFLAGS += -O2 -Wall -I../../../include
++override CFLAGS += -Wall -I../../../include
+ override CFLAGS += -DMSRHEADER='"../../../../arch/x86/include/asm/msr-index.h"'
+-override CFLAGS += -D_FORTIFY_SOURCE=2
+
+ %: %.c
+ @mkdir -p $(BUILD_OUTPUT)
diff --git a/sys-power/linux-tools-power-x86/files/linux-tools-power-x86-6.6-cflags.patch b/sys-power/linux-tools-power-x86/files/linux-tools-power-x86-6.6-cflags.patch
new file mode 100644
index 000000000000..8de8139d8538
--- /dev/null
+++ b/sys-power/linux-tools-power-x86/files/linux-tools-power-x86-6.6-cflags.patch
@@ -0,0 +1,45 @@
+diff --git a/tools/power/x86/intel-speed-select/Makefile b/tools/power/x86/intel-speed-select/Makefile
+index 7221f2f55e8b..96b5a456a4c5 100644
+--- a/tools/power/x86/intel-speed-select/Makefile
++++ b/tools/power/x86/intel-speed-select/Makefile
+@@ -13,7 +13,7 @@ endif
+ # Do not use make's built-in rules
+ # (this improves performance and avoids hard-to-debug behaviour);
+ MAKEFLAGS += -r
+-override CFLAGS += -O2 -Wall -g -D_GNU_SOURCE -I$(OUTPUT)include -I/usr/include/libnl3
++override CFLAGS += -Wall -D_GNU_SOURCE -I$(OUTPUT)include -I/usr/include/libnl3
+ override LDFLAGS += -lnl-genl-3 -lnl-3
+
+ ALL_TARGETS := intel-speed-select
+diff --git a/tools/power/x86/turbostat/Makefile b/tools/power/x86/turbostat/Makefile
+index 92e139b9c792..d2c21035e16d 100644
+--- a/tools/power/x86/turbostat/Makefile
++++ b/tools/power/x86/turbostat/Makefile
+@@ -9,11 +9,10 @@ ifeq ("$(origin O)", "command line")
+ endif
+
+ turbostat : turbostat.c
+-override CFLAGS += -O2 -Wall -Wextra -I../../../include
++override CFLAGS += -Wall -Wextra -I../../../include
+ override CFLAGS += -DMSRHEADER='"../../../../arch/x86/include/asm/msr-index.h"'
+ override CFLAGS += -DINTEL_FAMILY_HEADER='"../../../../arch/x86/include/asm/intel-family.h"'
+ override CFLAGS += -D_FILE_OFFSET_BITS=64
+-override CFLAGS += -D_FORTIFY_SOURCE=2
+
+ %: %.c
+ @mkdir -p $(BUILD_OUTPUT)
+diff --git a/tools/power/x86/x86_energy_perf_policy/Makefile b/tools/power/x86/x86_energy_perf_policy/Makefile
+index 666b325a62a2..1fdeef864e7c 100644
+--- a/tools/power/x86/x86_energy_perf_policy/Makefile
++++ b/tools/power/x86/x86_energy_perf_policy/Makefile
+@@ -9,9 +9,8 @@ ifeq ("$(origin O)", "command line")
+ endif
+
+ x86_energy_perf_policy : x86_energy_perf_policy.c
+-override CFLAGS += -O2 -Wall -I../../../include
++override CFLAGS += -Wall -I../../../include
+ override CFLAGS += -DMSRHEADER='"../../../../arch/x86/include/asm/msr-index.h"'
+-override CFLAGS += -D_FORTIFY_SOURCE=2
+
+ %: %.c
+ @mkdir -p $(BUILD_OUTPUT)
diff --git a/sys-power/linux-tools-power-x86/linux-tools-power-x86-6.1.ebuild b/sys-power/linux-tools-power-x86/linux-tools-power-x86-6.1.ebuild
new file mode 100644
index 000000000000..a51e1bd59c59
--- /dev/null
+++ b/sys-power/linux-tools-power-x86/linux-tools-power-x86-6.1.ebuild
@@ -0,0 +1,96 @@
+# Copyright 2013-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit fcaps linux-info python-r1 toolchain-funcs
+
+DESCRIPTION="Linux x86 CPU power tools"
+HOMEPAGE="https://www.kernel.org/"
+SRC_URI="https://cdn.kernel.org/pub/linux/kernel/v${PV%%.*}.x/linux-${PV}.tar.xz"
+S="${WORKDIR}/linux-${PV}"
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="~amd64"
+IUSE="pstate-tracer"
+
+CDEPEND="
+ dev-libs/libnl:3
+ sys-libs/libcap
+"
+RDEPEND="
+ ${CDEPEND}
+ pstate-tracer? (
+ ${PYTHON_DEPS}
+ dev-python/gnuplot-py[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ sci-visualization/gnuplot
+ )
+"
+DEPEND="
+ ${CDEPEND}
+ virtual/os-headers
+"
+
+REQUIRED_USE="pstate-tracer? ( ${PYTHON_REQUIRED_USE} )"
+
+PATCHES=( "${FILESDIR}/${P}-cflags.patch" )
+FILECAPS=( 'cap_sys_rawio=ep' usr/bin/turbostat )
+
+pkg_setup() {
+ linux-info_pkg_setup
+ if linux_config_exists; then
+ CONFIG_CHECK_MODULES="CONFIG_X86_MSR" || ewarn "msr module is needed at runtime"
+ fi
+}
+
+src_configure() {
+ export bindir="${EPREFIX}/usr/bin"
+ export sbindir="${EPREFIX}/usr/sbin"
+ export mandir="${EPREFIX}/usr/share/man"
+ export includedir="${EPREFIX}/usr/include"
+ export libdir="${EPREFIX}/usr/$(get_libdir)"
+ export localedir="${EPREFIX}/usr/share/locale"
+ export docdir="${EPREFIX}/usr/share/doc/${PF}"
+ export confdir="${EPREFIX}/etc"
+ export bash_completion_dir="${EPREFIX}/usr/share/bash-completion/completions"
+ export V=1
+}
+
+src_compile() {
+ myemakeargs=(
+ AR="$(tc-getAR)"
+ CC="$(tc-getCC)"
+ LD="$(tc-getCC)"
+ VERSION=${PV}
+ )
+ emake -C tools/power/x86/intel-speed-select "${myemakeargs[@]}"
+ emake -C tools/power/x86/turbostat "${myemakeargs[@]}"
+ emake -C tools/power/x86/x86_energy_perf_policy "${myemakeargs[@]}"
+}
+
+src_install() {
+ pushd "${S}/tools/power/x86/intel-speed-select" || die
+ emake "${myemakeargs[@]}" DESTDIR="${D}" install
+ popd || die
+ pushd "${S}/tools/power/x86/turbostat" || die
+ emake "${myemakeargs[@]}" DESTDIR="${D}" install
+ popd || die
+ pushd "${S}/tools/power/x86/x86_energy_perf_policy" || die
+ emake "${myemakeargs[@]}" DESTDIR="${D}" install
+ popd || die
+
+ if use pstate-tracer; then
+ python_foreach_impl python_doscript tools/power/x86/intel_pstate_tracer/intel_pstate_tracer.py
+ python_foreach_impl python_doscript tools/power/x86/amd_pstate_tracer/amd_pstate_trace.py
+ fi
+
+ einstalldocs
+}
+
+pkg_postinst() {
+ fcaps_pkg_postinst
+}
diff --git a/sys-power/linux-tools-power-x86/linux-tools-power-x86-6.6.ebuild b/sys-power/linux-tools-power-x86/linux-tools-power-x86-6.6.ebuild
new file mode 100644
index 000000000000..a51e1bd59c59
--- /dev/null
+++ b/sys-power/linux-tools-power-x86/linux-tools-power-x86-6.6.ebuild
@@ -0,0 +1,96 @@
+# Copyright 2013-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit fcaps linux-info python-r1 toolchain-funcs
+
+DESCRIPTION="Linux x86 CPU power tools"
+HOMEPAGE="https://www.kernel.org/"
+SRC_URI="https://cdn.kernel.org/pub/linux/kernel/v${PV%%.*}.x/linux-${PV}.tar.xz"
+S="${WORKDIR}/linux-${PV}"
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="~amd64"
+IUSE="pstate-tracer"
+
+CDEPEND="
+ dev-libs/libnl:3
+ sys-libs/libcap
+"
+RDEPEND="
+ ${CDEPEND}
+ pstate-tracer? (
+ ${PYTHON_DEPS}
+ dev-python/gnuplot-py[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ sci-visualization/gnuplot
+ )
+"
+DEPEND="
+ ${CDEPEND}
+ virtual/os-headers
+"
+
+REQUIRED_USE="pstate-tracer? ( ${PYTHON_REQUIRED_USE} )"
+
+PATCHES=( "${FILESDIR}/${P}-cflags.patch" )
+FILECAPS=( 'cap_sys_rawio=ep' usr/bin/turbostat )
+
+pkg_setup() {
+ linux-info_pkg_setup
+ if linux_config_exists; then
+ CONFIG_CHECK_MODULES="CONFIG_X86_MSR" || ewarn "msr module is needed at runtime"
+ fi
+}
+
+src_configure() {
+ export bindir="${EPREFIX}/usr/bin"
+ export sbindir="${EPREFIX}/usr/sbin"
+ export mandir="${EPREFIX}/usr/share/man"
+ export includedir="${EPREFIX}/usr/include"
+ export libdir="${EPREFIX}/usr/$(get_libdir)"
+ export localedir="${EPREFIX}/usr/share/locale"
+ export docdir="${EPREFIX}/usr/share/doc/${PF}"
+ export confdir="${EPREFIX}/etc"
+ export bash_completion_dir="${EPREFIX}/usr/share/bash-completion/completions"
+ export V=1
+}
+
+src_compile() {
+ myemakeargs=(
+ AR="$(tc-getAR)"
+ CC="$(tc-getCC)"
+ LD="$(tc-getCC)"
+ VERSION=${PV}
+ )
+ emake -C tools/power/x86/intel-speed-select "${myemakeargs[@]}"
+ emake -C tools/power/x86/turbostat "${myemakeargs[@]}"
+ emake -C tools/power/x86/x86_energy_perf_policy "${myemakeargs[@]}"
+}
+
+src_install() {
+ pushd "${S}/tools/power/x86/intel-speed-select" || die
+ emake "${myemakeargs[@]}" DESTDIR="${D}" install
+ popd || die
+ pushd "${S}/tools/power/x86/turbostat" || die
+ emake "${myemakeargs[@]}" DESTDIR="${D}" install
+ popd || die
+ pushd "${S}/tools/power/x86/x86_energy_perf_policy" || die
+ emake "${myemakeargs[@]}" DESTDIR="${D}" install
+ popd || die
+
+ if use pstate-tracer; then
+ python_foreach_impl python_doscript tools/power/x86/intel_pstate_tracer/intel_pstate_tracer.py
+ python_foreach_impl python_doscript tools/power/x86/amd_pstate_tracer/amd_pstate_trace.py
+ fi
+
+ einstalldocs
+}
+
+pkg_postinst() {
+ fcaps_pkg_postinst
+}
diff --git a/sys-power/linux-tools-power-x86/metadata.xml b/sys-power/linux-tools-power-x86/metadata.xml
new file mode 100644
index 000000000000..535afd782d0f
--- /dev/null
+++ b/sys-power/linux-tools-power-x86/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>joe@wt.gd</email>
+ <name>Joe Kappus</name>
+ </maintainer>
+ <use>
+ <flag name="pstate-tracer">Install utility to debug and tune the performance of the {amd,intel}_pstate drivers</flag>
+ </use>
+</pkgmetadata>
diff --git a/sys-power/metadata.xml b/sys-power/metadata.xml
new file mode 100644
index 000000000000..e0f1038140cc
--- /dev/null
+++ b/sys-power/metadata.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE catmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<catmetadata>
+ <longdescription lang="en">
+ The sys-power category contains software which handles power management,
+ including CPU frequency scaling tools.
+ </longdescription>
+ <longdescription lang="es">
+ La categoría sys-power contiene programas que manejan el control del
+ rendimiento incluyendo herramientas para cambio de frecuencia de algunos
+ microprocesadores.
+ </longdescription>
+ <longdescription lang="de">
+ Die Kategorie sys-power enthält Software für das Powermanagement, wie
+ beispielsweise Programme zur Änderung der CPU-Frequenz.
+ </longdescription>
+ <longdescription lang="ja">
+ sys-powerカテゴリには電源管理を管理する(例えば、CPU基準化)が含まれます。
+ </longdescription>
+ <longdescription lang="nl">
+ De sys-power categorie bevat programma's voor energiebeheer, bijvoorbeeld
+ voor het aanpassen van de CPU-kloksnelheid.
+ </longdescription>
+ <longdescription lang="vi">
+ Nhóm sys-power chứa các phần mềm quản lý năng lượng,
+ bao gồm các công cụ quản lý tần số CPU.
+ </longdescription>
+ <longdescription lang="it">
+ La categoria sys-power contiene programmi per la gestione del risparmio energetico,
+ incluso il software per la variazione della frequenza della CPU.
+ </longdescription>
+ <longdescription lang="pt">
+ A categoria sys-power contém programas que lidam com
+ gerenciamento de energia, incluindo ferramentas de variação de
+ freqüência de microprocessadores.
+ </longdescription>
+ <longdescription lang="pl">
+ Kategoria sys-power zawiera oprogramowanie związane z zarządzaniem
+ energią, włączając w to programy służące do skalowania częstotliwości
+ procesora.
+ </longdescription>
+</catmetadata>
diff --git a/sys-power/nct6687d/Manifest b/sys-power/nct6687d/Manifest
new file mode 100644
index 000000000000..7bdb7fb03af2
--- /dev/null
+++ b/sys-power/nct6687d/Manifest
@@ -0,0 +1,2 @@
+DIST nct6687d-0_pre20260313.tar.gz 278911 BLAKE2B c14889cb43f1c71488c570ef4587da8d984fa0030735b5d45d105d1fc5534faf95b14cb9b8a09d23e4eb0a9941e8bfd0bbe12974fec549935253b040a880ad29 SHA512 a70c814cda5a1065b6fa75e8f84d0d0c8cfa2186d6873c4e486552bbeb05245c80a39200c0de8a4f60e78bbdff9d7e0d00ae95a9be99a7b6bae529691744fd21
+DIST nct6687d-0_pre20260519.tar.gz 279788 BLAKE2B 926f55d2cb63a7ac00653e0209b802e0833bd8ec0dae4de79b25fea664239e026943e0b98544c6f56384367348932256e0e1d0913cf23ef23be5f28c7d2043b3 SHA512 b997a67ebc9d272489e14a4ffa3dbfa596d16151cb882002ce8dcdc31a1ad75c54a02256c3c41cdd80dfbbe44e2562ddaf561740e9721e6df417825460fe6774
diff --git a/sys-power/nct6687d/metadata.xml b/sys-power/nct6687d/metadata.xml
new file mode 100644
index 000000000000..cac30ffc4214
--- /dev/null
+++ b/sys-power/nct6687d/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>nowa@gentoo.org</email>
+ <name>Nowa Ammerlaan</name>
+ </maintainer>
+ <longdescription>
+ This kernel module enables recognition of the Nuvoton NCT6687-R chipset in <pkg>sys-apps/lm-sensors</pkg>.
+ This sensor is present on some motherboards from, for example, MSI or ASUS.
+ </longdescription>
+ <upstream>
+ <remote-id type="github">Fred78290/nct6687d</remote-id>
+ <bugs-to>https://github.com/Fred78290/nct6687d/issues</bugs-to>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/nct6687d/nct6687d-0_pre20260313.ebuild b/sys-power/nct6687d/nct6687d-0_pre20260313.ebuild
new file mode 100644
index 000000000000..ececb76e4ca1
--- /dev/null
+++ b/sys-power/nct6687d/nct6687d-0_pre20260313.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit linux-mod-r1
+
+if [[ ${PV} == 9999 ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/Fred78290/nct6687d"
+else
+ COMMIT="cedda8bff09a4083e07414fb80fdc3901e7ab544"
+ SRC_URI="https://github.com/Fred78290/${PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+ S="${WORKDIR}/${PN}-${COMMIT}"
+ KEYWORDS="~amd64"
+fi
+
+DESCRIPTION="Kernel module for the Nuvoton NCT6687-R"
+HOMEPAGE="https://github.com/Fred78290/nct6687d"
+
+LICENSE="GPL-2"
+SLOT="0"
+
+src_compile() {
+ local modlist=( nct6687=drivers/hwmon::${KV_FULL}:build )
+ local modargs=( kver="${KV_FULL}" )
+ linux-mod-r1_src_compile
+}
diff --git a/sys-power/nct6687d/nct6687d-0_pre20260519.ebuild b/sys-power/nct6687d/nct6687d-0_pre20260519.ebuild
new file mode 100644
index 000000000000..a079a1543a49
--- /dev/null
+++ b/sys-power/nct6687d/nct6687d-0_pre20260519.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit linux-mod-r1
+
+if [[ ${PV} == 9999 ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/Fred78290/nct6687d"
+else
+ COMMIT="2189bf7c301b720d47f24d7b3e1413786cf00df5"
+ SRC_URI="https://github.com/Fred78290/${PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+ S="${WORKDIR}/${PN}-${COMMIT}"
+ KEYWORDS="~amd64"
+fi
+
+DESCRIPTION="Kernel module for the Nuvoton NCT6687-R"
+HOMEPAGE="https://github.com/Fred78290/nct6687d"
+
+LICENSE="GPL-2"
+SLOT="0"
+
+src_compile() {
+ local modlist=( nct6687=kernel/drivers/hwmon::${KV_FULL}:build )
+ local modargs=( kver="${KV_FULL}" )
+ linux-mod-r1_src_compile
+}
diff --git a/sys-power/nct6687d/nct6687d-9999.ebuild b/sys-power/nct6687d/nct6687d-9999.ebuild
new file mode 100644
index 000000000000..a079a1543a49
--- /dev/null
+++ b/sys-power/nct6687d/nct6687d-9999.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit linux-mod-r1
+
+if [[ ${PV} == 9999 ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/Fred78290/nct6687d"
+else
+ COMMIT="2189bf7c301b720d47f24d7b3e1413786cf00df5"
+ SRC_URI="https://github.com/Fred78290/${PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+ S="${WORKDIR}/${PN}-${COMMIT}"
+ KEYWORDS="~amd64"
+fi
+
+DESCRIPTION="Kernel module for the Nuvoton NCT6687-R"
+HOMEPAGE="https://github.com/Fred78290/nct6687d"
+
+LICENSE="GPL-2"
+SLOT="0"
+
+src_compile() {
+ local modlist=( nct6687=kernel/drivers/hwmon::${KV_FULL}:build )
+ local modargs=( kver="${KV_FULL}" )
+ linux-mod-r1_src_compile
+}
diff --git a/sys-power/nut/Manifest b/sys-power/nut/Manifest
new file mode 100644
index 000000000000..019afeb25a6f
--- /dev/null
+++ b/sys-power/nut/Manifest
@@ -0,0 +1 @@
+DIST nut-2.8.4.tar.gz 6522704 BLAKE2B 1a9e86c112055b623811e1747aa420ebb8022189c2e43f38c29cca93171d59b895d1ff5487d8f325c79833c6f6a76bffd849fb179db158bb2a1fbf86952dd797 SHA512 ddaca1d0cba17817fd27d036442395d11d64541b0782cd3c33d7b93712a15587dbad54fd7ed8a3ff14b89d75211560f76c30f5b9559e963adb4df7b05b66ec26
diff --git a/sys-power/nut/files/nut-2.2.2-init.d-upsdrv b/sys-power/nut/files/nut-2.2.2-init.d-upsdrv
new file mode 100644
index 000000000000..c87069ca2fd6
--- /dev/null
+++ b/sys-power/nut/files/nut-2.2.2-init.d-upsdrv
@@ -0,0 +1,47 @@
+#!/sbin/openrc-run
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+extra_commands="stopall startall"
+
+UPSNAME=${SVCNAME#*.}
+msgtext="drivers"
+[ "${UPSNAME}" = "${SVCNAME}" ] && UPSNAME=''
+[ -n "$UPSNAME" ] && msgtext="driver for $UPSNAME"
+
+depend() {
+ before upsd
+ [ "${UPSNAME}" != '' ] && provide upsdrv
+}
+
+start() {
+ _dostart "$UPSNAME" "$msgtext"
+}
+stop() {
+ _dostop "$UPSNAME" "$msgtext"
+}
+
+start_pre() {
+ checkpath -q -d -m 0700 -o nut:nut /run/nut
+}
+
+startall() {
+ _dostart "" "$msgtext"
+}
+stopall() {
+ _dostop "" "$msgtext"
+}
+
+_dostart() {
+ ebegin "Starting UPS $msgtext"
+ /usr/sbin/upsdrvctl start $UPSNAME
+ eend $? "Failed to start UPS $msgtext!"
+}
+
+_dostop() {
+ # The pidfile names depend on the actual UPS name
+ # Not in our control at all
+ ebegin "Stopping UPS $msgtext"
+ /usr/sbin/upsdrvctl stop $UPSNAME
+ eend $? "Failed to stop UPS $msgtext!"
+}
diff --git a/sys-power/nut/files/nut-2.6.2-lowspeed-buffer-size.patch b/sys-power/nut/files/nut-2.6.2-lowspeed-buffer-size.patch
new file mode 100644
index 000000000000..de4e2000adfa
--- /dev/null
+++ b/sys-power/nut/files/nut-2.6.2-lowspeed-buffer-size.patch
@@ -0,0 +1,18 @@
+http://bugs.gentoo.org/show_bug.cgi?id=318937
+http://boxster.ghz.cc/projects/nut/changeset/2407
+
+Respun from nut-2.4.3-lowspeed-buffer-size.patch
+
+Index: a/drivers/libhid.c
+===================================================================
+--- a/drivers/libhid.c
++++ b/drivers/libhid.c
+@@ -477,7 +477,7 @@
+ */
+ int HIDGetEvents(hid_dev_handle_t udev, HIDData_t **event, int eventsize)
+ {
+- unsigned char buf[SMALLBUF];
++ unsigned char buf[8]; /* Maximum size for low-speed USB devices */
+ int itemCount = 0;
+ int buflen, r, i;
+ HIDData_t *pData;
diff --git a/sys-power/nut/files/nut-2.6.5-init.d-upslog b/sys-power/nut/files/nut-2.6.5-init.d-upslog
new file mode 100644
index 000000000000..78ea7a3a5d66
--- /dev/null
+++ b/sys-power/nut/files/nut-2.6.5-init.d-upslog
@@ -0,0 +1,34 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+extra_started_commands="reload"
+
+pidfile=/run/nut/upslog.pid
+bin=/usr/bin/upslog
+
+depend() {
+ use upsdrv
+ after upsdrv
+}
+
+start_pre() {
+ checkpath -q -d -m 0700 -o nut:nut /run/nut
+}
+
+start() {
+ ebegin "Starting upslog"
+ start-stop-daemon --start --quiet --exec ${bin}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping upslog"
+ start-stop-daemon --stop --quiet --pidfile ${pidfile}
+ eend $?
+}
+reload() {
+ ebegin "Reloading upslog"
+ start-stop-daemon --stop --signal HUP --oknodo --quiet --pidfile ${pidfile}
+ eend $?
+}
diff --git a/sys-power/nut/files/nut-2.6.5-init.d-upsmon b/sys-power/nut/files/nut-2.6.5-init.d-upsmon
new file mode 100644
index 000000000000..171f77d31a09
--- /dev/null
+++ b/sys-power/nut/files/nut-2.6.5-init.d-upsmon
@@ -0,0 +1,33 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+extra_started_commands="reload"
+
+pidfile=/run/nut/upsmon.pid
+bin=/usr/sbin/upsmon
+
+depend() {
+ use net
+}
+
+start_pre() {
+ checkpath -q -d -m 0700 -o nut:nut /run/nut
+}
+
+start() {
+ ebegin "Starting upsmon"
+ start-stop-daemon --start --quiet --exec ${bin}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping upsmon"
+ start-stop-daemon --stop --quiet --pidfile ${pidfile}
+ eend $?
+}
+reload() {
+ ebegin "Reloading upsmon"
+ start-stop-daemon --stop --signal HUP --oknodo --quiet --pidfile ${pidfile}
+ eend $?
+}
diff --git a/sys-power/nut/files/nut-2.8.0-init.d-upsd b/sys-power/nut/files/nut-2.8.0-init.d-upsd
new file mode 100644
index 000000000000..bdc142345f99
--- /dev/null
+++ b/sys-power/nut/files/nut-2.8.0-init.d-upsd
@@ -0,0 +1,41 @@
+#!/sbin/openrc-run
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+extra_started_commands="reload"
+
+pidfile=/run/nut/upsd.pid
+bin=/usr/sbin/upsd
+
+depend() {
+ use net
+ before upsmon
+ after upsdrv
+}
+
+start_pre() {
+ checkpath -q -d -m 0700 -o nut:nut /run/nut
+}
+
+start() {
+ ebegin "Starting upsd"
+ # clean up first
+ pkill -u root,nut -x ${bin}
+ sleep 1
+ rm -f ${pidfile}
+ # now start up
+ start-stop-daemon --start --quiet --exec ${bin}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping upsd"
+ start-stop-daemon --stop --quiet --pidfile ${pidfile}
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading upsd"
+ start-stop-daemon --stop --signal HUP --oknodo --quiet --pidfile ${pidfile}
+ eend $?
+}
diff --git a/sys-power/nut/files/nut.powerfail.initd b/sys-power/nut/files/nut.powerfail.initd
new file mode 100644
index 000000000000..66f2378854eb
--- /dev/null
+++ b/sys-power/nut/files/nut.powerfail.initd
@@ -0,0 +1,47 @@
+#!/sbin/openrc-run
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+description='Signal the UPS to kill power in a power failure condition'
+
+depend() {
+ # This is only for baselayout2
+ if [ -f /etc/init.d/sysfs ]; then
+ keyword -jail -lxc -openvz -prefix -uml -vserver -xenu -timeout
+ need mount-ro
+ fi
+}
+
+start() {
+ if [ ! -f /etc/init.d/sysfs ]; then
+ eerror "The $SVCNAME init-script is written for baselayout-2!"
+ eerror "Please do not use it with baselayout-1!".
+ return 1
+ fi
+ local UPS_CTL UPS_POWERDOWN
+
+ if [ -f /etc/killpower -o -f /etc/nut/killpower ]; then
+ UPS_CTL=/usr/sbin/upsdrvctl
+ UPS_POWERDOWN="${UPS_CTL} shutdown"
+ elif [ -f /etc/apcupsd/powerfail ]; then
+ UPS_CTL=/sbin/apcupsd
+ UPS_POWERDOWN="${UPS_CTL} --killpower"
+ else
+ ewarn "UPS powerfail script scheduled, but no poweroff commands found."
+ return 0
+ fi
+
+ if [ -f "${UPS_CTL}" -a -x "${UPS_CTL}" ]; then
+ ebegin 'Signaling UPS to kill power'
+ ${UPS_POWERDOWN}
+ eend $?
+
+ ebegin 'Halt system and wait for the UPS to kill our power'
+ /sbin/halt -id
+ # If the sleep gets hit, something is wrong...
+ # do NOT restart the system.
+ while [ 1 ]; do sleep 60; done
+ else
+ ewarn "UPS powerfail script scheduled, and flags found, but ${UPS_CTL} missing."
+ fi
+}
diff --git a/sys-power/nut/files/systemd_notify.patch b/sys-power/nut/files/systemd_notify.patch
new file mode 100644
index 000000000000..657e0075420c
--- /dev/null
+++ b/sys-power/nut/files/systemd_notify.patch
@@ -0,0 +1,50 @@
+--- old/configure.ac 2023-06-09 00:53:54.121886669 +0200
++++ new/configure.ac 2023-06-09 00:57:13.149792791 +0200
+@@ -3220,45 +3220,8 @@
+ AC_PATH_PROG([SYSTEMD_ANALYZE_PROGRAM], [systemd-analyze], [/usr/bin/systemd-analyze])
+
+ dnl Relevant since 2023: https://github.com/systemd/systemd/pull/25916
+-SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=no
+-AS_IF([test -x "$SYSTEMD_ANALYZE_PROGRAM"], [
+- AC_MSG_CHECKING([if your systemd version supports Type=notify])
+- myFILE="`mktemp systemd-analyze-XXXXXX.service`"
+- cat > "$myFILE" << EOF
+-@<:@Unit@:>@
+-Description=temp
+-@<:@Service@:>@
+-ExecStart=/bin/true
+-Type=notify
+-EOF
+- if myOUT="`"$SYSTEMD_ANALYZE_PROGRAM" verify "$myFILE" 2>&1`" \
+- && ! (echo "$myOUT" | grep "Failed to parse service type, ignoring") \
+- ; then
+- SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=yes
+- fi
+- rm -f "$myFILE"
+- AC_MSG_RESULT([${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY}])
+- ])
+-
+-SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=no
+-AS_IF([test -x "$SYSTEMD_ANALYZE_PROGRAM"], [
+- AC_MSG_CHECKING([if your systemd version supports Type=notify-reload])
+- myFILE="`mktemp systemd-analyze-XXXXXX.service`"
+- cat > "$myFILE" << EOF
+-@<:@Unit@:>@
+-Description=temp
+-@<:@Service@:>@
+-ExecStart=/bin/true
+-Type=notify-reload
+-EOF
+- if myOUT="`"$SYSTEMD_ANALYZE_PROGRAM" verify "$myFILE" 2>&1`" \
+- && ! (echo "$myOUT" | grep "Failed to parse service type, ignoring") \
+- ; then
+- SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=yes
+- fi
+- rm -f "$myFILE"
+- AC_MSG_RESULT([${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD}])
+- ])
++SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=yes
++SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=yes
+
+ AS_IF([test x"${with_libsystemd}" = xyes && test x"${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY}" = xyes], [
+ dnl Built with sd_notify support
diff --git a/sys-power/nut/files/systemd_notify_285.patch b/sys-power/nut/files/systemd_notify_285.patch
new file mode 100644
index 000000000000..19ab9199c1a1
--- /dev/null
+++ b/sys-power/nut/files/systemd_notify_285.patch
@@ -0,0 +1,54 @@
+--- old/configure.ac 2025-10-25 09:52:35.665255066 +0200
++++ new/configure.ac 2025-10-25 09:58:01.495853211 +0200
+@@ -5113,49 +5113,8 @@
+ AC_PATH_PROG([SYSTEMD_ANALYZE_PROGRAM], [systemd-analyze], [/usr/bin/systemd-analyze])
+
+ dnl Relevant since 2023: https://github.com/systemd/systemd/pull/25916
+-SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=no
+-AS_IF([test -x "$SYSTEMD_ANALYZE_PROGRAM"], [
+- AC_MSG_CHECKING([if your systemd version supports Type=notify])
+- myFILE="`${MKTEMP} systemd-analyze-XXXXXX.service`"
+- cat > "$myFILE" << EOF
+-@<:@Unit@:>@
+-Description=temp
+-@<:@Service@:>@
+-ExecStart=/bin/true
+-Type=notify
+-EOF
+- if myOUT="`"$SYSTEMD_ANALYZE_PROGRAM" verify "$myFILE" 2>&1`" ; then
+- if (echo "$myOUT" | ${GREP} "Failed to parse service type, ignoring") ; then
+- true
+- else
+- SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=yes
+- fi
+- fi
+- rm -f "$myFILE"
+- AC_MSG_RESULT([${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY}])
+- ])
+-
+-SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=no
+-AS_IF([test -x "$SYSTEMD_ANALYZE_PROGRAM"], [
+- AC_MSG_CHECKING([if your systemd version supports Type=notify-reload])
+- myFILE="`${MKTEMP} systemd-analyze-XXXXXX.service`"
+- cat > "$myFILE" << EOF
+-@<:@Unit@:>@
+-Description=temp
+-@<:@Service@:>@
+-ExecStart=/bin/true
+-Type=notify-reload
+-EOF
+- if myOUT="`"$SYSTEMD_ANALYZE_PROGRAM" verify "$myFILE" 2>&1`" ; then
+- if (echo "$myOUT" | ${GREP} "Failed to parse service type, ignoring") ; then
+- true
+- else
+- SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=yes
+- fi
+- fi
+- rm -f "$myFILE"
+- AC_MSG_RESULT([${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD}])
+- ])
++SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=yes
++SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=yes
+
+ AS_IF([test x"${with_libsystemd}" = xyes && test x"${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY}" = xyes], [
+ dnl Built with sd_notify support
diff --git a/sys-power/nut/files/systemd_notify_285_openrc.patch b/sys-power/nut/files/systemd_notify_285_openrc.patch
new file mode 100644
index 000000000000..f9adce9f14f7
--- /dev/null
+++ b/sys-power/nut/files/systemd_notify_285_openrc.patch
@@ -0,0 +1,54 @@
+--- old/configure.ac 2025-10-25 09:52:35.665255066 +0200
++++ new/configure.ac 2025-10-25 09:58:01.495853211 +0200
+@@ -5113,49 +5113,8 @@
+ AC_PATH_PROG([SYSTEMD_ANALYZE_PROGRAM], [systemd-analyze], [/usr/bin/systemd-analyze])
+
+ dnl Relevant since 2023: https://github.com/systemd/systemd/pull/25916
+-SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=no
+-AS_IF([test -x "$SYSTEMD_ANALYZE_PROGRAM"], [
+- AC_MSG_CHECKING([if your systemd version supports Type=notify])
+- myFILE="`${MKTEMP} systemd-analyze-XXXXXX.service`"
+- cat > "$myFILE" << EOF
+-@<:@Unit@:>@
+-Description=temp
+-@<:@Service@:>@
+-ExecStart=/bin/true
+-Type=notify
+-EOF
+- if myOUT="`"$SYSTEMD_ANALYZE_PROGRAM" verify "$myFILE" 2>&1`" ; then
+- if (echo "$myOUT" | ${GREP} "Failed to parse service type, ignoring") ; then
+- true
+- else
+- SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=yes
+- fi
+- fi
+- rm -f "$myFILE"
+- AC_MSG_RESULT([${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY}])
+- ])
+-
+-SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=no
+-AS_IF([test -x "$SYSTEMD_ANALYZE_PROGRAM"], [
+- AC_MSG_CHECKING([if your systemd version supports Type=notify-reload])
+- myFILE="`${MKTEMP} systemd-analyze-XXXXXX.service`"
+- cat > "$myFILE" << EOF
+-@<:@Unit@:>@
+-Description=temp
+-@<:@Service@:>@
+-ExecStart=/bin/true
+-Type=notify-reload
+-EOF
+- if myOUT="`"$SYSTEMD_ANALYZE_PROGRAM" verify "$myFILE" 2>&1`" ; then
+- if (echo "$myOUT" | ${GREP} "Failed to parse service type, ignoring") ; then
+- true
+- else
+- SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=yes
+- fi
+- fi
+- rm -f "$myFILE"
+- AC_MSG_RESULT([${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD}])
+- ])
++SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=no
++SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=no
+
+ AS_IF([test x"${with_libsystemd}" = xyes && test x"${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY}" = xyes], [
+ dnl Built with sd_notify support
diff --git a/sys-power/nut/files/systemd_notify_openrc.patch b/sys-power/nut/files/systemd_notify_openrc.patch
new file mode 100644
index 000000000000..5e7d4101f57d
--- /dev/null
+++ b/sys-power/nut/files/systemd_notify_openrc.patch
@@ -0,0 +1,50 @@
+--- old/configure.ac 2023-06-09 00:53:54.121886669 +0200
++++ new/configure.ac 2023-06-09 00:57:13.149792791 +0200
+@@ -3220,45 +3220,8 @@
+ AC_PATH_PROG([SYSTEMD_ANALYZE_PROGRAM], [systemd-analyze], [/usr/bin/systemd-analyze])
+
+ dnl Relevant since 2023: https://github.com/systemd/systemd/pull/25916
+-SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=no
+-AS_IF([test -x "$SYSTEMD_ANALYZE_PROGRAM"], [
+- AC_MSG_CHECKING([if your systemd version supports Type=notify])
+- myFILE="`mktemp systemd-analyze-XXXXXX.service`"
+- cat > "$myFILE" << EOF
+-@<:@Unit@:>@
+-Description=temp
+-@<:@Service@:>@
+-ExecStart=/bin/true
+-Type=notify
+-EOF
+- if myOUT="`"$SYSTEMD_ANALYZE_PROGRAM" verify "$myFILE" 2>&1`" \
+- && ! (echo "$myOUT" | grep "Failed to parse service type, ignoring") \
+- ; then
+- SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=yes
+- fi
+- rm -f "$myFILE"
+- AC_MSG_RESULT([${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY}])
+- ])
+-
+-SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=no
+-AS_IF([test -x "$SYSTEMD_ANALYZE_PROGRAM"], [
+- AC_MSG_CHECKING([if your systemd version supports Type=notify-reload])
+- myFILE="`mktemp systemd-analyze-XXXXXX.service`"
+- cat > "$myFILE" << EOF
+-@<:@Unit@:>@
+-Description=temp
+-@<:@Service@:>@
+-ExecStart=/bin/true
+-Type=notify-reload
+-EOF
+- if myOUT="`"$SYSTEMD_ANALYZE_PROGRAM" verify "$myFILE" 2>&1`" \
+- && ! (echo "$myOUT" | grep "Failed to parse service type, ignoring") \
+- ; then
+- SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=yes
+- fi
+- rm -f "$myFILE"
+- AC_MSG_RESULT([${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD}])
+- ])
++SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY=no
++SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY_RELOAD=no
+
+ AS_IF([test x"${with_libsystemd}" = xyes && test x"${SYSTEMD_SUPPORTS_DAEMON_TYPE_NOTIFY}" = xyes], [
+ dnl Built with sd_notify support
diff --git a/sys-power/nut/metadata.xml b/sys-power/nut/metadata.xml
new file mode 100644
index 000000000000..bd97b65a972b
--- /dev/null
+++ b/sys-power/nut/metadata.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>robbat2@gentoo.org</email>
+ <name>Robin H. Johnson</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>prometheanfire@gentoo.org</email>
+ </maintainer>
+ <maintainer type="person" proxied="yes">
+ <email>web@inode64.com</email>
+ <name>Fco. Javier Félix</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <use>
+ <flag name="gpio">Includes all UPS drivers that use GPIO.</flag>
+ <flag name="i2c">Includes all UPS drivers that use I2C.</flag>
+ <flag name="ipmi">Includes all UPS drivers that use ipmi.</flag>
+ <flag name="modbus">Includes all UPS drivers that use MODBUS.</flag>
+ <flag name="monitor">Add a Qt6 gui monitor.</flag>
+ <flag name="serial">Includes all UPS drivers that use SERIAL.</flag>
+ <flag name="snmp">Includes all UPS drivers that use SNMP.</flag>
+ <flag name="usb">Includes all UPS drivers that use USB.</flag>
+ <flag name="xml">Includes all UPS drivers that use XML.</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">networkupstools/nut</remote-id>
+ <bugs-to>https://github.com/networkupstools/nut/issues</bugs-to>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/nut/nut-2.8.4.ebuild b/sys-power/nut/nut-2.8.4.ebuild
new file mode 100644
index 000000000000..fe0cc7cfd396
--- /dev/null
+++ b/sys-power/nut/nut-2.8.4.ebuild
@@ -0,0 +1,266 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit bash-completion-r1 desktop linux-info optfeature
+inherit python-single-r1 systemd tmpfiles toolchain-funcs udev wrapper xdg
+
+MY_P=${P/_/-}
+
+DESCRIPTION="Network-UPS Tools"
+HOMEPAGE="https://networkupstools.org/"
+
+if [[ ${PV} == *9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/networkupstools/${PN}.git"
+ inherit git-r3
+else
+ SRC_URI="https://networkupstools.org/source/${PV%.*}/${MY_P}.tar.gz"
+ KEYWORDS="amd64 arm ~arm64 ppc ppc64 ~riscv x86"
+fi
+
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="gpio cgi doc ipmi serial i2c +man snmp +usb modbus selinux ssl tcpd test xml zeroconf python monitor systemd"
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="
+ monitor? ( python )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ snmp? ( python )
+"
+
+# sys-apps/systemd-253 required for Type=notify-reload
+DEPEND="
+ acct-group/nut
+ acct-user/nut
+ dev-libs/libltdl
+ virtual/udev
+ cgi? ( >=media-libs/gd-2[png] )
+ gpio? ( dev-libs/libgpiod )
+ i2c? ( sys-apps/i2c-tools )
+ ipmi? ( sys-libs/freeipmi )
+ modbus? ( dev-libs/libmodbus )
+ python? ( ${PYTHON_DEPS} )
+ snmp? ( net-analyzer/net-snmp:= )
+ ssl? ( >=dev-libs/openssl-1:= )
+ systemd? ( >=sys-apps/systemd-253 )
+ tcpd? ( sys-apps/tcp-wrappers )
+ usb? ( virtual/libusb:1 )
+ xml? ( >=net-libs/neon-0.25.0:= )
+ zeroconf? ( net-dns/avahi )
+"
+BDEPEND="
+ virtual/pkgconfig
+ man? ( app-text/asciidoc )
+ test? ( dev-util/cppunit )
+"
+RDEPEND="
+ ${DEPEND}
+ monitor? ( $(python_gen_cond_dep '
+ dev-python/pyqt6[gui,widgets,${PYTHON_USEDEP}]
+ ')
+ )
+ selinux? ( sec-policy/selinux-nut )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2.6.2-lowspeed-buffer-size.patch"
+)
+PATCH_NEEDS_AUTOGEN=1
+
+pkg_pretend() {
+ if use i2c; then
+ CONFIG_CHECK="~I2C_CHARDEV"
+ ERROR_I2C_CHARDEV="You must enable I2C_CHARDEV in your kernel to continue"
+ fi
+ if use usb; then
+ CONFIG_CHECK+=" ~HIDRAW ~USB_HIDDEV"
+ ERROR_HIDRAW="HIDRAW is needed to support USB UPSes"
+ ERROR_I2C_CHARDEV="USB_HIDDEV is needed to support USB UPSes"
+ fi
+ if use gpio; then
+ CONFIG_CHECK="~GPIO_CDEV_V1"
+ ERROR_GPIO_CDEV_V1="GPIO_CDEV_V1 is needed to support GPIO UPSes"
+ fi
+ if use serial; then
+ CONFIG_CHECK="~SERIAL_8250"
+ ERROR_SERIAL_8250="SERIAL_8250 is needed to support Serial UPSes"
+ fi
+
+ # Now do the actual checks setup above
+ check_extra_config
+}
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ if use systemd; then
+ PATCHES+=( "${FILESDIR}/systemd_notify.patch" )
+ else
+ PATCHES+=( "${FILESDIR}/systemd_notify_openrc.patch" )
+ fi
+
+ default
+
+ if [[ ${PV} == *9999 ]] || [[ ${PATCH_NEEDS_AUTOGEN} == 1 ]] ; then
+ ./autogen.sh || die
+ fi
+
+ xdg_environment_reset
+}
+
+src_configure() {
+ local myeconfargs=(
+ --datadir=/usr/share/nut
+ --datarootdir=/usr/share/nut
+ --disable-static
+ --disable-strip
+ --disable-Werror
+ --sysconfdir=/etc/nut
+ --with-dev
+ --with-drvpath="/$(get_libdir)/nut"
+ --with-group=nut
+ --with-htmlpath=/usr/share/nut/html
+ --with-logfacility=LOG_DAEMON
+ --with-statepath=/run/nut
+ --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+ --with-systemdtmpfilesdir="/usr/lib/tmpfiles.d"
+ --with-udev-dir="$(get_udevdir)"
+ --with-user=nut
+ --without-powerman
+ --without-python
+ --without-python2
+ --with-altpidpath=/run/nut
+ --with-pidpath=/run/nut
+ $(use_with cgi)
+ $(use_with gpio)
+ $(use_with i2c linux_i2c)
+ $(use_with ipmi freeipmi)
+ $(use_with ipmi)
+ $(use_with monitor nut_monitor)
+ $(use_with python pynut)
+ $(use_with serial)
+ $(use_with snmp)
+ $(use_with ssl)
+ $(use_with systemd libsystemd)
+ $(use_with tcpd wrap)
+ $(use_with usb)
+ $(use_with xml neon)
+ $(use_with zeroconf avahi)
+ )
+
+ tc-export CC CXX AR
+
+ use cgi && myeconfargs+=( --with-cgipath=/usr/share/nut/cgi )
+ use man && myeconfargs+=( --with-doc=man )
+ use python && myeconfargs+=( --with-python3="${PYTHON}" ) || myeconfargs+=( --without-python3 )
+
+ export bashcompdir="$(get_bashcompdir)"
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+
+ rm -rf "${ED}/etc/hotplug" || die
+
+ find "${ED}" -name '*.la' -delete || die
+
+ dodir /sbin
+
+ if use cgi; then
+ elog "CGI monitoring scripts are installed in ${EPREFIX}/usr/share/nut/cgi."
+ elog "copy them to your web server's ScriptPath to activate (this is a"
+ elog "change from the old location)."
+ elog "If you use lighttpd, see lighttpd_nut.conf in the documentation."
+ elog
+ elog "Use script aliases according to the web server you use (apache, nginx, lighttpd, etc...)"
+ fi
+
+ # This must be done after all of the install phases
+ local i
+ for i in "${ED}"/etc/nut/*.sample ; do
+ mv "${i}" "${i/.sample/}" || die
+ done
+
+ local DOCS=( AUTHORS MAINTAINERS NEWS.adoc README.adoc TODO.adoc UPGRADING.adoc )
+ einstalldocs
+
+ if use doc; then
+ newdoc lib/README.adoc README.lib.adoc
+ dodoc docs/*.txt
+ docinto cables
+ dodoc docs/cables/*
+ fi
+
+ newinitd "${FILESDIR}"/nut-2.8.0-init.d-upsd upsd
+ newinitd "${FILESDIR}"/nut-2.2.2-init.d-upsdrv upsdrv
+ newinitd "${FILESDIR}"/nut-2.6.5-init.d-upsmon upsmon
+ newinitd "${FILESDIR}"/nut-2.6.5-init.d-upslog upslog
+ newinitd "${FILESDIR}"/nut.powerfail.initd nut.powerfail
+
+ newbashcomp "${S}"/scripts/misc/nut.bash_completion upsc
+ bashcomp_alias upsc upscmd upsd upsdrvctl upsmon upsrw
+
+ if use zeroconf; then
+ insinto /etc/avahi/services
+ doins scripts/avahi/nut.service
+ fi
+
+ if use monitor; then
+ make_wrapper NUT-Monitor-py3qt5 /usr/share/nut/nut-monitor/app/NUT-Monitor-py3qt5 /usr/share/nut/nut-monitor/app
+
+ # Install desktop shortcut
+ newmenu scripts/python/app/nut-monitor-py3qt5.desktop nut-monitor.desktop
+
+ # Installing Application icons
+ local res
+ for res in 48 64 256; do
+ doicon -s ${res} scripts/python/app/icons/${res}x${res}/nut-monitor.png
+ done
+ doicon -s scalable scripts/python/app/icons/scalable/nut-monitor.svg
+ fi
+
+ use python && python_optimize
+}
+
+pkg_postinst() {
+ elog "Please note that NUT now runs under the 'nut' user."
+ elog "NUT is in the uucp group for access to RS-232 UPS."
+ elog "However if you use a USB UPS you may need to look at the udev or"
+ elog "hotplug rules that are installed, and alter them suitably."
+ elog
+ elog "You are strongly advised to read the UPGRADING file provided by upstream."
+ elog
+ elog "Please note that upsdrv is NOT automatically started by upsd anymore."
+ elog "If you have multiple UPS units, you can use their NUT names to"
+ elog "have a service per UPS:"
+ elog "ln -s /etc/init.d/upsdrv /etc/init.d/upsdrv.\$UPSNAME"
+ elog
+ elog 'If you want apcupsd to power off your UPS when it'
+ elog 'shuts down your system in a power failure, you must'
+ elog 'add nut.powerfail to your shutdown runlevel:'
+ elog
+ elog 'rc-update add nut.powerfail shutdown'
+ elog
+
+ optfeature "all notify events generate a global message (wall) to all users, plus they are logged via the syslog" \
+ sys-apps/util-linux[logger,tty-helpers]
+
+ udev_reload
+
+ tmpfiles_process nut-common-tmpfiles.conf
+ xdg_pkg_postinst
+}
+
+pkg_postrm() {
+ udev_reload
+ xdg_pkg_postrm
+}
diff --git a/sys-power/nut/nut-9999.ebuild b/sys-power/nut/nut-9999.ebuild
new file mode 100644
index 000000000000..ceac311bbbc0
--- /dev/null
+++ b/sys-power/nut/nut-9999.ebuild
@@ -0,0 +1,266 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit bash-completion-r1 desktop linux-info optfeature
+inherit python-single-r1 systemd tmpfiles toolchain-funcs udev wrapper xdg
+
+MY_P=${P/_/-}
+
+DESCRIPTION="Network-UPS Tools"
+HOMEPAGE="https://networkupstools.org/"
+
+if [[ ${PV} == *9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/networkupstools/${PN}.git"
+ inherit git-r3
+else
+ SRC_URI="https://networkupstools.org/source/${PV%.*}/${MY_P}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+fi
+
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="gpio cgi doc ipmi serial i2c +man snmp +usb modbus selinux ssl tcpd test xml zeroconf python monitor systemd"
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="
+ monitor? ( python )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ snmp? ( python )
+"
+
+# sys-apps/systemd-253 required for Type=notify-reload
+DEPEND="
+ acct-group/nut
+ acct-user/nut
+ dev-libs/libltdl
+ virtual/udev
+ cgi? ( >=media-libs/gd-2[png] )
+ gpio? ( dev-libs/libgpiod )
+ i2c? ( sys-apps/i2c-tools )
+ ipmi? ( sys-libs/freeipmi )
+ modbus? ( dev-libs/libmodbus )
+ python? ( ${PYTHON_DEPS} )
+ snmp? ( net-analyzer/net-snmp:= )
+ ssl? ( >=dev-libs/openssl-1:= )
+ systemd? ( >=sys-apps/systemd-253 )
+ tcpd? ( sys-apps/tcp-wrappers )
+ usb? ( virtual/libusb:1 )
+ xml? ( >=net-libs/neon-0.25.0:= )
+ zeroconf? ( net-dns/avahi )
+"
+BDEPEND="
+ virtual/pkgconfig
+ man? ( app-text/asciidoc )
+ test? ( dev-util/cppunit )
+"
+RDEPEND="
+ ${DEPEND}
+ monitor? ( $(python_gen_cond_dep '
+ dev-python/pyqt6[gui,widgets,${PYTHON_USEDEP}]
+ ')
+ )
+ selinux? ( sec-policy/selinux-nut )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2.6.2-lowspeed-buffer-size.patch"
+)
+PATCH_NEEDS_AUTOGEN=1
+
+pkg_pretend() {
+ if use i2c; then
+ CONFIG_CHECK="~I2C_CHARDEV"
+ ERROR_I2C_CHARDEV="You must enable I2C_CHARDEV in your kernel to continue"
+ fi
+ if use usb; then
+ CONFIG_CHECK+=" ~HIDRAW ~USB_HIDDEV"
+ ERROR_HIDRAW="HIDRAW is needed to support USB UPSes"
+ ERROR_I2C_CHARDEV="USB_HIDDEV is needed to support USB UPSes"
+ fi
+ if use gpio; then
+ CONFIG_CHECK="~GPIO_CDEV_V1"
+ ERROR_GPIO_CDEV_V1="GPIO_CDEV_V1 is needed to support GPIO UPSes"
+ fi
+ if use serial; then
+ CONFIG_CHECK="~SERIAL_8250"
+ ERROR_SERIAL_8250="SERIAL_8250 is needed to support Serial UPSes"
+ fi
+
+ # Now do the actual checks setup above
+ check_extra_config
+}
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ if use systemd; then
+ PATCHES+=( "${FILESDIR}/systemd_notify_285.patch" )
+ else
+ PATCHES+=( "${FILESDIR}/systemd_notify_285_openrc.patch" )
+ fi
+
+ default
+
+ if [[ ${PV} == *9999 ]] || [[ ${PATCH_NEEDS_AUTOGEN} == 1 ]] ; then
+ ./autogen.sh || die
+ fi
+
+ xdg_environment_reset
+}
+
+src_configure() {
+ local myeconfargs=(
+ --datadir=/usr/share/nut
+ --datarootdir=/usr/share/nut
+ --disable-static
+ --disable-strip
+ --disable-Werror
+ --sysconfdir=/etc/nut
+ --with-dev
+ --with-drvpath="/$(get_libdir)/nut"
+ --with-group=nut
+ --with-htmlpath=/usr/share/nut/html
+ --with-logfacility=LOG_DAEMON
+ --with-statepath=/run/nut
+ --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+ --with-systemdtmpfilesdir="/usr/lib/tmpfiles.d"
+ --with-udev-dir="$(get_udevdir)"
+ --with-user=nut
+ --without-powerman
+ --without-python
+ --without-python2
+ --with-altpidpath=/run/nut
+ --with-pidpath=/run/nut
+ $(use_with cgi)
+ $(use_with gpio)
+ $(use_with i2c linux_i2c)
+ $(use_with ipmi freeipmi)
+ $(use_with ipmi)
+ $(use_with monitor nut_monitor)
+ $(use_with python pynut)
+ $(use_with serial)
+ $(use_with snmp)
+ $(use_with ssl)
+ $(use_with systemd libsystemd)
+ $(use_with tcpd wrap)
+ $(use_with usb)
+ $(use_with xml neon)
+ $(use_with zeroconf avahi)
+ )
+
+ tc-export CC CXX AR
+
+ use cgi && myeconfargs+=( --with-cgipath=/usr/share/nut/cgi )
+ use man && myeconfargs+=( --with-doc=man )
+ use python && myeconfargs+=( --with-python3="${PYTHON}" ) || myeconfargs+=( --without-python3 )
+
+ export bashcompdir="$(get_bashcompdir)"
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+
+ rm -rf "${ED}/etc/hotplug" || die
+
+ find "${ED}" -name '*.la' -delete || die
+
+ dodir /sbin
+
+ if use cgi; then
+ elog "CGI monitoring scripts are installed in ${EPREFIX}/usr/share/nut/cgi."
+ elog "copy them to your web server's ScriptPath to activate (this is a"
+ elog "change from the old location)."
+ elog "If you use lighttpd, see lighttpd_nut.conf in the documentation."
+ elog
+ elog "Use script aliases according to the web server you use (apache, nginx, lighttpd, etc...)"
+ fi
+
+ # This must be done after all of the install phases
+ local i
+ for i in "${ED}"/etc/nut/*.sample ; do
+ mv "${i}" "${i/.sample/}" || die
+ done
+
+ local DOCS=( AUTHORS MAINTAINERS NEWS.adoc README.adoc TODO.adoc UPGRADING.adoc )
+ einstalldocs
+
+ if use doc; then
+ newdoc lib/README.adoc README.lib.adoc
+ dodoc docs/*.txt
+ docinto cables
+ dodoc docs/cables/*
+ fi
+
+ newinitd "${FILESDIR}"/nut-2.8.0-init.d-upsd upsd
+ newinitd "${FILESDIR}"/nut-2.2.2-init.d-upsdrv upsdrv
+ newinitd "${FILESDIR}"/nut-2.6.5-init.d-upsmon upsmon
+ newinitd "${FILESDIR}"/nut-2.6.5-init.d-upslog upslog
+ newinitd "${FILESDIR}"/nut.powerfail.initd nut.powerfail
+
+ newbashcomp "${S}"/scripts/misc/nut.bash_completion upsc
+ bashcomp_alias upsc upscmd upsd upsdrvctl upsmon upsrw
+
+ if use zeroconf; then
+ insinto /etc/avahi/services
+ doins scripts/avahi/nut.service
+ fi
+
+ if use monitor; then
+ make_wrapper NUT-Monitor-py3qt5 /usr/share/nut/nut-monitor/app/NUT-Monitor-py3qt5 /usr/share/nut/nut-monitor/app
+
+ # Install desktop shortcut
+ newmenu scripts/python/app/nut-monitor-py3qt5.desktop nut-monitor.desktop
+
+ # Installing Application icons
+ local res
+ for res in 48 64 256; do
+ doicon -s ${res} scripts/python/app/icons/${res}x${res}/nut-monitor.png
+ done
+ doicon -s scalable scripts/python/app/icons/scalable/nut-monitor.svg
+ fi
+
+ use python && python_optimize
+}
+
+pkg_postinst() {
+ elog "Please note that NUT now runs under the 'nut' user."
+ elog "NUT is in the uucp group for access to RS-232 UPS."
+ elog "However if you use a USB UPS you may need to look at the udev or"
+ elog "hotplug rules that are installed, and alter them suitably."
+ elog
+ elog "You are strongly advised to read the UPGRADING file provided by upstream."
+ elog
+ elog "Please note that upsdrv is NOT automatically started by upsd anymore."
+ elog "If you have multiple UPS units, you can use their NUT names to"
+ elog "have a service per UPS:"
+ elog "ln -s /etc/init.d/upsdrv /etc/init.d/upsdrv.\$UPSNAME"
+ elog
+ elog 'If you want apcupsd to power off your UPS when it'
+ elog 'shuts down your system in a power failure, you must'
+ elog 'add nut.powerfail to your shutdown runlevel:'
+ elog
+ elog 'rc-update add nut.powerfail shutdown'
+ elog
+
+ optfeature "all notify events generate a global message (wall) to all users, plus they are logged via the syslog" \
+ sys-apps/util-linux[logger,tty-helpers]
+
+ udev_reload
+
+ tmpfiles_process nut-common-tmpfiles.conf
+ xdg_pkg_postinst
+}
+
+pkg_postrm() {
+ udev_reload
+ xdg_pkg_postrm
+}
diff --git a/sys-power/nvclock/Manifest b/sys-power/nvclock/Manifest
new file mode 100644
index 000000000000..5774a0927516
--- /dev/null
+++ b/sys-power/nvclock/Manifest
@@ -0,0 +1 @@
+DIST nvclock-0.8_p20110102.tar.bz2 285043 BLAKE2B f1a524b6841a7eedcfbb9b0cd449f1af10c40cee11a814221d0cdcb42e507763313de112eea948dc05508fbd439a3dac504297c723fe4f0f821241204f5ccf89 SHA512 01bf7faed83acdf2390e1f410b2f8b697ff647b15562a6960a99666ec5121b532cbf4380137c9ee24221ccafff641bcdef4748dcad7ac92fb25fa15e735dd140
diff --git a/sys-power/nvclock/files/nvclock-0.8_p20110102-buffers.patch b/sys-power/nvclock/files/nvclock-0.8_p20110102-buffers.patch
new file mode 100644
index 000000000000..f64cb9b8456d
--- /dev/null
+++ b/sys-power/nvclock/files/nvclock-0.8_p20110102-buffers.patch
@@ -0,0 +1,202 @@
+https://bugs.gentoo.org/364667
+
+clean up random buffer overflows in the code
+
+--- a/src/backend/back_linux.c
++++ b/src/backend/back_linux.c
+@@ -42,7 +42,9 @@ static int probe_devices();
+ static int check_driver()
+ {
+ FILE *proc;
+- char buffer[80];
++ char *buffer = NULL;
++ size_t len;
++ int ret = 0;
+
+ proc = fopen("/proc/modules", "r");
+
+@@ -50,9 +52,9 @@ static int check_driver()
+ if(proc == NULL)
+ return 0;
+
+- while(fgets(buffer, 80, proc) != NULL)
++ while(getline(&buffer, &len, proc) != -1)
+ {
+- char name[80];
++ char name[100];
+ int size;
+ int used;
+
+@@ -64,26 +66,23 @@ static int check_driver()
+ {
+ if(strcmp(name, "NVdriver") == 0)
+ {
+- fclose(proc);
+ if(used)
+- return 1;
+-
+- return 0;
++ ret = 1;
++ break;
+ }
+
+ if(strcmp(name, "nvidia") == 0)
+ {
+- fclose(proc);
+ if(used)
+- return 2;
+-
+- return 0;
++ ret = 2;
++ break;
+ }
+ }
+ }
++ free(buffer);
+ fclose(proc);
+
+- return 0;
++ return ret;
+ }
+
+ int init_nvclock()
+@@ -114,7 +113,8 @@ static int probe_devices()
+ {
+ int dev, irq, reg_addr, i=0;
+ unsigned short devbusfn;
+- char buf[256];
++ char *buf = NULL;
++ size_t len;
+ FILE *proc;
+
+ proc = fopen("/proc/bus/pci/devices", "r");
+@@ -124,7 +124,7 @@ static int probe_devices()
+ return 0;
+ }
+
+- while(fgets(buf, sizeof(buf)-1, proc))
++ while(getline(&buf, &len, proc) != -1)
+ {
+ if(sscanf(buf,"%hx %x %x %x",&devbusfn, &dev, &irq, &reg_addr) != 4) continue;
+
+@@ -181,6 +181,7 @@ static int probe_devices()
+ i++;
+ }
+ }
++ free(buf);
+ fclose(proc);
+
+ if(i==0)
+--- a/src/backend/config.c
++++ b/src/backend/config.c
+@@ -286,8 +286,9 @@ int open_config()
+ {
+ if(mkdir(nvclock.path, 0755))
+ {
+- char buf[80];
+- sprintf(buf, "Can't create '%s'. Do you have sufficient permissions?\n", nvclock.path);
++ char buf[1024];
++ snprintf(buf, sizeof(buf), "Can't create path (do you have sufficient permissions?): %s", nvclock.path);
++ buf[sizeof(buf) - 1] = '\0';
+ set_error_str(buf);
+ return 0;
+ }
+@@ -297,8 +298,9 @@ int open_config()
+ /* Check if .nvclock really is a directory. For some users it was a file and this led to a segfault. */
+ if(!S_ISDIR(stat_buf.st_mode))
+ {
+- char buf[80];
+- sprintf(buf, "Can't open '%s'. Is it really a directory?\n", nvclock.path);
++ char buf[1024];
++ snprintf(buf, sizeof(buf), "Can't open path (Is it really a directory?): %s", nvclock.path);
++ buf[sizeof(buf) - 1] = '\0';
+ set_error_str(buf);
+ return 0;
+ }
+--- a/src/backend/error.c
++++ b/src/backend/error.c
+@@ -41,23 +41,19 @@ void set_error_str(const char *str)
+ }
+
+
+-char *get_error(char *buf, int size)
++const char *get_error(void)
+ {
+ switch(nvclock.nv_errno)
+ {
+ case NV_ERR_NO_DEVICES_FOUND:
+- strcpy(buf, "No nvidia cards found in your system!");
+- break;
++ return "No nvidia cards found in your system!";
+ case NV_ERR_NO_DRIVERS_FOUND:
+- strcpy(buf, "You don't have enough permissions to run NVClock! Retry as root or install the Nvidia drivers.");
+- break;
++ return "You don't have enough permissions to run NVClock! Retry as root or install the Nvidia drivers.";
+ case NV_ERR_NOT_ENOUGH_PERMISSIONS:
+- strcpy(buf, "You don't have enough permissions to run NVClock! Retry as root.");
+- break;
++ return "You don't have enough permissions to run NVClock! Retry as root.";
+ case NV_ERR_OTHER:
+- strcpy(buf, nvclock.nv_err_str);
+- break;
++ return nvclock.nv_err_str;
+ }
+
+- return buf;
++ return "unknown";
+ }
+--- a/src/backend/nvclock.h
++++ b/src/backend/nvclock.h
+@@ -335,7 +335,7 @@ cfg_entry* lookup_entry(cfg_entry **cfg, char *section, char *name);
+ void destroy(cfg_entry **cfg);
+
+ /* error handling */
+-char *get_error(char *buf, int size);
++const char *get_error(void);
+ void set_error(int code);
+ void set_error_str(const char *err);
+
+--- a/src/gtk/main.c
++++ b/src/gtk/main.c
+@@ -264,8 +264,7 @@ int main (int argc, char *argv[])
+ */
+ if(!init_nvclock())
+ {
+- char buf[80];
+- GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", get_error(buf, 80));
++ GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", get_error());
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ g_signal_connect_swapped(GTK_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), GTK_OBJECT(dialog));
+ gtk_widget_destroy(dialog);
+--- a/src/nvclock.c
++++ b/src/nvclock.c
+@@ -604,8 +604,7 @@ int main(int argc, char *argv[])
+
+ if(!init_nvclock())
+ {
+- char buf[80];
+- fprintf(stderr, "Error: %s\n", get_error(buf, 80));
++ fprintf(stderr, "Error: %s\n", get_error());
+ return 0;
+ }
+
+@@ -851,8 +850,7 @@ int main(int argc, char *argv[])
+ {
+ if(!set_card(i))
+ {
+- char buf[80];
+- fprintf(stderr, "Error: %s\n", get_error(buf, 80));
++ fprintf(stderr, "Error: %s\n", get_error());
+ return 0;
+ }
+
+@@ -887,8 +885,7 @@ int main(int argc, char *argv[])
+ /* set the card object to the requested card */
+ if(!set_card(card_number))
+ {
+- char buf[80];
+- fprintf(stderr, "Error: %s\n", get_error(buf, 80));
++ fprintf(stderr, "Error: %s\n", get_error());
+ return 0;
+ }
+
diff --git a/sys-power/nvclock/files/nvclock-0.8_p20110102-desktop.patch b/sys-power/nvclock/files/nvclock-0.8_p20110102-desktop.patch
new file mode 100644
index 000000000000..034208ff817a
--- /dev/null
+++ b/sys-power/nvclock/files/nvclock-0.8_p20110102-desktop.patch
@@ -0,0 +1,18 @@
+fix qa warning:
+
+/usr/share/applications/nvclock.desktop: error: (will be fatal in the future):
+value "nvclock.png" for key "Icon" in group "Desktop Entry" is an icon name
+with an extension, but there should be no extension as described in the Icon
+Theme Specification if the value is not an absolute path
+
+--- a/nvclock.desktop
++++ b/nvclock.desktop
+@@ -3,7 +3,7 @@ Encoding=UTF-8
+ Name=NVCLOCK
+ Comment=Overclock and Monitor NVIDIA cards
+ Exec=nvclock_gtk
+-Icon=nvclock.png
++Icon=nvclock
+ Terminal=false
+ Type=Application
+ Categories=System;
diff --git a/sys-power/nvclock/files/nvclock-0.8_p20110102-fno-common.patch b/sys-power/nvclock/files/nvclock-0.8_p20110102-fno-common.patch
new file mode 100644
index 000000000000..d95053a54cc6
--- /dev/null
+++ b/sys-power/nvclock/files/nvclock-0.8_p20110102-fno-common.patch
@@ -0,0 +1,11 @@
+--- a/src/nvcontrol/nvcontrol.h
++++ b/src/nvcontrol/nvcontrol.h
+@@ -42,7 +42,7 @@
+ } NVOptionList;
+
+ #define OPTION_LIST_SIZE 27
+-NVOptionList option_list[OPTION_LIST_SIZE];
++extern NVOptionList option_list[OPTION_LIST_SIZE];
+ int init_nvcontrol();
+ NVOptionList *nvcontrol_lookup_option(int option);
+
diff --git a/sys-power/nvclock/files/nvclock-0.8_p20110102-r1-make.patch b/sys-power/nvclock/files/nvclock-0.8_p20110102-r1-make.patch
new file mode 100644
index 000000000000..89a9b7c1c5e3
--- /dev/null
+++ b/sys-power/nvclock/files/nvclock-0.8_p20110102-r1-make.patch
@@ -0,0 +1,157 @@
+- Fix building with --as-needed
+- Fix parallel make by defining two new targets
+- Fix one spelling error
+- Respect AR, CC, RANLIB, CFLAGS, LDFLAGS
+- Link GTK frontend against -lX11 since it uses XOpenDisplay all the time
+
+--- a/configure.in
++++ b/configure.in
+@@ -11,6 +11,9 @@
+ AC_PROG_MAKE_SET
+ AC_HEADER_STDC
+
++AC_CHECK_TOOL([AR], [ar])
++AC_PROG_RANLIB
++
+
+ HAVE_GTK2=no
+ HAVE_QT=no
+@@ -75,6 +78,7 @@
+
+ dnl We will only compile one NVClock gtk binary, choose the latest version availible
+ if test x"$enable_gtk" = "xyes"; then
++ PKG_CHECK_MODULES([X11], [x11])
+ PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.4.0, have_gtk2=yes, have_gtk2=no)
+ GTK2_CFLAGS=$GTK_CFLAGS
+ GTK2_LIBS=$GTK_LIBS
+@@ -109,22 +113,18 @@
+ X11_LIBS="$X11_LIBS $XEXT_LIBS"
+ if test x"$X11_LIBS" != x ; then
+ HAVE_NVCONTROL=yes
+- AC_SUBST(X11_CFLAGS)
+- AC_SUBST(X11_LIBS)
+ AC_DEFINE([HAVE_NVCONTROL], [1], [NV-CONTROL support for changing OpenGL settings])
+ fi
+ fi
+
++AC_SEARCH_LIBS([dlsym], [dl dld], [], [
++ AC_MSG_ERROR([unable to find the dlsym() function])
++])
++
+ AC_SUBST(HAVE_GTK2)
+ AC_SUBST(HAVE_QT)
+ AC_SUBST(HAVE_NVCONTROL)
+
+-AC_SUBST(CFLAGS)
+-AC_SUBST(LIBS)
+-
+-RANLIB=ranlib
+-AC_SUBST(RANLIB)
+-
+
+ AC_OUTPUT(src/Makefile
+ src/backend/Makefile
+@@ -141,7 +141,7 @@
+ if [test "$HAVE_NVCONTROL" = "yes"]; then
+ echo "- NV-CONTROL support enabled"
+ else
+- echo "- NV-CONROL support disabled"
++ echo "- NV-CONTROL support disabled"
+ fi
+ if [test "$HAVE_GTK2" = "yes"]; then
+ echo "- GTK2 GUI enabled"
+--- a/src/backend/Makefile.in
++++ b/src/backend/Makefile.in
+@@ -1,11 +1,11 @@
+-CC=@CC@ -O0
+-AR=ar
++CC=@CC@
++AR=@AR@
+ RANLIB=@RANLIB@
+
+ system=@system@
+ HAVE_NVCONTROL=@HAVE_NVCONTROL@
+ OBJECTS=backend.o bios.o config.o error.o nv30.o nv40.o nv50.o info.o overclock.o utils.o i2c.o xf86i2c.o adt7473.o f75375.o lm99.o w83781d.o w83l785r.o libc_wrapper.o
+-CFLAGS=@X11_CFLAGS@ -I../.. -I../nvcontrol
++CFLAGS=@CFLAGS@ @X11_CFLAGS@ -I../.. -I../nvcontrol
+
+ ifeq ($(system), FreeBSD)
+ OBJECTS+=back_bsd.o
+--- a/src/gtk/Makefile.in
++++ b/src/gtk/Makefile.in
+@@ -20,20 +20,21 @@
+
+ ifeq ($(HAVE_NVCONTROL), yes)
+ DEPS=$(libbackend) $(libnvcontrol)
+- LIBS=@GTK_LIBS@ -L../backend -lbackend -L../nvcontrol -lnvcontrol
++ LIBS=@LIBS@ @GTK_LIBS@ -L../backend -lbackend -L../nvcontrol -lnvcontrol
+ OBJECTS=banner.o gl.o hw.o main.o settings.o
+ else
+ DEPS=$(libbackend)
+- LIBS=@GTK_LIBS@ -L../backend -lbackend
++ LIBS=@LIBS@ @GTK_LIBS@ -L../backend -lbackend
+ OBJECTS=banner.o hw.o main.o settings.o
+ endif
++X11_LIBS=@X11_LIBS@
+
+
+ .PHONY: clean distclean install
+ all: $(PROGRAM)
+
+ nvclock_gtk: $(DEPS) $(OBJECTS)
+- $(CC) $(CFLAGS) -o nvclock_gtk $(OBJECTS) $(libbackend) $(LIBS)
++ $(CC) $(CFLAGS) $(LDFLAGS) -o nvclock_gtk $(OBJECTS) $(libbackend) $(LIBS) $(X11_LIBS)
+
+ clean:
+ rm -f nvclock_gtk *.core *.o *.exe
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -16,7 +16,7 @@
+ ifeq ($(HAVE_NVCONTROL), yes)
+ DEPS=$(libbackend) $(libnvcontrol)
+ INCLUDES=@X11_CFLAGS@ -I./backend -I./nvcontrol -I..
+- LIBS=@X11_LIBS@ -L./backend -lbackend -L./nvcontrol -lnvcontrol
++ LIBS=-L./backend -lbackend -L./nvcontrol -lnvcontrol @X11_LIBS@
+ else
+ DEPS=$(libbackend)
+ INCLUDES=-I./backend -I./nvcontrol -I..
+@@ -30,12 +30,17 @@
+
+ all: all-recursive nvclock smartdimmer
+
++$(libbackend):
++ $(MAKE) -C backend
++
++$(libnvcontrol):
++ $(MAKE) -C nvcontrol
+
+ nvclock: $(DEPS) $(LIB) nvclock.c
+- $(CC) $(CFLAGS) -o nvclock $(nvclock_SOURCES) $(INCLUDES) $(LIBS)
++ $(CC) $(CFLAGS) $(LDFLAGS) -o nvclock $(nvclock_SOURCES) $(INCLUDES) $(LIBS)
+
+ smartdimmer: $(DEPS) $(LIB) smartdimmer.c
+- $(CC) $(CFLAGS) -o smartdimmer $(smartdimmer_SOURCES) $(INCLUDES) $(LIBS)
++ $(CC) $(CFLAGS) $(LDFLAGS) -o smartdimmer $(smartdimmer_SOURCES) $(INCLUDES) $(LIBS)
+
+
+ clean: clean-recursive clean-app
+--- a/src/nvcontrol/Makefile.in
++++ b/src/nvcontrol/Makefile.in
+@@ -1,5 +1,5 @@
+ CC=@CC@
+-AR=ar
++AR=@AR@
+ RANLIB=@RANLIB@
+ system=@system@
+ CFLAGS=@CFLAGS@
+--- a/src/qt/Makefile.in
++++ b/src/qt/Makefile.in
+@@ -31,7 +31,7 @@
+ all: $(PROGRAM)
+
+ nvclock_qt: $(DEPS) qt_nvclock.moc qt_xfree.moc $(OBJECTS)
+- $(CXX) $(CXXFLAGS) -o nvclock_qt $(CXXFLAGS) $(OBJECTS) $(LIBS)
++ $(CXX) $(CXXFLAGS) $(LDFLAGS) -o nvclock_qt $(OBJECTS) $(LIBS)
+
+ clean:
+ rm -f nvclock_qt *.core *.moc *.o
diff --git a/sys-power/nvclock/files/nvclock-0.8_p20110102-usleep.patch b/sys-power/nvclock/files/nvclock-0.8_p20110102-usleep.patch
new file mode 100644
index 000000000000..93c3f288864b
--- /dev/null
+++ b/sys-power/nvclock/files/nvclock-0.8_p20110102-usleep.patch
@@ -0,0 +1,14 @@
+fix warning:
+libc_wrapper.c:54: warning: implicit declaration of function usleep
+
+--- a/src/backend/libc_wrapper.c
++++ b/src/backend/libc_wrapper.c
+@@ -27,6 +27,8 @@
+
++#define _BSD_SOURCE
+ #include <stdio.h>
+ #include "xfree.h"
++#include "config.h"
+
+ #ifdef HAVE_UNISTD_H
+ #include <unistd.h>
diff --git a/sys-power/nvclock/files/nvclock_confd b/sys-power/nvclock/files/nvclock_confd
new file mode 100644
index 000000000000..ff7f15bdd746
--- /dev/null
+++ b/sys-power/nvclock/files/nvclock_confd
@@ -0,0 +1,9 @@
+# Config file for /etc/init.d/nvclock
+
+# Set the core clock speed after -n and the memory clock speed after -m
+# Check your current speeds by running 'nvclock -s' at the command line
+# so you don't overclock too much and burn out the card
+# Test out your overclocking before adding this to the bootup!
+
+CLOCKOPTS="-s"
+#CLOCKOPTS="-n <corespeed> -m <memspeed>"
diff --git a/sys-power/nvclock/files/nvclock_initd b/sys-power/nvclock/files/nvclock_initd
new file mode 100644
index 000000000000..8abf9f01ae9b
--- /dev/null
+++ b/sys-power/nvclock/files/nvclock_initd
@@ -0,0 +1,12 @@
+#!/sbin/openrc-run
+
+depend() {
+ need xdm
+}
+
+start() {
+ ebegin "Setting nvidia card overclock speed"
+ nvclock ${CLOCKOPTS} >/dev/null
+ eend $?
+}
+
diff --git a/sys-power/nvclock/files/nvclock_initd-r1 b/sys-power/nvclock/files/nvclock_initd-r1
new file mode 100644
index 000000000000..9b4ede7d88f0
--- /dev/null
+++ b/sys-power/nvclock/files/nvclock_initd-r1
@@ -0,0 +1,12 @@
+#!/sbin/openrc-run
+
+depend() {
+ need display-manager
+}
+
+start() {
+ ebegin "Setting nvidia card overclock speed"
+ nvclock ${CLOCKOPTS} >/dev/null
+ eend $?
+}
+
diff --git a/sys-power/nvclock/metadata.xml b/sys-power/nvclock/metadata.xml
new file mode 100644
index 000000000000..26ceec9a2d89
--- /dev/null
+++ b/sys-power/nvclock/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<!-- maintainer-needed -->
+<use>
+ <flag name="gtk">Install the GTK+ based graphical interface</flag>
+ <flag name="nvcontrol">Add NVCONTROL support for OpenGL options</flag>
+</use>
+</pkgmetadata>
diff --git a/sys-power/nvclock/nvclock-0.8_p20110102-r2.ebuild b/sys-power/nvclock/nvclock-0.8_p20110102-r2.ebuild
new file mode 100644
index 000000000000..d14d2d9f9b1d
--- /dev/null
+++ b/sys-power/nvclock/nvclock-0.8_p20110102-r2.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools
+
+DESCRIPTION="NVIDIA Overclocking Utility"
+HOMEPAGE="http://www.linuxhardware.org/nvclock/"
+SRC_URI="mirror://gentoo/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ppc x86"
+IUSE="gtk nvcontrol"
+
+RDEPEND="
+ gtk? (
+ x11-libs/gtk+:2
+ x11-libs/libX11
+ )
+ nvcontrol? (
+ x11-libs/libX11
+ x11-libs/libXext
+ )"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-r1-make.patch
+ "${FILESDIR}"/${P}-usleep.patch
+ "${FILESDIR}"/${P}-desktop.patch
+ "${FILESDIR}"/${P}-buffers.patch
+ "${FILESDIR}"/${P}-fno-common.patch
+)
+
+src_prepare() {
+ default
+ mv configure.{in,ac} || die
+ eautoreconf
+}
+
+src_configure() {
+ # only <Qt-4 supported
+ econf \
+ --disable-qt \
+ $(use_enable gtk) \
+ $(use_enable nvcontrol)
+}
+
+src_compile() {
+ emake -C src/ nvclock smartdimmer
+ use gtk && emake -C src/gtk/
+}
+
+src_install() {
+ dodir /usr/bin
+ default
+
+ newinitd "${FILESDIR}"/nvclock_initd nvclock
+ newconfd "${FILESDIR}"/nvclock_confd nvclock
+}
+
+pkg_postinst() {
+ elog "To enable card overclocking at startup, edit your /etc/conf.d/nvclock"
+ elog "accordingly and then run: rc-update add nvclock default"
+}
diff --git a/sys-power/nvclock/nvclock-0.8_p20110102-r3.ebuild b/sys-power/nvclock/nvclock-0.8_p20110102-r3.ebuild
new file mode 100644
index 000000000000..94b5d228cdd1
--- /dev/null
+++ b/sys-power/nvclock/nvclock-0.8_p20110102-r3.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools
+
+DESCRIPTION="NVIDIA Overclocking Utility"
+HOMEPAGE="http://www.linuxhardware.org/nvclock/"
+SRC_URI="mirror://gentoo/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~ppc x86"
+IUSE="gtk nvcontrol"
+
+RDEPEND="
+ gtk? (
+ x11-libs/gtk+:2
+ x11-libs/libX11
+ )
+ nvcontrol? (
+ x11-libs/libX11
+ x11-libs/libXext
+ )"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-r1-make.patch
+ "${FILESDIR}"/${P}-usleep.patch
+ "${FILESDIR}"/${P}-desktop.patch
+ "${FILESDIR}"/${P}-buffers.patch
+ "${FILESDIR}"/${P}-fno-common.patch
+)
+
+src_prepare() {
+ default
+ mv configure.{in,ac} || die
+ eautoreconf
+}
+
+src_configure() {
+ # only <Qt-4 supported
+ econf \
+ --disable-qt \
+ $(use_enable gtk) \
+ $(use_enable nvcontrol)
+}
+
+src_compile() {
+ emake -C src/ nvclock smartdimmer
+ use gtk && emake -C src/gtk/
+}
+
+src_install() {
+ dodir /usr/bin
+ default
+
+ newinitd "${FILESDIR}"/nvclock_initd-r1 nvclock
+ newconfd "${FILESDIR}"/nvclock_confd nvclock
+}
+
+pkg_postinst() {
+ elog "To enable card overclocking at startup, edit your /etc/conf.d/nvclock"
+ elog "accordingly and then run: rc-update add nvclock default"
+}
diff --git a/sys-power/nvidia-exec/Manifest b/sys-power/nvidia-exec/Manifest
new file mode 100644
index 000000000000..a84f93f8ff18
--- /dev/null
+++ b/sys-power/nvidia-exec/Manifest
@@ -0,0 +1 @@
+DIST nvidia-exec-0.3.2.tar.gz 18587 BLAKE2B bfcdbb491a2ff886e0f6f341227545effcc5255c5f31b697e1c8d52addd4e0ef273a6b8820d0b1df4c0605b08570b15ec5f2a4f3b5fba196f156a33ee6a3b3b7 SHA512 41aa66f1d49e2a358886e4a7ab911621fd3f82f916d5f1f3e24ed2bfdc916736958370a651f14a6deddd481e37b8c895c37dffbddbd61bbc2275095c9ece784e
diff --git a/sys-power/nvidia-exec/files/nvx.initd b/sys-power/nvidia-exec/files/nvx.initd
new file mode 100644
index 000000000000..45f7d9ce2959
--- /dev/null
+++ b/sys-power/nvidia-exec/files/nvx.initd
@@ -0,0 +1,18 @@
+#!/sbin/openrc-run
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+description="nvidia-exec daemon for Nvidia Optimus GPU switching"
+
+command="/usr/bin/nvx"
+command_args="daemon"
+command_background="yes"
+pidfile="/run/${RC_SVCNAME}.pid"
+
+output_log="/var/log/nvx.log"
+error_log="/var/log/nvx.log"
+
+depend() {
+ after udev
+ before xdm display-manager
+}
diff --git a/sys-power/nvidia-exec/metadata.xml b/sys-power/nvidia-exec/metadata.xml
new file mode 100644
index 000000000000..e3a8cfcdac20
--- /dev/null
+++ b/sys-power/nvidia-exec/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>joe@wt.gd</email>
+ <name>Joe Kappus</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">pedro00dk/nvidia-exec</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/nvidia-exec/nvidia-exec-0.3.2.ebuild b/sys-power/nvidia-exec/nvidia-exec-0.3.2.ebuild
new file mode 100644
index 000000000000..488fdeaad51d
--- /dev/null
+++ b/sys-power/nvidia-exec/nvidia-exec-0.3.2.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit systemd
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/pedro00dk/nvidia-exec.git"
+else
+ SRC_URI="https://github.com/pedro00dk/nvidia-exec/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64"
+fi
+
+DESCRIPTION="GPU switching without log out for Nvidia Optimus laptops under Linux"
+HOMEPAGE="https://github.com/pedro00dk/nvidia-exec"
+
+LICENSE="GPL-3"
+SLOT="0"
+
+RDEPEND="
+ dev-lang/python
+ sys-apps/lshw
+ sys-process/lsof
+ x11-drivers/nvidia-drivers
+"
+
+src_install() {
+ newbin "${S}/nvx.py" nvx
+ systemd_dounit "${S}/nvx.service"
+ newinitd "${FILESDIR}/nvx.initd" nvx
+ insinto /usr/lib/modprobe.d
+ newins "${S}/nvx-modprobe.conf" nvx.conf
+ insinto /etc/
+ newins "${S}/nvx-options.conf" nvx.conf
+}
+
+pkg_postinst() {
+ elog "To enable nvx at boot:"
+ elog " OpenRC: rc-update add nvx default"
+ elog " systemd: systemctl enable --now nvx"
+ elog ""
+ elog "The nvx service prevents nvidia modules from loading and turns off the graphics card during boot."
+ elog "It is not necessary to handle files, configurations, PCI buses, etc, all that is done automatically."
+}
diff --git a/sys-power/nvidia-exec/nvidia-exec-9999.ebuild b/sys-power/nvidia-exec/nvidia-exec-9999.ebuild
new file mode 100644
index 000000000000..488fdeaad51d
--- /dev/null
+++ b/sys-power/nvidia-exec/nvidia-exec-9999.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit systemd
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/pedro00dk/nvidia-exec.git"
+else
+ SRC_URI="https://github.com/pedro00dk/nvidia-exec/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64"
+fi
+
+DESCRIPTION="GPU switching without log out for Nvidia Optimus laptops under Linux"
+HOMEPAGE="https://github.com/pedro00dk/nvidia-exec"
+
+LICENSE="GPL-3"
+SLOT="0"
+
+RDEPEND="
+ dev-lang/python
+ sys-apps/lshw
+ sys-process/lsof
+ x11-drivers/nvidia-drivers
+"
+
+src_install() {
+ newbin "${S}/nvx.py" nvx
+ systemd_dounit "${S}/nvx.service"
+ newinitd "${FILESDIR}/nvx.initd" nvx
+ insinto /usr/lib/modprobe.d
+ newins "${S}/nvx-modprobe.conf" nvx.conf
+ insinto /etc/
+ newins "${S}/nvx-options.conf" nvx.conf
+}
+
+pkg_postinst() {
+ elog "To enable nvx at boot:"
+ elog " OpenRC: rc-update add nvx default"
+ elog " systemd: systemctl enable --now nvx"
+ elog ""
+ elog "The nvx service prevents nvidia modules from loading and turns off the graphics card during boot."
+ elog "It is not necessary to handle files, configurations, PCI buses, etc, all that is done automatically."
+}
diff --git a/sys-power/nvram-reboot/Manifest b/sys-power/nvram-reboot/Manifest
new file mode 100644
index 000000000000..d61448951e05
--- /dev/null
+++ b/sys-power/nvram-reboot/Manifest
@@ -0,0 +1 @@
+DIST reboot-2004.10.03.tar.bz2 425622 BLAKE2B 1f434fc58a066ecc9bee0e839eef035b32d9bf2fff78f73c5ee843e2a856084f1e0653d746744312595000706292250aed03f714e606d3facc0a44e0a9fc8945 SHA512 b85a7372369f3ba9e36af1b96ccbf31ba1febcc3ebf31a8684332d370ea85428a3bfc4855c7df10f9b92a3c57b704fabbe5069a792cd8aaa1b45511f88c41906
diff --git a/sys-power/nvram-reboot/metadata.xml b/sys-power/nvram-reboot/metadata.xml
new file mode 100644
index 000000000000..264cc6dc8c06
--- /dev/null
+++ b/sys-power/nvram-reboot/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>base-system@gentoo.org</email>
+ <name>Gentoo Base System</name>
+</maintainer>
+<upstream>
+ <remote-id type="sourceforge">nvram-wakeup</remote-id>
+</upstream>
+</pkgmetadata>
diff --git a/sys-power/nvram-reboot/nvram-reboot-2004.10.03-r1.ebuild b/sys-power/nvram-reboot/nvram-reboot-2004.10.03-r1.ebuild
new file mode 100644
index 000000000000..f5c8059d5730
--- /dev/null
+++ b/sys-power/nvram-reboot/nvram-reboot-2004.10.03-r1.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit mount-boot
+
+MY_P="${P/nvram-/}"
+DESCRIPTION="PowerOff Boot-Images for nvram-wakeup (not needed for GRUB)"
+HOMEPAGE="https://sourceforge.net/projects/nvram-wakeup/"
+SRC_URI="https://downloads.sourceforge.net/nvram-wakeup/${MY_P}.tar.bz2"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+src_install() {
+ insinto /boot/nvram-wakeup
+ doins apm-poweroff.bin bzImage.2.4.20.poweroff dioden-poweroff
+ dodoc *.patch *.diff *.txt config.*
+}
diff --git a/sys-power/pmtools/Manifest b/sys-power/pmtools/Manifest
new file mode 100644
index 000000000000..5359167ede0e
--- /dev/null
+++ b/sys-power/pmtools/Manifest
@@ -0,0 +1 @@
+DIST pmtools-20130209.tar.gz 52952 BLAKE2B bf628f458f8bddb4dc7d18866026c0e45343c88686a57121a2bb5856c0816c90a85bb67636a77258530b18b8e4e72868d991eefb280741f60ac5ac8a90bbc75b SHA512 696af0967caed1ff51411c1bc5b01cbb300f465cb3c28d9d5b1d456d85a50d173a343e32a162fa1ea836f825365997c9bdf109595be737c7e01391b9d7ace6c5
diff --git a/sys-power/pmtools/files/pmtools-20071116-64bit.patch b/sys-power/pmtools/files/pmtools-20071116-64bit.patch
new file mode 100644
index 000000000000..9883f8b2cb7d
--- /dev/null
+++ b/sys-power/pmtools/files/pmtools-20071116-64bit.patch
@@ -0,0 +1,20 @@
+--- a/madt/madt.c
++++ b/madt/madt.c
+@@ -46,7 +46,7 @@
+ {
+ size_t retval;
+
+- if (verbose) printf("reading %d byte entry header\n", sizeof(acpi_table_entry_header));
++ if (verbose) printf("reading %ld byte entry header\n", sizeof(acpi_table_entry_header));
+ retval = fread((void *)entry_header, sizeof(acpi_table_entry_header), 1, stdin);
+ return retval;
+ }
+@@ -64,7 +64,7 @@
+
+ bytes_read = csum = 0;
+
+- if (verbose) printf("reading %d madt header\n", sizeof(struct acpi_table_madt));
++ if (verbose) printf("reading %ld madt header\n", sizeof(struct acpi_table_madt));
+
+ retval = fread((void *)buffer, sizeof(struct acpi_table_madt), 1, stdin);
+ if (retval != 1) {
diff --git a/sys-power/pmtools/files/pmtools-20100123-acpixtract-pmtools.patch b/sys-power/pmtools/files/pmtools-20100123-acpixtract-pmtools.patch
new file mode 100644
index 000000000000..feca654687b3
--- /dev/null
+++ b/sys-power/pmtools/files/pmtools-20100123-acpixtract-pmtools.patch
@@ -0,0 +1,42 @@
+diff -Nuar pmtools-20100123.orig/acpixtract/acpixtract.c pmtools-20100123/acpixtract/acpixtract.c
+--- pmtools-20100123.orig/acpixtract/acpixtract.c 2010-01-23 19:31:07.000000000 +0100
++++ pmtools-20100123/acpixtract/acpixtract.c 2010-03-07 14:44:32.451141841 +0100
+@@ -199,7 +199,7 @@
+ void)
+ {
+
+- printf ("Usage: acpixtract [option] <InputFile>\n");
++ printf ("Usage: acpixtract-pmtools [option] <InputFile>\n");
+ printf ("\nExtract binary ACPI tables from text acpidump output\n");
+ printf ("Default invocation extracts all DSDTs and SSDTs\n");
+ printf ("Version %8.8X\n\n", VERSION);
+diff -Nuar pmtools-20100123.orig/madt/README pmtools-20100123/madt/README
+--- pmtools-20100123.orig/madt/README 2005-11-11 18:07:04.000000000 +0100
++++ pmtools-20100123/madt/README 2010-03-07 14:45:31.818052302 +0100
+@@ -1,7 +1,7 @@
+ User utility to parse the ACPI MADT
+ Hacked out of Linux kernel code to do the same.
+
+-# ./acpidmp | ./acpixtract APIC | ./madt
++# ./acpidmp | ./acpixtract-pmtools APIC | ./madt
+
+ ACPI: APIC (v001 INTEL D845EBT2 0x20021021 MSFT 0x00000097) @ 0x(nil)
+ ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
+diff -Nuar pmtools-20100123.orig/README pmtools-20100123/README
+--- pmtools-20100123.orig/README 2010-01-23 19:31:52.000000000 +0100
++++ pmtools-20100123/README 2010-03-07 14:47:18.286017297 +0100
+@@ -17,11 +17,11 @@
+
+ # ./acpidump > acpidump.out
+
+-./acpidump/acpixtract
+---------------------
++./acpidump/acpixtract-pmtools
++-----------------------------
+ Convert ASCII acpidump output to raw binary tables:
+
+- $ acpixtract/acpixtract -a acpidump.out
++ $ acpixtract/acpixtract-pmtools -a acpidump.out
+ Acpi table [DSDT] - 15974 bytes written to DSDT.dat
+ Acpi table [FACS] - 64 bytes written to FACS.dat
+ Acpi table [FACP] - 116 bytes written to FACP.dat
diff --git a/sys-power/pmtools/files/pmtools-20100123-madt.patch b/sys-power/pmtools/files/pmtools-20100123-madt.patch
new file mode 100644
index 000000000000..49aca9f4c76c
--- /dev/null
+++ b/sys-power/pmtools/files/pmtools-20100123-madt.patch
@@ -0,0 +1,39 @@
+diff -Nuar pmtools-20100123.orig/madt/madt.c pmtools-20100123/madt/madt.c
+--- pmtools-20100123.orig/madt/madt.c 2005-11-11 18:07:04.000000000 +0100
++++ pmtools-20100123/madt/madt.c 2010-03-07 14:39:31.657017114 +0100
+@@ -26,8 +26,6 @@
+
+ #define printk printf
+
+-#include "./tables.c"
+-
+ //#define INPUT_FILE "madt.dat"
+ //#include <sys/types.h>
+ //#include <sys/stat.h>
+@@ -37,6 +35,8 @@
+ #include <stdio.h> // fread
+ #include <stdlib.h> // malloc
+
++#include "./tables.c"
++
+ int verbose = 0;
+ /*
+ /* read standard input
+diff -Nuar pmtools-20100123.orig/madt/Makefile pmtools-20100123/madt/Makefile
+--- pmtools-20100123.orig/madt/Makefile 2005-11-11 18:07:04.000000000 +0100
++++ pmtools-20100123/madt/Makefile 2010-03-07 14:34:17.486002917 +0100
+@@ -1,3 +1,5 @@
++all: madt
++
+ test: madt
+ ./madt < APIC
+ madt: madt.c acpi.h tables.c
+diff -Nuar pmtools-20100123.orig/Makefile pmtools-20100123/Makefile
+--- pmtools-20100123.orig/Makefile 2010-01-23 19:18:18.000000000 +0100
++++ pmtools-20100123/Makefile 2010-03-07 14:33:01.729955480 +0100
+@@ -1,4 +1,4 @@
+-DIRS = acpidump acpixtract turbostat
++DIRS = acpidump acpixtract madt turbostat
+
+ all:
+ for i in $(DIRS); do $(MAKE) -C $$i $@; done
diff --git a/sys-power/pmtools/files/pmtools-20101124-cflags-ldflags.patch b/sys-power/pmtools/files/pmtools-20101124-cflags-ldflags.patch
new file mode 100644
index 000000000000..0ae69e8c46d4
--- /dev/null
+++ b/sys-power/pmtools/files/pmtools-20101124-cflags-ldflags.patch
@@ -0,0 +1,48 @@
+diff -Nuar pmtools-20100123.orig/acpidump/Makefile pmtools-20100123/acpidump/Makefile
+--- pmtools-20100123.orig/acpidump/Makefile 2006-11-30 13:41:15.000000000 +0100
++++ pmtools-20100123/acpidump/Makefile 2010-03-07 14:19:12.337141824 +0100
+@@ -1,11 +1,11 @@
+ PROG= acpidump
+ SRCS= acpidump.c
+ KERNEL_INCLUDE := ../include
+-CFLAGS += -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Os -s -D_LINUX -DDEFINE_ALTERNATE_TYPES -I$(KERNEL_INCLUDE)
++CFLAGS += -Wall -Wstrict-prototypes -Wdeclaration-after-statement -D_LINUX -DDEFINE_ALTERNATE_TYPES -I$(KERNEL_INCLUDE)
+
+ all: acpidump
+ $(PROG) : $(SRCS)
+- $(CC) $(CFLAGS) $(SRCS) -o $(PROG)
++ $(CC) $(CFLAGS) $(LDFLAGS) $(SRCS) -o $(PROG)
+
+ CLEANFILES= $(PROG)
+
+diff -Nuar pmtools-20100123.orig/acpixtract/Makefile pmtools-20100123/acpixtract/Makefile
+--- pmtools-20100123.orig/acpixtract/Makefile 2006-11-30 13:45:06.000000000 +0100
++++ pmtools-20100123/acpixtract/Makefile 2010-03-07 14:19:12.337141824 +0100
+@@ -6,7 +6,7 @@
+ all: $(PROG)
+
+ $(PROG) : $(SRCS)
+- $(CC) $(CFLAGS) $(SRCS) -o $(PROG)
++ $(CC) $(CFLAGS) $(LDFLAGS) $(SRCS) -o $(PROG)
+
+ CLEANFILES= $(PROG)
+
+diff -Nuar pmtools-20100123.orig/madt/Makefile pmtools-20100123/madt/Makefile
+--- pmtools-20100123.orig/madt/Makefile 2005-11-11 18:07:04.000000000 +0100
++++ pmtools-20100123/madt/Makefile 2010-03-07 14:22:15.199017246 +0100
+@@ -1,6 +1,6 @@
+ test: madt
+ ./madt < APIC
+ madt: madt.c acpi.h tables.c
+- cc -o madt madt.c
++ $(CC) $(CFLAGS) $(LDFLAGS) madt.c -o madt
+ clean:
+ rm madt
+--- pmtools-20101124.orig/turbostat/Makefile.old 2010-11-27 22:13:00.405571001 +0100
++++ pmtools-20101124/turbostat/Makefile 2010-11-27 22:16:39.070571001 +0100
+@@ -1,3 +1,5 @@
++all : turbostat
++
+ turbostat : turbostat.c
+
+ clean :
diff --git a/sys-power/pmtools/files/pmtools-20110323-r2-types.patch b/sys-power/pmtools/files/pmtools-20110323-r2-types.patch
new file mode 100644
index 000000000000..bdff55d26315
--- /dev/null
+++ b/sys-power/pmtools/files/pmtools-20110323-r2-types.patch
@@ -0,0 +1,21 @@
+https://bugs.gentoo.org/874702#c8
+--- pmtools-orig/madt/madt.c 2005-11-12 04:07:04.000000000 +1100
++++ pmtools/madt/madt.c 2024-06-06 12:04:59.554214977 +1000
+@@ -42,7 +42,7 @@
+ /* read standard input
+ * write decoded madt to standard output
+ */
+-get_next_entry(acpi_table_entry_header * entry_header)
++int get_next_entry(acpi_table_entry_header * entry_header)
+ {
+ size_t retval;
+
+@@ -53,7 +53,7 @@
+
+ u8 buffer[1024];
+
+-main()
++int main()
+ {
+ size_t retval;
+ struct acpi_table_madt *madt_header;
diff --git a/sys-power/pmtools/metadata.xml b/sys-power/pmtools/metadata.xml
new file mode 100644
index 000000000000..8603d8a12c96
--- /dev/null
+++ b/sys-power/pmtools/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>robbat2@gentoo.org</email>
+ </maintainer>
+ <maintainer type="person">
+ <email>prometheanfire@gentoo.org</email>
+ </maintainer>
+ <longdescription>
+ This package really just provides acpidump and associated tools
+ for extracting ACPI tables to edit/reload buggy BIOS tables (works with iasl).
+ Useful for all ACPI-based systems (not just mobile/laptop systems).
+ </longdescription>
+ <upstream>
+ <remote-id type="github">anyc/pmtools</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/pmtools/pmtools-20130209.ebuild b/sys-power/pmtools/pmtools-20130209.ebuild
new file mode 100644
index 000000000000..3f799aace8e6
--- /dev/null
+++ b/sys-power/pmtools/pmtools-20130209.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic toolchain-funcs
+
+DESCRIPTION="Collection of tools for ACPI and power management"
+HOMEPAGE="https://github.com/anyc/pmtools/"
+SRC_URI="https://github.com/anyc/pmtools/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ppc x86"
+IUSE="doc"
+
+# dev-lang/perl - RDEPEND for the pmtest tooling, which only works on much older kernels.
+RDEPEND="
+ >=sys-power/iasl-20090521
+"
+
+PATCHES=(
+ # All merged upstream in 20230209
+ #"${FILESDIR}"/${PN}-20100123-acpixtract-pmtools.patch
+ #"${FILESDIR}"/${PN}-20100123-madt.patch
+ #"${FILESDIR}"/${PN}-20071116-64bit.patch
+ #"${FILESDIR}"/${PN}-20101124-cflags-ldflags.patch
+
+ # New patches
+ "${FILESDIR}"/pmtools-20110323-r2-types.patch
+)
+
+src_prepare() {
+ default
+
+ # update version info
+ sed -i -e "s|20060324|20110323|" acpixtract/acpixtract.c || die
+
+ strip-unsupported-flags
+}
+
+src_compile() {
+ # respect user's LDFLAGS
+ emake CC="$(tc-getCC)" LDFLAGS="${LDFLAGS}"
+}
+
+src_install() {
+ newbin acpidump/acpidump acpidump-pmtools
+ newbin acpixtract/acpixtract acpixtract-pmtools
+ dobin madt/madt
+
+ dodoc README madt/README.madt
+ use doc && dodoc madt/APIC*
+}
diff --git a/sys-power/power-profiles-daemon/Manifest b/sys-power/power-profiles-daemon/Manifest
new file mode 100644
index 000000000000..0a3220c98a11
--- /dev/null
+++ b/sys-power/power-profiles-daemon/Manifest
@@ -0,0 +1 @@
+DIST power-profiles-daemon-0.30.tar.bz2 70413 BLAKE2B da35aba711018ec319aac68b05b9ffb51fe00a80df3340ad8bd08562b021e3ac92267305d791b9920627a6bb0bdc64fa7bd1d8ae6adc3a076f2a7c2ff396344b SHA512 91ff790aa7f9fb0004d112f9c2f28de55f9985d5fbed15ebf1d15722ff0c007ebc89407ba38e88016745162b0ca7058540ed276b372efbefdd6b2e23408c89dc
diff --git a/sys-power/power-profiles-daemon/files/power-profiles-daemon.initd b/sys-power/power-profiles-daemon/files/power-profiles-daemon.initd
new file mode 100644
index 000000000000..d16735e930f8
--- /dev/null
+++ b/sys-power/power-profiles-daemon/files/power-profiles-daemon.initd
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+name="power-profiles-daemon"
+description="Makes power profiles handling available over D-Bus"
+
+pidfile="/run/power-profiles-daemon.pid"
+command="/usr/libexec/power-profiles-daemon"
+command_background=true
+
+start_pre() {
+ checkpath -d /var/lib/power-profiles-daemon
+}
diff --git a/sys-power/power-profiles-daemon/metadata.xml b/sys-power/power-profiles-daemon/metadata.xml
new file mode 100644
index 000000000000..243eab2cfba6
--- /dev/null
+++ b/sys-power/power-profiles-daemon/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>pacho@gentoo.org</email>
+ <name>Pacho Ramos</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="freedesktop-gitlab">hadess/power-profiles-daemon</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/power-profiles-daemon/power-profiles-daemon-0.30.ebuild b/sys-power/power-profiles-daemon/power-profiles-daemon-0.30.ebuild
new file mode 100644
index 000000000000..24813b37f9c7
--- /dev/null
+++ b/sys-power/power-profiles-daemon/power-profiles-daemon-0.30.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit meson python-single-r1 shell-completion systemd
+
+DESCRIPTION="Makes power profiles handling available over D-Bus"
+HOMEPAGE="https://gitlab.freedesktop.org/upower/power-profiles-daemon/"
+SRC_URI="https://gitlab.freedesktop.org/upower/${PN}/-/archive/${PV}/${P}.tar.bz2"
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="amd64 ~arm arm64 ~loong ~ppc64 ~riscv x86"
+
+IUSE="bash-completion gtk-doc man selinux test zsh-completion"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="${PYTHON_DEPS}
+ $(python_gen_cond_dep 'dev-python/pygobject:3[${PYTHON_USEDEP}]')
+ dev-libs/glib:2
+ >=dev-libs/libgudev-234
+ >=sys-auth/polkit-0.99
+ sys-power/upower
+ selinux? ( sec-policy/selinux-powerprofiles )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-util/glib-utils
+ bash-completion? (
+ >=app-shells/bash-completion-2.0
+ $(python_gen_cond_dep '>=dev-python/shtab-1.7.0[${PYTHON_USEDEP}]')
+ )
+ gtk-doc? (
+ dev-util/gi-docgen
+ dev-util/gtk-doc
+ )
+ man? (
+ $(python_gen_cond_dep 'dev-python/argparse-manpage[${PYTHON_USEDEP}]')
+ )
+ test? (
+ dev-util/umockdev
+ $(python_gen_cond_dep '
+ dev-python/pygobject:3[${PYTHON_USEDEP}]
+ dev-python/python-dbusmock[${PYTHON_USEDEP}]
+ ')
+ )
+ zsh-completion? (
+ $(python_gen_cond_dep '>=dev-python/shtab-1.7.0[${PYTHON_USEDEP}]')
+ )
+"
+
+python_check_deps() {
+ if use test; then
+ python_has_version "dev-python/python-dbusmock[${PYTHON_USEDEP}]" \
+ "dev-python/pygobject:3[${PYTHON_USEDEP}]" || return 1
+ else
+ python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]" || return 1
+ fi
+
+ if use bash-completion || use zsh-completion; then
+ python_has_version ">=dev-python/shtab-1.7.0[${PYTHON_USEDEP}]" || return 1
+ fi
+
+ if use man; then
+ python_has_version "dev-python/argparse-manpage[${PYTHON_USEDEP}]" || return 1
+ fi
+}
+
+src_prepare() {
+ default
+
+ # Don't run coverage tests, they're not useful for downstreams, #970016
+ sed -i -e '/PPD_PYTHON_COVERAGE/d' tests/meson.build || die
+}
+
+src_configure() {
+ local emesonargs=(
+ -Dpylint=disabled
+ -Dsystemdsystemunitdir="$(systemd_get_systemunitdir)"
+ $(meson_feature bash-completion bashcomp)
+ $(meson_use gtk-doc gtk_doc)
+ $(meson_feature man manpage)
+ $(meson_use test tests)
+ )
+ use zsh-completion && emesonargs+=( -Dzshcomp="$(get_zshcompdir)" )
+ meson_src_configure
+}
+
+src_test() {
+ # Dbus tests are prone to fail when run in parallel
+ MAKEOPTS="-j1" meson_src_test
+}
+
+src_install() {
+ meson_src_install
+ python_fix_shebang "${D}"/usr/bin/powerprofilesctl
+ newinitd "${FILESDIR}/power-profiles-daemon.initd" power-profiles-daemon
+}
+
+pkg_postinst() {
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ elog "You need to enable the service:"
+ if systemd_is_booted; then
+ elog "# systemctl enable ${PN}"
+ else
+ elog "# rc-update add ${PN} default"
+ fi
+ fi
+}
diff --git a/sys-power/powermgmt-base/Manifest b/sys-power/powermgmt-base/Manifest
new file mode 100644
index 000000000000..c7a356834de4
--- /dev/null
+++ b/sys-power/powermgmt-base/Manifest
@@ -0,0 +1 @@
+DIST powermgmt-base_1.31.tar.gz 10015 BLAKE2B 7beb933598b7885a996d9410ede2df92f280e6ff6c5e318223db7fb181e13a78e962ef9d2184e951c102d940f85a19f725c62af260c3d182469933ac82d3f99a SHA512 deae8b227e079a73fdd3f9a6be83bdc76400d457c17d3a0881ace1fddc8785ee401beddbafad93dbf3a09b5effe5ca7c998eae69a0740a083a9e8a65c2f0af40
diff --git a/sys-power/powermgmt-base/metadata.xml b/sys-power/powermgmt-base/metadata.xml
new file mode 100644
index 000000000000..115e9d64a669
--- /dev/null
+++ b/sys-power/powermgmt-base/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+</pkgmetadata>
diff --git a/sys-power/powermgmt-base/powermgmt-base-1.31-r2.ebuild b/sys-power/powermgmt-base/powermgmt-base-1.31-r2.ebuild
new file mode 100644
index 000000000000..c8881a6775dd
--- /dev/null
+++ b/sys-power/powermgmt-base/powermgmt-base-1.31-r2.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="Script to test whether computer is running on AC power"
+HOMEPAGE="http://packages.debian.org/testing/utils/powermgmt-base"
+SRC_URI="mirror://debian/pool/main/p/${PN}/${PN}_${PV}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 arm ppc ppc64 x86"
+
+RDEPEND="
+ app-alternatives/awk
+ sys-apps/grep
+ sys-apps/kmod[tools]"
+DEPEND="${RDEPEND}"
+
+S="${WORKDIR}/${PN}"
+
+src_prepare() {
+ default
+ sed -i \
+ -e 's:$(CC) $(CFLAGS):$(CC) $(LDFLAGS) $(CFLAGS):' \
+ src/Makefile || die
+}
+
+src_compile() {
+ tc-export CC
+ emake CFLAGS="${CFLAGS} -Wall -Wstrict-prototypes -DLINUX"
+}
+
+src_install() {
+ dodir /sbin
+ emake DESTDIR="${D}" install
+
+ doman man/{acpi,apm}_available.1
+
+ doman man/on_ac_power.1
+
+ newdoc debian/powermgmt-base.README.Debian README
+ dodoc debian/changelog
+}
diff --git a/sys-power/powerstat/Manifest b/sys-power/powerstat/Manifest
new file mode 100644
index 000000000000..d55dcfbb9c48
--- /dev/null
+++ b/sys-power/powerstat/Manifest
@@ -0,0 +1,2 @@
+DIST powerstat-0.02.27.tar.gz 62629 BLAKE2B d7fe4b517d9a4d91003c7a263ed77bba24457ce20639e420658c3735176952f3283e2bbc64ec597d88b6206e431c29f75ea9b133331a6652f021f667d9466ccc SHA512 3bbab9ed88000b277d75f94d9d3e180944d6c8619cf5e7e8b783c9d303fadde47fe9347e93ac7f54c52687afb456bc26c590712486f589602f93058cd144922f
+DIST powerstat-0.04.03.tar.gz 63790 BLAKE2B d8cc04873ebdeafa642a3c2676f7f5e91b9573e067c6f23928c577c87c8e73532baa47052f0ba99910a828c1c398a7e79d51409b383ae961826c76a92699a38e SHA512 41655929d498720373a9dfc736d7a29987529dbb92643d2883da3cfda4935a4574893962651ce87e43929c070202086ba21317c034f346720c3d9683cf9523b7
diff --git a/sys-power/powerstat/metadata.xml b/sys-power/powerstat/metadata.xml
new file mode 100644
index 000000000000..cd7f595efbc1
--- /dev/null
+++ b/sys-power/powerstat/metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>spiderx@spiderx.dp.ua</email>
+ <name>Vladimir Pavljuchenkov</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <longdescription lang="en">
+ Powerstat measures the power consumption of a machine using the battery
+ stats or the Intel RAPL interface. The output is like vmstat but also
+ shows power consumption statistics. At the end of a run, powerstat will
+ calculate the average, standard deviation and min/max of the gathered data.
+ </longdescription>
+ <upstream>
+ <remote-id type="launchpad">powerstat</remote-id>
+ <remote-id type="github">ColinIanKing/powerstat</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/powerstat/powerstat-0.02.27.ebuild b/sys-power/powerstat/powerstat-0.02.27.ebuild
new file mode 100644
index 000000000000..d3c8edf14186
--- /dev/null
+++ b/sys-power/powerstat/powerstat-0.02.27.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="Laptop power measuring tool"
+HOMEPAGE="https://launchpad.net/ubuntu/+source/powerstat https://github.com/ColinIanKing/powerstat"
+SRC_URI="https://github.com/ColinIanKing/${PN}/archive/V${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64 ~x86"
+
+src_prepare() {
+ default
+
+ # Don't compress manpages
+ sed -i -e '/install:/s/ powerstat.8.gz//' \
+ -e '/cp powerstat.8/s/.gz//' \
+ Makefile || die "sed failed"
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)"
+}
diff --git a/sys-power/powerstat/powerstat-0.04.03.ebuild b/sys-power/powerstat/powerstat-0.04.03.ebuild
new file mode 100644
index 000000000000..8747de1b2baf
--- /dev/null
+++ b/sys-power/powerstat/powerstat-0.04.03.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit bash-completion-r1 toolchain-funcs
+
+DESCRIPTION="Laptop power measuring tool"
+HOMEPAGE="https://launchpad.net/ubuntu/+source/powerstat https://github.com/ColinIanKing/powerstat"
+SRC_URI="https://github.com/ColinIanKing/${PN}/archive/V${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64 ~x86"
+
+src_prepare() {
+ default
+
+ # Don't compress manpages, respect CFLAGS
+ sed -i -e '/install:/s/ powerstat.8.gz//' \
+ -e '/cp powerstat.8/s/.gz//' \
+ -e '/CFLAGS += -Wall/s| -O2||' \
+ Makefile || die "sed failed"
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)"
+}
+
+src_install() {
+ default
+ dobashcomp bash-completion/powerstat
+}
diff --git a/sys-power/powerstat/powerstat-9999.ebuild b/sys-power/powerstat/powerstat-9999.ebuild
new file mode 100644
index 000000000000..a4538d1cb047
--- /dev/null
+++ b/sys-power/powerstat/powerstat-9999.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+EGIT_REPO_URI="https://github.com/ColinIanKing/${PN}.git"
+
+inherit bash-completion-r1 git-r3 toolchain-funcs
+
+DESCRIPTION="Laptop power measuring tool"
+HOMEPAGE="https://launchpad.net/ubuntu/+source/powerstat https://github.com/ColinIanKing/powerstat"
+
+LICENSE="GPL-2+"
+SLOT="0"
+
+src_prepare() {
+ default
+
+ # Don't compress manpages, respect CFLAGS
+ sed -i -e '/install:/s/ powerstat.8.gz//' \
+ -e '/cp powerstat.8/s/.gz//' \
+ -e '/CFLAGS += -Wall/s| -O2||' \
+ Makefile || die "sed failed"
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)"
+}
+
+src_install() {
+ default
+ dobashcomp bash-completion/powerstat
+}
diff --git a/sys-power/powertop/Manifest b/sys-power/powertop/Manifest
new file mode 100644
index 000000000000..9f04e847a444
--- /dev/null
+++ b/sys-power/powertop/Manifest
@@ -0,0 +1 @@
+DIST powertop-2.15.tar.gz 302891 BLAKE2B f554ee9499c78f1888ecd58a1a357bc6f29f53ae2d3bf6b2819d760afe901f5d5394665a2e6a3ecae9b48cbf9703532feb5c16da9bd3edd4f1d31fe12610a2da SHA512 de4ca3ea25697d2cd5f05c41c82c326ad3e2d21cbf38ddb9b3af40c0d862a70781ca45d9ef7b735ad6def0cb580e4fa153eb4a6e6598e204fc931b30d85ecf41
diff --git a/sys-power/powertop/files/powertop-2.15-gettext.patch b/sys-power/powertop/files/powertop-2.15-gettext.patch
new file mode 100644
index 000000000000..243cb11dd9ba
--- /dev/null
+++ b/sys-power/powertop/files/powertop-2.15-gettext.patch
@@ -0,0 +1,49 @@
+https://bugs.gentoo.org/945828
+
+From bd1c81e3e5e5f0af348fed5881c550432a275075 Mon Sep 17 00:00:00 2001
+From: Matt Turner <mattst88@gmail.com>
+Date: Tue, 3 Dec 2024 19:42:33 -0500
+Subject: [PATCH] build: Use AM_GNU_GETTEXT_REQUIRE_VERSION and require 0.19.6
+
+This bumps the version requirement from 0.19 (from 2014) to 0.19.6
+(2015).
+
+Using only the old AM_GNU_GETTEXT_VERSION results in old gettext
+infrastructure being placed in the package. By using both macros we get
+the latest gettext files while the other programs in the Autotools
+family can still see the old macro.
+
+Otherwise, with gettext-0.23 we get
+
+```
+*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version 0.18 but the autoconf macros are from gettext version 0.22
+```
+
+Equivalent to the commit to xz.git here:
+https://git.tukaani.org/?p=xz.git;a=commit;h=3d576cf92158d62790017ad7f2dd6dc1dd6b42bb
+---
+ configure.ac | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git ./configure.ac ./configure.ac
+index c698818..2349c3c 100644
+--- ./configure.ac
++++ ./configure.ac
+@@ -24,8 +24,13 @@ AC_CONFIG_HEADERS([config.h])
+ GETTEXT_PACKAGE=powertop
+ AC_SUBST([GETTEXT_PACKAGE])
+ AM_SILENT_RULES([yes])
++
++dnl Support for _REQUIRE_VERSION was added in gettext 0.19.6. If both
++dnl _REQUIRE_VERSION and _VERSION are present, the _VERSION is ignored.
++dnl We use both for compatibility with other programs in the Autotools family.
+ AM_GNU_GETTEXT([external])
+-AM_GNU_GETTEXT_VERSION([0.18.2])
++AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.6])
++AM_GNU_GETTEXT_VERSION([0.19.6])
+
+ m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+ AX_REQUIRE_DEFINED([AX_ADD_FORTIFY_SOURCE])
+--
+2.45.3
+
diff --git a/sys-power/powertop/files/powertop-2.8-ncurses_tinfo.patch b/sys-power/powertop/files/powertop-2.8-ncurses_tinfo.patch
new file mode 100644
index 000000000000..97769fb6728e
--- /dev/null
+++ b/sys-power/powertop/files/powertop-2.8-ncurses_tinfo.patch
@@ -0,0 +1,41 @@
+From e1295099f8b42670718ba875cb6749a90042293f Mon Sep 17 00:00:00 2001
+From: Zentaro Kavanagh <zentaro@chromium.org>
+Date: Thu, 14 Jun 2018 13:13:37 -0700
+Subject: [PATCH] Fix configure to support ncurses w/ tinfo
+
+- The existing code checked for both ncursesw and ncurses and if
+ both were not found, NCURSES_LIBS was not set correctly.
+- Removed redundant concatenation to $LIBS since the makefile.am
+ already maps NCURSES_LIBS into LIBS.
+- Patch sent upstream to powertop mailing list [1]
+
+[1] - https://lists.01.org/pipermail/powertop/2018-June/002021.html
+---
+ configure.ac | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index d6a15e1..c6ee50a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -110,10 +110,13 @@ AC_CHECK_FUNCS([ \
+
+ AC_SEARCH_LIBS([clock_gettime], [rt])
+
+-PKG_CHECK_MODULES([NCURSES], [ncursesw ncurses], [LIBS="$LIBS $ncurses_LIBS"], [
+- AC_SEARCH_LIBS([delwin], [ncursesw ncurses], [], [
+- AC_MSG_ERROR([ncurses is required but was not found])
+- ], [])
++PKG_CHECK_MODULES([ncursesw], [ncursesw],
++ [NCURSES_CFLAGS="$ncursesw_CFLAGS"; NCURSES_LIBS="$ncursesw_LIBS"], [
++ PKG_CHECK_MODULES([NCURSES], [ncurses], [], [
++ AC_SEARCH_LIBS([delwin], [ncursesw ncurses], [], [
++ AC_MSG_ERROR([ncurses is required but was not found])
++ ])
++ ])
+ ])
+
+ has_libpci=0
+--
+2.18.0.rc1.242.g61856ae69a-goog
+
diff --git a/sys-power/powertop/metadata.xml b/sys-power/powertop/metadata.xml
new file mode 100644
index 000000000000..22d16de0b1eb
--- /dev/null
+++ b/sys-power/powertop/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+ <upstream>
+ <remote-id type="github">fenrus75/powertop</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/powertop/powertop-2.15.ebuild b/sys-power/powertop/powertop-2.15.ebuild
new file mode 100644
index 000000000000..c122601b050f
--- /dev/null
+++ b/sys-power/powertop/powertop-2.15.ebuild
@@ -0,0 +1,113 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+EGIT_REPO_URI="https://github.com/fenrus75/powertop.git"
+
+if [[ ${PV} == "9999" ]] ; then
+ GIT_ECLASS="git-r3"
+else
+ SRC_URI="https://github.com/fenrus75/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 arm ~arm64 ppc ~sparc x86"
+fi
+
+inherit autotools ${GIT_ECLASS} flag-o-matic linux-info
+
+DESCRIPTION="tool to diagnose issues with power consumption and power management"
+HOMEPAGE="https://github.com/fenrus75/powertop/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="nls X"
+
+DEPEND="
+ dev-libs/libnl:3
+ sys-apps/pciutils
+ sys-libs/ncurses:=[unicode(+)]
+"
+
+BDEPEND="
+ virtual/pkgconfig
+ dev-build/autoconf-archive
+ >=sys-devel/gettext-0.20.2
+"
+RDEPEND="
+ ${DEPEND}
+ X? ( x11-apps/xset )
+ virtual/libintl
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.8-ncurses_tinfo.patch
+ "${FILESDIR}"/${PN}-2.15-gettext.patch
+)
+
+pkg_setup() {
+ CONFIG_CHECK="
+ ~X86_MSR
+ ~DEBUG_FS
+ ~PERF_EVENTS
+ ~TRACEPOINTS
+ ~NO_HZ_IDLE
+ ~HIGH_RES_TIMERS
+ ~HPET_TIMER
+ ~CPU_FREQ_STAT
+ ~CPU_FREQ_GOV_ONDEMAND
+ ~FTRACE
+ ~BLK_DEV_IO_TRACE
+ ~TRACING
+ "
+ ERROR_KERNEL_X86_MSR="X86_MSR is not enabled in the kernel, you almost certainly need it"
+ ERROR_KERNEL_DEBUG_FS="DEBUG_FS is not enabled in the kernel, you almost certainly need it"
+ ERROR_KERNEL_PERF_EVENTS="PERF_EVENTS should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_TRACEPOINTS="TRACEPOINTS should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_NO_HZ_IDLE="NO_HZ_IDLE should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_HIGH_RES_TIMERS="HIGH_RES_TIMERS should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_HPET_TIMER="HPET_TIMER should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_CPU_FREQ_STAT="CPU_FREQ_STAT should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_CPU_FREQ_GOV_ONDEMAND="CPU_FREQ_GOV_ONDEMAND should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_FTRACE="FTRACE needs to be turned on to enable BLK_DEV_IO_TRACE"
+ ERROR_KERNEL_BLK_DEV_IO_TRACE="BLK_DEV_IO_TRACE needs to be turned on to enable other config options"
+ ERROR_KERNEL_TRACING="TRACING should be enabled in the kernel for full powertop function"
+ linux-info_pkg_setup
+ if linux_config_exists; then
+ if kernel_is -lt 3 7 0; then
+ if linux_chkconfig_present SND_HDA_INTEL; then
+ CONFIG_CHECK="~SND_HDA_POWER_SAVE"
+ ERROR_KERNEL_SND_HDA_POWER_SAVE="SND_HDA_POWER_SAVE should be enabled in the kernel for full powertop function"
+ check_extra_config
+ fi
+ fi
+ if kernel_is -lt 3 9 0; then
+ CONFIG_CHECK="~EVENT_POWER_TRACING_DEPRECATED"
+ ERROR_KERNEL_EVENT_POWER_TRACING_DEPRECATED="EVENT_POWER_TRACING_DEPRECATED should be enabled in the kernel for full powertop function"
+ check_extra_config
+ fi
+ if kernel_is -lt 3 19; then
+ CONFIG_CHECK="~PM_RUNTIME"
+ ERROR_KERNEL_PM_RUNTIME="PM_RUNTIME should be enabled in the kernel for full powertop function"
+ check_extra_config
+ else
+ CONFIG_CHECK="~PM"
+ ERROR_KERNEL_PM="PM should be enabled in the kernel for full powertop function"
+ check_extra_config
+ fi
+ if kernel_is -lt 4 11; then
+ CONFIG_CHECK="~TIMER_STATS"
+ ERROR_KERNEL_TIMER_STATS="TIMER_STATS should be enabled in the kernel for full powertop function"
+ check_extra_config
+ fi
+ fi
+}
+
+src_prepare() {
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ append-lfs-flags
+ econf $(use_enable nls)
+}
diff --git a/sys-power/powertop/powertop-9999.ebuild b/sys-power/powertop/powertop-9999.ebuild
new file mode 100644
index 000000000000..45a4b3d13a94
--- /dev/null
+++ b/sys-power/powertop/powertop-9999.ebuild
@@ -0,0 +1,108 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+EGIT_REPO_URI="https://github.com/fenrus75/powertop.git"
+
+if [[ ${PV} == "9999" ]] ; then
+ GIT_ECLASS="git-r3"
+else
+ SRC_URI="https://github.com/fenrus75/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~sparc ~x86"
+fi
+
+inherit autotools ${GIT_ECLASS} linux-info
+
+DESCRIPTION="tool to diagnose issues with power consumption and power management"
+HOMEPAGE="https://github.com/fenrus75/powertop/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="nls unicode X"
+
+DEPEND="
+ dev-libs/libnl:3
+ sys-apps/pciutils
+ sys-libs/ncurses:=[unicode(+)?]
+"
+
+BDEPEND="
+ virtual/pkgconfig
+ dev-build/autoconf-archive
+ >=sys-devel/gettext-0.20.2
+"
+RDEPEND="
+ ${DEPEND}
+ X? ( x11-apps/xset )
+ virtual/libintl
+"
+
+pkg_setup() {
+ CONFIG_CHECK="
+ ~X86_MSR
+ ~DEBUG_FS
+ ~PERF_EVENTS
+ ~TRACEPOINTS
+ ~NO_HZ_IDLE
+ ~HIGH_RES_TIMERS
+ ~HPET_TIMER
+ ~CPU_FREQ_STAT
+ ~CPU_FREQ_GOV_ONDEMAND
+ ~FTRACE
+ ~BLK_DEV_IO_TRACE
+ ~TRACING
+ "
+ ERROR_KERNEL_X86_MSR="X86_MSR is not enabled in the kernel, you almost certainly need it"
+ ERROR_KERNEL_DEBUG_FS="DEBUG_FS is not enabled in the kernel, you almost certainly need it"
+ ERROR_KERNEL_PERF_EVENTS="PERF_EVENTS should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_TRACEPOINTS="TRACEPOINTS should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_NO_HZ_IDLE="NO_HZ_IDLE should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_HIGH_RES_TIMERS="HIGH_RES_TIMERS should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_HPET_TIMER="HPET_TIMER should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_CPU_FREQ_STAT="CPU_FREQ_STAT should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_CPU_FREQ_GOV_ONDEMAND="CPU_FREQ_GOV_ONDEMAND should be enabled in the kernel for full powertop function"
+ ERROR_KERNEL_FTRACE="FTRACE needs to be turned on to enable BLK_DEV_IO_TRACE"
+ ERROR_KERNEL_BLK_DEV_IO_TRACE="BLK_DEV_IO_TRACE needs to be turned on to enable other config options"
+ ERROR_KERNEL_TRACING="TRACING should be enabled in the kernel for full powertop function"
+ linux-info_pkg_setup
+ if linux_config_exists; then
+ if kernel_is -lt 3 7 0; then
+ if linux_chkconfig_present SND_HDA_INTEL; then
+ CONFIG_CHECK="~SND_HDA_POWER_SAVE"
+ ERROR_KERNEL_SND_HDA_POWER_SAVE="SND_HDA_POWER_SAVE should be enabled in the kernel for full powertop function"
+ check_extra_config
+ fi
+ fi
+ if kernel_is -lt 3 9 0; then
+ CONFIG_CHECK="~EVENT_POWER_TRACING_DEPRECATED"
+ ERROR_KERNEL_EVENT_POWER_TRACING_DEPRECATED="EVENT_POWER_TRACING_DEPRECATED should be enabled in the kernel for full powertop function"
+ check_extra_config
+ fi
+ if kernel_is -lt 3 19; then
+ CONFIG_CHECK="~PM_RUNTIME"
+ ERROR_KERNEL_PM_RUNTIME="PM_RUNTIME should be enabled in the kernel for full powertop function"
+ check_extra_config
+ else
+ CONFIG_CHECK="~PM"
+ ERROR_KERNEL_PM="PM should be enabled in the kernel for full powertop function"
+ check_extra_config
+ fi
+ if kernel_is -lt 4 11; then
+ CONFIG_CHECK="~TIMER_STATS"
+ ERROR_KERNEL_TIMER_STATS="TIMER_STATS should be enabled in the kernel for full powertop function"
+ check_extra_config
+ fi
+ fi
+}
+
+src_prepare() {
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ export ac_cv_search_delwin=$(usex unicode -lncursesw -lncurses)
+ econf $(use_enable nls)
+}
diff --git a/sys-power/rog-daemon/Manifest b/sys-power/rog-daemon/Manifest
new file mode 100644
index 000000000000..b31b91b3e2be
--- /dev/null
+++ b/sys-power/rog-daemon/Manifest
@@ -0,0 +1 @@
+DIST rog-daemon-2.1.0.tar.gz 38347 BLAKE2B ee5af3add536fded74af3282df72e1472fa65a090d1334bc850618fb8f7386d688f82efb7b33d41ed62338106a272d72b031f25cffd569eb3132c5fb65c325c1 SHA512 609a91cfed44f5b4f552ed639c8d6851b2dca6925ab0e1e8501a2ca59db0f10ba5a2f9e04b4314049223f5bff590a1999ef46c854d5ff5b8f452fae803a9dbb5
diff --git a/sys-power/rog-daemon/metadata.xml b/sys-power/rog-daemon/metadata.xml
new file mode 100644
index 000000000000..c5545a550ea8
--- /dev/null
+++ b/sys-power/rog-daemon/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>mechakotik@gmail.com</email>
+ <name>Andrei Sabalenka</name>
+ </maintainer>
+ <upstream>
+ <bugs-to>https://github.com/mechakotik/rog-daemon/issues</bugs-to>
+ <remote-id type="github">mechakotik/rog-daemon</remote-id>
+ </upstream>
+ <use>
+ <flag name="profile">Enable support for controlling profile</flag>
+ <flag name="fan-curve">Enable support for custom fan curves</flag>
+ <flag name="mux">Enable support for MUX switch</flag>
+ <flag name="panel-od">Enable support for Panel Overdrive</flag>
+ </use>
+</pkgmetadata>
+
diff --git a/sys-power/rog-daemon/rog-daemon-2.1.0.ebuild b/sys-power/rog-daemon/rog-daemon-2.1.0.ebuild
new file mode 100644
index 000000000000..392cf4d69d39
--- /dev/null
+++ b/sys-power/rog-daemon/rog-daemon-2.1.0.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit meson
+
+DESCRIPTION="Lightweight and modular ASUS ROG control daemon"
+HOMEPAGE="https://github.com/mechakotik/rog-daemon"
+SRC_URI="https://github.com/mechakotik/rog-daemon/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="systemd +profile +fan-curve +mux +panel-od"
+
+src_configure() {
+ local emesonargs=(
+ $(usex "systemd" "-Dinit=systemd" "-Dinit=openrc")
+ $(meson_use profile)
+ $(meson_use fan-curve fan_curve)
+ $(meson_use mux)
+ $(meson_use panel-od panel_od)
+ )
+ meson_src_configure
+}
diff --git a/sys-power/sandmann-bin/Manifest b/sys-power/sandmann-bin/Manifest
new file mode 100644
index 000000000000..fc624a996e94
--- /dev/null
+++ b/sys-power/sandmann-bin/Manifest
@@ -0,0 +1,2 @@
+DIST sandmann-1.3.1.tar.xz 16884480 BLAKE2B 6e16eae03f7ab43d5c3807b43587dbf65047ed86196623748e499eba20d6347bd074ff6ed167f7301c7cfdc746654811428f16569bd1b8a6ebb3cb3b660cf7f0 SHA512 8aaead9ff9b711737eecff49edee042b32fdbc194b67f99a6bfbca6a8915442cd60d505ce070685915fa7aae6b0fecd7eb5c55096580bf3f8f525650eddbd8cc
+DIST sandmann-1.4.1.tar.xz 16923760 BLAKE2B 348b84642835ae17e28fec7d43488cc69a2c061aefebe7bbb129f3e67d29c3d70ab0c3bc097afa81e0f19e4f6e52d7ffb226ca19e97490c3521bd497dd8ac520 SHA512 8a8b8c6c41bd818df9e8477070a35df37d1a14b76de54e361937bec998393646d191f098154a91273e4e2d910f3eeb05ed4a790f1783d7fb7ea0a4a25b802fa9
diff --git a/sys-power/sandmann-bin/metadata.xml b/sys-power/sandmann-bin/metadata.xml
new file mode 100644
index 000000000000..9e9e9d6a99b7
--- /dev/null
+++ b/sys-power/sandmann-bin/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <name>Florian Schmaus</name>
+ <email>flow@gentoo.org</email>
+ </maintainer>
+ <upstream>
+ <remote-id type="gitlab">flow/sandmann</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/sandmann-bin/sandmann-bin-1.3.1.ebuild b/sys-power/sandmann-bin/sandmann-bin-1.3.1.ebuild
new file mode 100644
index 000000000000..91ed19922996
--- /dev/null
+++ b/sys-power/sandmann-bin/sandmann-bin-1.3.1.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit java-utils-2 systemd tmpfiles
+
+MY_PN=${PN%-bin}
+MY_P=${MY_PN}-${PV}
+
+DESCRIPTION="An autosuspend and wakeup daemon"
+HOMEPAGE="https://gitlab.com/flow/sandmann"
+SRC_URI="https://geekplace.eu/projects/${MY_PN}/archive/${MY_P}.tar.xz"
+
+S="${WORKDIR}/${MY_P}"
+LICENSE="GPL-3+ LGPL-3"
+SLOT="0"
+
+KEYWORDS="amd64"
+
+# >=java-config-2.3.2 to get the libdir fix.
+RDEPEND="
+ acct-user/sandmann
+ >=dev-java/java-config-2.3.2
+ sys-apps/systemd
+ sys-auth/polkit
+ >=virtual/jre-17
+"
+
+src_prepare() {
+ default
+ sed -i \
+ -e 's|^ExecStart=.*|ExecStart=/usr/bin/sandmann|' \
+ sandmann.service || die
+}
+
+src_compile() {
+ :
+}
+
+src_install() {
+ local my_emake_args=(
+ DESTDIR="${D}"
+ SYSTEMD_SYSTEM_UNIT_DIR="$(systemd_get_systemunitdir)"
+ TARGET_BINARY=
+ SOURCELESS_INSTALL=true
+ )
+
+ emake "${my_emake_args[@]}" install
+
+ java-pkg_newjar out/main/assembly.dest/out.jar sandmann.jar
+ java-pkg_dolauncher sandmann
+
+ dodoc README.md
+}
+
+pkg_postinst() {
+ tmpfiles_process sandmann.conf
+}
diff --git a/sys-power/sandmann-bin/sandmann-bin-1.4.1-r1.ebuild b/sys-power/sandmann-bin/sandmann-bin-1.4.1-r1.ebuild
new file mode 100644
index 000000000000..80bacab74011
--- /dev/null
+++ b/sys-power/sandmann-bin/sandmann-bin-1.4.1-r1.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit java-utils-2 systemd tmpfiles
+
+MY_PN=${PN%-bin}
+MY_P=${MY_PN}-${PV}
+
+DESCRIPTION="An autosuspend and wakeup daemon"
+HOMEPAGE="https://gitlab.com/flow/sandmann"
+SRC_URI="https://geekplace.eu/projects/${MY_PN}/archive/${MY_P}.tar.xz"
+
+S="${WORKDIR}/${MY_P}"
+LICENSE="GPL-3+ LGPL-3"
+SLOT="0"
+
+KEYWORDS="amd64"
+
+# >=java-config-2.3.2 to get the libdir fix.
+RDEPEND="
+ acct-user/sandmann
+ acct-group/sandmann-ctrl
+ >=dev-java/java-config-2.3.2
+ net-misc/socat
+ sys-apps/systemd
+ sys-auth/polkit
+ >=virtual/jre-17
+"
+
+src_prepare() {
+ default
+ sed -i \
+ -e 's|^ExecStart=.*|ExecStart=/usr/bin/sandmann|' \
+ sandmann.service || die
+}
+
+src_compile() {
+ :
+}
+
+src_install() {
+ local my_emake_args=(
+ DESTDIR="${D}"
+ SYSTEMD_SYSTEM_UNIT_DIR="$(systemd_get_systemunitdir)"
+ TARGET_BINARY=
+ SOURCELESS_INSTALL=true
+ )
+
+ emake "${my_emake_args[@]}" install
+
+ java-pkg_newjar out/main/assembly.dest/out.jar sandmann.jar
+ java-pkg_dolauncher sandmann
+
+ dodoc README.md
+}
+
+pkg_postinst() {
+ tmpfiles_process sandmann.conf
+}
diff --git a/sys-power/sispmctl/Manifest b/sys-power/sispmctl/Manifest
new file mode 100644
index 000000000000..c128cffa68be
--- /dev/null
+++ b/sys-power/sispmctl/Manifest
@@ -0,0 +1 @@
+DIST sispmctl-4.12.tar.gz 462829 BLAKE2B dccf61386ad337739825c7f885bef0cbf76868f938a2a7e0ea9853c0bd5591a289d82876f800f2839e6cd9be7040dec2c650ea347e446e15ba43f1169c05cd36 SHA512 945dd7a14f1d6c60cf6f9855782608187c94edce2c3acb9c1dabf92022632051bdf659c49d1d82fd8d38283d710a6847ac985e2efca9a157425fdc55545d5a1a
diff --git a/sys-power/sispmctl/metadata.xml b/sys-power/sispmctl/metadata.xml
new file mode 100644
index 000000000000..1b9661a3745e
--- /dev/null
+++ b/sys-power/sispmctl/metadata.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+ <longdescription>
+ sispmctl is an application enabling the use of the GEMBIRD
+ SilverShield PowerManager (SiS-PM) device under Linux.
+ The SiS-PM is an intelligent advanced surge protector with
+ 4 of 6 sockets being manageable from the PC via USB.
+ </longdescription>
+ <upstream>
+ <remote-id type="sourceforge">sispmctl</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/sispmctl/sispmctl-4.12.ebuild b/sys-power/sispmctl/sispmctl-4.12.ebuild
new file mode 100644
index 000000000000..4fa92e68e8c6
--- /dev/null
+++ b/sys-power/sispmctl/sispmctl-4.12.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit systemd udev
+
+DESCRIPTION="GEMBIRD SiS-PM control utility"
+HOMEPAGE="https://sispmctl.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/sispmctl/${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="static-libs"
+
+DEPEND="
+ virtual/libusb:0
+"
+RDEPEND="
+ ${DEPEND}
+ acct-group/sispmctl
+"
+
+src_configure() {
+ local myeconfargs=(
+ $(use_enable static-libs static)
+ --enable-webless
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+
+ find "${ED}" -name '*.la' -delete || die
+
+ # install udev rules which make the device files writable
+ # by the members of the group sispmctl
+ udev_dorules examples/60-sispmctl.rules
+
+ systemd_dounit examples/${PN}.service
+}
+
+pkg_postinst() {
+ udev_reload
+ einfo "Add users who may run ${PN} to the group '${PN}'"
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/sys-power/suspend/Manifest b/sys-power/suspend/Manifest
new file mode 100644
index 000000000000..4b4a4780c9df
--- /dev/null
+++ b/sys-power/suspend/Manifest
@@ -0,0 +1,2 @@
+DIST suspend-1.0_p20120915.tar.xz 111080 BLAKE2B 99eea1d9808219373501001f0af90973c9176c1b19d62bff7be26886b11ebb514134b68434e9b453146ef1a4af2c4cc8e26326b956a1b2378c38c100638af17c SHA512 bb714b4a7c0f5749c4b711a5c38ca5d8cb5078176a75387957123f75cfe8348adc3aa4e96335eb65c14ad1dd2f99fd6dbca3b415525dd39b3c547f9b13b775be
+DIST suspend-1.0_p20200924.patch.xz 6664 BLAKE2B 8a0529859cfd1a19f52fb46f306111ec4e520c9678113fd7c5ad12ada85bed89fedeeafee5145f11f07ef8dac1c6c1ae0ff2d6c6d6f794c268759d70895b1af9 SHA512 27c7cfcf2b2a0f8ccafd4c0020c1dce3aa1df352adac81ba5f24b76381a833f10621f7ae58e55c7c3d41f41ba63a38aa818454edaa32ad1f0fdc6db45b5bfe73
diff --git a/sys-power/suspend/files/suspend-1.0_p20200924-Use-pkgconf-for-libgcrypt.patch b/sys-power/suspend/files/suspend-1.0_p20200924-Use-pkgconf-for-libgcrypt.patch
new file mode 100644
index 000000000000..ea77ab450e71
--- /dev/null
+++ b/sys-power/suspend/files/suspend-1.0_p20200924-Use-pkgconf-for-libgcrypt.patch
@@ -0,0 +1,18 @@
+diff --git a/configure.ac b/configure.ac
+index 5f3adb5..b7f21eb 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -211,7 +211,12 @@ fi
+ if test "${enable_encrypt}" = "yes"; then
+ CONFIG_FEATURES="${CONFIG_FEATURES} encrypt"
+ AC_DEFINE([CONFIG_ENCRYPT], [1], [Define if encryption enabled])
+- AM_PATH_LIBGCRYPT([1:1.6.3], [], [AC_MSG_ERROR([Cannot locate >=libgcrypt-1.6.3])])
++ PKG_CONFIG="pkg-config --static"
++ PKG_CHECK_MODULES([LIBGCRYPT],
++ [libgcrypt >= 1.6.3],
++ ,
++ [AC_MSG_ERROR("Cannot locate >=libgcrypt-1.6.3")]
++ )
+ fi
+
+ if test "${enable_splashy}" = "yes"; then
diff --git a/sys-power/suspend/files/suspend-1.0_p20200924-fix-loff_t-for-musl.patch b/sys-power/suspend/files/suspend-1.0_p20200924-fix-loff_t-for-musl.patch
new file mode 100644
index 000000000000..37a77118f0c7
--- /dev/null
+++ b/sys-power/suspend/files/suspend-1.0_p20200924-fix-loff_t-for-musl.patch
@@ -0,0 +1,24 @@
+diff --git a/configure.ac b/configure.ac
+index 5f3adb5..0c544c8 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -126,6 +126,7 @@ AC_CHECK_PROGS([M4], [m4])
+ AC_CHECK_PROG(PERL, perl, perl)
+
+ AC_SYS_LARGEFILE
++AC_USE_SYSTEM_EXTENSIONS
+
+ if test "${enable_create_device}" = "yes"; then
+ AC_CHECK_PROGS([MKNOD], [mknod])
+diff --git a/swsusp.h b/swsusp.h
+index 5f89902..6f4863e 100644
+--- a/swsusp.h
++++ b/swsusp.h
+@@ -9,6 +9,7 @@
+ *
+ */
+
++#include "config.h"
+ #include <stdint.h>
+ #include <linux/fs.h>
+ #include <linux/suspend_ioctls.h>
diff --git a/sys-power/suspend/metadata.xml b/sys-power/suspend/metadata.xml
new file mode 100644
index 000000000000..07d1dd9d878f
--- /dev/null
+++ b/sys-power/suspend/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+ <use>
+ <flag name="crypt">Allows suspend and resume from encrypted disk</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">suspend</remote-id>
+ <remote-id type="github">bircoph/suspend</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/suspend/suspend-1.0_p20200924.ebuild b/sys-power/suspend/suspend-1.0_p20200924.ebuild
new file mode 100644
index 000000000000..b008abc3ab26
--- /dev/null
+++ b/sys-power/suspend/suspend-1.0_p20200924.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools
+
+BASE_PV="1.0_p20120915"
+
+DESCRIPTION="Userspace Software Suspend and S2Ram"
+HOMEPAGE="http://suspend.sourceforge.net
+https://github.com/bircoph/suspend"
+SRC_URI="https://dev.gentoo.org/~bircoph/distfiles/${PN}-${BASE_PV}.tar.xz
+ https://dev.gentoo.org/~bircoph/patches/${P}.patch.xz"
+
+S="${WORKDIR}/${PN}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="crypt +lzo threads"
+
+RDEPEND="
+ dev-libs/libx86
+ >=sys-apps/pciutils-2.2.4
+ crypt? (
+ >=dev-libs/libgcrypt-1.6.3:0[static-libs]
+ dev-libs/libgpg-error[static-libs] )
+ lzo? ( >=dev-libs/lzo-2[static-libs] ) "
+DEPEND="${RDEPEND}"
+BDEPEND="
+ >=dev-lang/perl-5.10
+ virtual/pkgconfig"
+
+PATCHES=(
+ "${WORKDIR}/${P}.patch"
+ "${FILESDIR}/${PN}-1.0_p20200924-Use-pkgconf-for-libgcrypt.patch"
+ "${FILESDIR}/${PN}-1.0_p20200924-fix-loff_t-for-musl.patch"
+ )
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ econf \
+ --disable-fbsplash \
+ $(use_enable crypt encrypt) \
+ $(use_enable lzo compress) \
+ $(use_enable threads)
+}
+
+src_install() {
+ dodir etc
+ emake DESTDIR="${D}" install
+ rm "${D}/usr/share/doc/${PF}"/COPYING* || die
+}
+
+pkg_postinst() {
+ elog "In order to make this package work with genkernel see:"
+ elog "https://bugs.gentoo.org/show_bug.cgi?id=156445"
+}
diff --git a/sys-power/switcheroo-control/Manifest b/sys-power/switcheroo-control/Manifest
new file mode 100644
index 000000000000..c1a9404763de
--- /dev/null
+++ b/sys-power/switcheroo-control/Manifest
@@ -0,0 +1,2 @@
+DIST switcheroo-control-2.6.tar.xz 29996 BLAKE2B 98204a1d0f3b92cc2b98ad9f382313aed4da5877ac6be607c48ee9386bd25087301e249907a7e1385eea357f0a3ce5fb2936fac688923dfa3555a9870f0d2e58 SHA512 ac8867a839ae958676f5c5c7bb4c25cbbcf70eb35a696bb3d80b388c31a9722e75311c041c4c60b8f1d00f405af97dd9173e99780a2be3c621ac759c4986a2d2
+DIST switcheroo-control-3.0.tar.xz 33380 BLAKE2B 3d69968383b34f624ec0068bd986cb2b0be408d5617af350b128c0583511e3bfe7618e49826308ef87ef19b6cf681c41e786d9ab5fdd3cd1b868be5dd409ee18 SHA512 f2b3df3f0254a13f2e046269b612f90d15c4f6ce22f9e6463b156a03de271d30519fed9002f7faae76ca84a5e6001550d8003901d5a228694375ae56a640ad61
diff --git a/sys-power/switcheroo-control/files/switcheroo-control-init.d b/sys-power/switcheroo-control/files/switcheroo-control-init.d
new file mode 100644
index 000000000000..e6ca92908715
--- /dev/null
+++ b/sys-power/switcheroo-control/files/switcheroo-control-init.d
@@ -0,0 +1,12 @@
+#!/sbin/openrc-run
+
+description="Switcheroo Control Proxy service"
+
+command=/usr/libexec/switcheroo-control
+command_background=yes
+pidfile=/run/switcheroo-control.pid
+
+depend() {
+ need dbus
+ before alsasound display-manager
+}
diff --git a/sys-power/switcheroo-control/metadata.xml b/sys-power/switcheroo-control/metadata.xml
new file mode 100644
index 000000000000..88197da5238c
--- /dev/null
+++ b/sys-power/switcheroo-control/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>pacho@gentoo.org</email>
+ </maintainer>
+ <upstream>
+ <remote-id type="freedesktop-gitlab">hadess/switcheroo-control</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/switcheroo-control/switcheroo-control-2.6-r2.ebuild b/sys-power/switcheroo-control/switcheroo-control-2.6-r2.ebuild
new file mode 100644
index 000000000000..a4f11cca3116
--- /dev/null
+++ b/sys-power/switcheroo-control/switcheroo-control-2.6-r2.ebuild
@@ -0,0 +1,72 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit meson python-single-r1 systemd
+
+DESCRIPTION="D-Bus service to check the availability of dual-GPU"
+HOMEPAGE="https://gitlab.freedesktop.org/hadess/switcheroo-control/"
+SRC_URI="https://gitlab.freedesktop.org/hadess/switcheroo-control/uploads/86ea54ac7ddb901b6bf6e915209151f8/${P}.tar.xz"
+
+LICENSE="GPL-3"
+SLOT="0"
+IUSE="gtk-doc selinux test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+KEYWORDS="amd64 ~arm arm64 ~loong ppc64 ~riscv x86"
+
+RDEPEND="${PYTHON_DEPS}
+ $(python_gen_cond_dep 'dev-python/pygobject:3[${PYTHON_USEDEP}]')
+ >=dev-libs/glib-2.56.0:2
+ >=dev-libs/libgudev-232:=
+ selinux? ( sec-policy/selinux-switcheroo )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ $(python_gen_cond_dep 'dev-python/pygobject:3[${PYTHON_USEDEP}]')
+ >=dev-util/gdbus-codegen-2.80.5-r1
+ gtk-doc? ( dev-util/gtk-doc )
+ test? (
+ $(python_gen_cond_dep 'dev-python/python-dbusmock[${PYTHON_USEDEP}]')
+ dev-util/umockdev
+ )
+"
+
+RESTRICT="!test? ( test )"
+
+python_check_deps() {
+ if use test; then
+ python_has_version "dev-python/python-dbusmock[${PYTHON_USEDEP}]" &&
+ python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]"
+ else
+ python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]"
+ fi
+}
+
+src_configure() {
+ local emesonargs=(
+ -Dsystemdsystemunitdir="$(systemd_get_systemunitdir)"
+ $(meson_use gtk-doc gtk_doc)
+ $(meson_use test tests)
+ )
+ meson_src_configure
+}
+
+src_install() {
+ meson_src_install
+ python_fix_shebang "${ED}"/usr/bin/switcherooctl
+ newinitd "${FILESDIR}"/${PN}-init.d ${PN}
+}
+
+pkg_postinst() {
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ elog "You need to enable the service:"
+ if systemd_is_booted; then
+ elog "# systemctl enable ${PN}"
+ else
+ elog "# rc-update add ${PN} default"
+ fi
+ fi
+}
diff --git a/sys-power/switcheroo-control/switcheroo-control-3.0.ebuild b/sys-power/switcheroo-control/switcheroo-control-3.0.ebuild
new file mode 100644
index 000000000000..b63f23410669
--- /dev/null
+++ b/sys-power/switcheroo-control/switcheroo-control-3.0.ebuild
@@ -0,0 +1,87 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit meson python-single-r1 systemd udev
+
+DESCRIPTION="D-Bus service to check the availability of dual-GPU"
+HOMEPAGE="https://gitlab.freedesktop.org/hadess/switcheroo-control/"
+SRC_URI="https://gitlab.freedesktop.org/hadess/switcheroo-control/-/releases/${PV}/downloads/${P}.tar.xz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="amd64 ~arm arm64 ~loong ppc64 ~riscv x86"
+
+IUSE="gtk-doc selinux test video_cards_amdgpu video_cards_nouveau"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="${PYTHON_DEPS}
+ $(python_gen_cond_dep 'dev-python/pygobject:3[${PYTHON_USEDEP}]')
+ >=dev-libs/glib-2.56.0:2
+ >=dev-libs/libgudev-232:=
+ >=x11-libs/libdrm-2.4.97[video_cards_amdgpu?,video_cards_nouveau?]
+ selinux? ( sec-policy/selinux-switcheroo )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ $(python_gen_cond_dep 'dev-python/pygobject:3[${PYTHON_USEDEP}]')
+ >=dev-util/gdbus-codegen-2.80.5-r1
+ gtk-doc? ( dev-util/gtk-doc )
+ test? (
+ $(python_gen_cond_dep 'dev-python/python-dbusmock[${PYTHON_USEDEP}]')
+ dev-util/umockdev
+ )
+"
+
+RESTRICT="!test? ( test )"
+
+python_check_deps() {
+ if use test; then
+ python_has_version "dev-python/python-dbusmock[${PYTHON_USEDEP}]" &&
+ python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]"
+ else
+ python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]"
+ fi
+}
+
+src_prepare() {
+ default
+
+ # GPU detection fails when running on sandbox
+ sed -i -e '/discrete-detection/d' tests/meson.build || die
+}
+
+src_configure() {
+ local emesonargs=(
+ -Drulesdir="${EPREFIX}"/"$(get_udevdir)"/rules.d
+ -Dsystemdsystemunitdir="$(systemd_get_systemunitdir)"
+ $(meson_use gtk-doc gtk_doc)
+ $(meson_use test tests)
+ )
+ meson_src_configure
+}
+
+src_install() {
+ meson_src_install
+ python_fix_shebang "${ED}"/usr/bin/switcherooctl
+ newinitd "${FILESDIR}"/${PN}-init.d ${PN}
+}
+
+pkg_postinst() {
+ udev_reload
+
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ elog "You need to enable the service:"
+ if systemd_is_booted; then
+ elog "# systemctl enable ${PN}"
+ else
+ elog "# rc-update add ${PN} default"
+ fi
+ fi
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/sys-power/system76-power/Manifest b/sys-power/system76-power/Manifest
new file mode 100644
index 000000000000..6127c7caba74
--- /dev/null
+++ b/sys-power/system76-power/Manifest
@@ -0,0 +1,294 @@
+DIST addr2line-0.21.0.crate 40807 BLAKE2B 9796b9a1177a299797902b7f64247d81d63d3f7e0dcc1256990628e84c5f92e3094ee8d753d9b72187b9aaa73b7ca67c0217899f2226ebd1076f8d25b458475b SHA512 afde7660dda30dee240e79df1fb5b92d4572520bf17a134ef3765e2a077af9e13713952d52e27fae420109b40f6e24dbce1056687dbcbead858ffc21cc7dc69b
+DIST addr2line-0.24.2.crate 39015 BLAKE2B 57186d6b957542cd71a0aa19f1355dfaabe6efa19b853c42f306494728b03d1e3183efdb2d2c7734a3e2347cd83a985d004f50c097e06b7520bd152310532e9b SHA512 39cbec3c920ffc0f37584afb55e1cfe4f182e4415319a4e9bfe842360f102f7b9315f6171c0cf71ba0337123903e604096cd573fe98698a26c8eebc2376d965b
+DIST adler-1.0.2.crate 12778 BLAKE2B a1dc17786adae945ac09d3525e609ed944e6465690787bbb831a1b9d53793cba1989793d0a5606d5d23ee20d36457923d451b1b3530c9ec7072a487aa3e55bbd SHA512 7ab190d31890fc05b0b55d8e2c6527a505e06793d5496be0b3831e0513412f9ba97f8148f6f68ed0770fa9cd980a5092d885e058becf1d5506b7c74b82674aa1
+DIST adler2-2.0.0.crate 13529 BLAKE2B ec575b0bf12e321399ac3a1d59fce4ddbeabcc60cb3d7c2f362cce23eb29b4ea836451372d6d88552a4435ae29bb41d6230d55f625a4359eace680b9b771d0ad SHA512 12d12579ad617cf1a94cf95ab9d3f5db566c3b2de4bd5735eccd83c668fdad0eff134c996b73c46cbb9f932837682043878b8cc4764191625e9f93ccffcce423
+DIST aho-corasick-1.1.3.crate 183311 BLAKE2B 8dfcbba0b9d94e55eae739b16f5c6474baa43ee7854c5ca792f426a9f46fb0eece79cd493b804e51449181bcad338b96819fe977c02c9907654d713e26b9f830 SHA512 ba422a54688c4678fcf16e34fdf3ed06c333e6e3fc8b75af9272a215add494d43ebaef319021134b61327fd5d3572aec0dc655b714ffb3bc71ba3c265c9ebb69
+DIST anstream-0.6.13.crate 30928 BLAKE2B 0c6d0932dc486ccbe8d7e6f97bd8aae03fb84d4db90d0488070b7109de673e0af845a70a39e546af87f71f4c7f7bb159ab8ed68ac0f03a0297457062d9d69dc0 SHA512 4f9ccfd135de9be22a01230f39d571c8d8ccf7c3eba837fbf0868c9660693b60ee0c1c2f9490a587d5307e892ed45cb946da7a0690a9f972619c94fb050bde09
+DIST anstream-0.6.15.crate 29231 BLAKE2B cc4cf0f381c210fecc20b5796fe872b533419e5f957021b0c3be3cdc23fb84ce029fbef6f9b6f174a76ad713c07f0811145a70572de7c24cfab060fdd990f49a SHA512 1cb01a0293b4c9bcc010909707e71c464416d3ec6fc9789060b7aa9fe4cc04424fefa8013cc8765ccdae6dfd9a1c50a11f7b30b39a32c4aeaf525f28167ddb92
+DIST anstyle-1.0.6.crate 14604 BLAKE2B 0716d0dbb62bf05c63c2bfe1c689896660073a423d26965ce2570f11e1925752a61209d78c2f2fe65ec4eb64ea4ffbb39669e789c0ba5d1b71e75de929153b20 SHA512 dc0e505465be54799b9faad70d0c6f7f0dcf9f5e1aaa43177b826c85dae626b054910244da0499862f066f6723a1560ad12100aec523f28c6198f1ea0d1b78fa
+DIST anstyle-1.0.8.crate 15771 BLAKE2B c039613e7de27cc990e5764810f9351754b160928a8954dc19041354cf9fef1422ed964237a5d39d16e4e9f8592ed52c523ccf36b0b5506f464d4f818f3332ff SHA512 3b867f73df0b2f69a0c7d5d6e62c7515045e053656afaa303e5aade8012e838cdf5d15d2c3d7c297db9e297d08ea69a9c8eed04b97922a83f56c58962c1c0b69
+DIST anstyle-parse-0.2.3.crate 24699 BLAKE2B 17e8638187ccc1ca0174a8cec7f7daeee7e0d8b8c430f7e74f9b10d8de4b49fd1c6facfdafde305b7a3e55b1ebf2b4e8ec4975a0cce691514ddae9eb5b5e711e SHA512 4a6d0f706d75c9b3c5144f34efdef3ef8fcd075962c594a23a6209ed56112563a34b3c01e05a08a0868d59204272d06211b2585cb9d06ce075ea875bedb2f399
+DIST anstyle-parse-0.2.5.crate 22680 BLAKE2B 7473651b1eee08857a6ed1419d3d62ba4b9a9aa0d6657965ad9c67bddd793d825737d3804961716a89bdebed9879ac43b42c897cd229c6e7bd780859e1e3c247 SHA512 cd94ad0e88ad4547a660da1473bf4e6dfed805a066782124204143c7f754c12db719bd3a1774c299f1a035740bfc4830919da191bd14e0acede410f6dbd1e2ef
+DIST anstyle-query-1.0.2.crate 8739 BLAKE2B c06643e8616f1f4469a32f9c0512941ce53ac5db9ebfa7a5b2f19233040cd4438dd2ee69ab89ecbc1c239e92b674dea9df15ed673408c6f3fe21787cc17d76f3 SHA512 f409b624cbeecf58fd87c47f85be28cae1fe48f65d692195fb80854c514e38c40d0e0ffad3a5b388a3929c47bd2060302ebb635aa98dc57329f3a5ed7be3e2dc
+DIST anstyle-query-1.1.1.crate 9891 BLAKE2B c298114c1864a5233fb39c365e079a7f1f4ef23499dc330e5deb06f83f27bc727015befef79075c7e39952547f799b4135d7db287cf72dfc914191df784a4989 SHA512 1b2e888f025142a0d9b01314cf083831a2a45d8da737c1be3a6a9aa177e73e0d2ae7999fe7610dd450b7096115e8cf38c5da23723cebf1deaa7d3501d3dbd5ce
+DIST anstyle-wincon-3.0.2.crate 11272 BLAKE2B 73e124773f618a744b17017d4680ec6ccc84ff94fbe2e565073fbcc0facecd3cb65356cf27746d07f453bc917cbeb2ade3a618c6b8578d64cff4828c99569868 SHA512 4cc194faacffa01c6989354c1cadbf1134f0945250f67b7020ab5b475e30db34c799176bd335a6265386cb9c5e8b5bcbdf35894ec0c809b140ffe1c406751931
+DIST anstyle-wincon-3.0.4.crate 12234 BLAKE2B 23294d6ed7715c55c8f796eb7b860450c57b22b57e32a5c75847f2e2bd68a52b33c24797db662aa5fd7e799b9644075c8c939d93b0cf8598b16ee80fc817b77f SHA512 24b3a9a44382609ad449425a657d4b42a792d4703c36e0953f09a03817759c266a2f0ff4ecc9e8b93ea8403df2badef1f1af6a6e50af56205176c41b13501ae6
+DIST anyhow-1.0.82.crate 45361 BLAKE2B 558bac4de847a432fc80427e7be4e78cae4b01c4da852eae2121416af4d7e6ddeaeffd7de9bb69e55340b9a228436b975fdea88e380391a77c782a3776b835dd SHA512 e0d25a8c0b9c45e1db2072618097aff3908f70bfcbf0963d3c9dd9c97be27a85c4a763c5cb74e1ccd1b0a2059360e0879df4be80e10e58e0a5346b65f4fa1a69
+DIST anyhow-1.0.91.crate 47348 BLAKE2B b6b0f3082c4b8398090f0f93c35c54eeac8f6c9fbfb7507a8d82a73310db09d819b4d764615f8e66902e81d89554e4dd7ade6267ab40b44a53e7df7e6d1a2730 SHA512 6b0e30f5aafd47f245276a0424b0ecf54a9b263fb101a2bc8a0db040e011597a2b7eee5bc3391378395c55582176b5a98ed31cedb3684b7944667801df1a5554
+DIST async-broadcast-0.5.1.crate 20134 BLAKE2B a45a7ff0b05eaab687f0912b2fdd0c3d9379402d5ccb8269568fbf77e235b42db0f741b4743438511fc00e7e1c6ec09c7b2f6e37b4b9a4df07846ae582e9c812 SHA512 48de28fad3fa8258b61f1adc0f13e69698f0fc3e11c68eb6b6d2df11784dc5c1e09f6f2c03dd12679d9888171b87cff3362ee06b910833e55d278738ab7508ae
+DIST async-channel-2.2.1.crate 14326 BLAKE2B ff89c3c0daf1b682c6eef8efba42e9fd29a374b6508cf254e69c8e503eb6ae10d96d129baf0c5033af4a9826210c57a6f826eb62241108ca4448f8dc438ad33a SHA512 706aa51402267ee2e7b8995efea8fb950a88d5db5e86302d554850074a2ecc541b02db3b9b28f068d4143de41300f75a405c0f2b9e83cd848ffc98a1d336da71
+DIST async-channel-2.3.1.crate 14576 BLAKE2B 09ea03c9758805c90be9aba222e1d74f3166ab492e533597647d1b4f08bf1dda79d73b21de791b9802e19c225cb94b7cb25550bba61488c7b61fa87f88eb29dd SHA512 94c999912bdf681dcb686292645bc8c340c2687bc9544f317e0123e672752c6b31e9d784e488e7d0bab79b5f207da8904a7f1fe140397513b47c292a6508a7e5
+DIST async-executor-1.11.0.crate 24767 BLAKE2B 02e396acc8aae8f83fe6652b78765c6845a212ec231fedac817f0b0e4076b1a756e0613544e82c29c5276b6538ecb0f8789e221c8f182f0cff0d9c70b1324027 SHA512 a966e235a6f73c92ac8aded01315f2b309c8fd69fc3b92c189f33ad7b2e9790c09bd3ba6e4fd4f46017fe803299629ede6bb490341e6a7acaeae0d4fbab19dce
+DIST async-executor-1.13.1.crate 27991 BLAKE2B 856bd4f42a0d8d35bfb8b8525f626e0b52fd6704810f8bc964cebc47aa0c7a4450f16e5df307f4fc613da81fb3207f4671543f48710177931d6f70dc40c9f95d SHA512 27357b3dc28ad5512b46306ab7d959b2e68b4b5ed0d42fc8cd12fd265a1931a4d8c8c328911eca97227b12d861c9658c14afea6336f999436671d6ef351f3820
+DIST async-fs-1.6.0.crate 16506 BLAKE2B ddb7a86d6e294a07f0d494448d0bbea31df320e5d5734222ce3949753fb686b15ba5811c5dc7fa5e77d1be62154447e2cd096c7b7f7021450c5c75c59d45a8b2 SHA512 18d226cc21e5c8c96c269c883b6d5784bbaa45be5b883908d7f2cc61ae8797441a9b3786a02ce9664013d406beb679c5a8e89e6ab82d11bc2b981b600b3d6830
+DIST async-io-1.13.0.crate 37191 BLAKE2B ec27c5a49550f9a2cda66df0a6c54e5a64191e6c1ebade4e47a3164cd04fe7fff60d225788983f55e47a785dd57c74a22f2a3455349d2d451646e4d0e7f4ffcb SHA512 b37a13fdb1d29e2e8852ab6f24589718a88aa39bf532145ae7541d61c3f49f731f890764dd945845eef6c8b5af1042bac2c04cdabc00b36dc4350fa1c62ce54e
+DIST async-io-2.3.2.crate 49298 BLAKE2B cf01d97782405c56261d54800fcefe97c914850d50b49ce2902eda3cfacfbe6800dc0ec9b418f4bc51f579a9d0dca8b2842b17d97c3e046667e539ac67f72a57 SHA512 a7f04de21cd2eea933d7bdddaa548c92ed9a96d4f910d0aebd2ea9ddb7fe75de5f142df7aa4f7afc23b6877a20e68d3376db2e801e2a258e74b3f0ad674630fd
+DIST async-io-2.3.4.crate 49145 BLAKE2B 0530cfcd440e09f0132d2f078b9dbece4a0ed6c1eae668072d29042f41c2855c06a28a9a5420778f9b35150aafc3f0833789091f4779663cb838d44b07feb114 SHA512 30ff1355bcf0d93857604b93d22532040cf50195b6337bbab2cc734e8b81c485a4ac1e575c7c00495519afd0cf406cde9e49f044b183f29ce7b9a1f44edb2760
+DIST async-lock-2.8.0.crate 29944 BLAKE2B ebb35437caf6bc8db154b21fd17bbe1973490fec06cd34e7385d9028440b0960407d674beaa707a01becb227ef1107686165953658f490902e13d0732a4e80b4 SHA512 f48732dd8e5de0228f56780adb87e4d9870496ddbfe4cc7c6aace8d4cd7198627a05ff0358fb33ed57480c7ac886b57253fc73b2bbcd3e8cfe65624b51847ae1
+DIST async-lock-3.3.0.crate 33286 BLAKE2B 93e66c16a6b1cb759378e198927d2df8ff9f7839a2bcda49d8e013ec7b9b175bb4199864bff585282a471cab6d4f88b70141636413dbcaa7b0453d35f08a94d6 SHA512 0f9e0940e610744fa97c6d2ece9220a2ad91f09155eda66703c2aaf4959f85c17f2cb55ef5fdf29013d4dcd84f8cdb6b16e8692ec7724744b57bf11a86f22f5c
+DIST async-lock-3.4.0.crate 34446 BLAKE2B e113033a86101bd93543d287379ba354b4bd61ce87786719f05f8a990c177a885eb50a19eb71fcd5cafa01308cb45b7872be65cd7e975cde03b0555a691a4bd7 SHA512 83731067a3302d3266848b0f65ea6564dad60188472c80e78a7d4cd93804f830332aa01b404b60a8f91cc1c6c7170020ebdfe4b5bae14fef6d3bddcc5f1ed9a5
+DIST async-process-1.8.1.crate 22758 BLAKE2B ec395b0b2041c44a8d7b15433447d044d53944a71bd4912e052f59eea1dc7cc5b1555aede4778c773f6241cdc27cab058499143fa65f23348b43549e91beab5c SHA512 ce0dbcd0f893d93ed83915d7ed9661c0d5ef867115c051df2a298cd07e531a2b0f63fe58cbcd25820cd810d81759a6f467635201659d34994c04edfba8a8187c
+DIST async-recursion-1.1.1.crate 14874 BLAKE2B 6260dffdfa9fe00cc1a63c8cb103a3f210611627bbc75c2658e7cd732c504791c6577d7033af3c5afa875f90cb370b7f216979e0bdb62dab4acd61786cb5239e SHA512 e3acd07a35be546ead68c7792963c7bf1876b3e5d6a20c2be73d2f030d26d68e2a318999937d4fe253e39d8254e12e42c66314f40a3b230c5d258f34dc0d9027
+DIST async-signal-0.2.10.crate 16970 BLAKE2B 4364a566ca828387f4e1d7689b1ec7d6327bf35a56eacff013f81ec6f438d9ba02a59a8a5c457f1806dbefa23649ee289a8d5ccc7257e2c54f99de45cc4e35d6 SHA512 10d58c9aa3ef6ea4bddd4fa86afd342c6d5097764736294b7fa3b26596301f98827172cc9ed9bdecf8dcb313d2fa0222fb6aaae04f7ffd73ce89cd4b0374ba8b
+DIST async-signal-0.2.6.crate 16696 BLAKE2B ddfc789706ab39dac25436db39fe73c7e35504a8ae18f4ce9e75515d363c3cce1f4170315210ff172ba138a7241a7dee56d5aae854af69ebdbf3740e3534bb17 SHA512 a65ca9f77f9fa8251b84a5856fbd9856b632cba3e4a2276fbc680b16bbe2efb7e1278e6d4e33f2fcc1bfa43146deed43774080336d70101778389f9737d2275e
+DIST async-task-4.7.0.crate 38906 BLAKE2B 6dc02149a64f6ff8d605e74fb7db4fd0e48e6f0b57b0aef27959a7c654f25cfd1f76a403541ad8abf948a2a15bbefacf30c9f5145e2ce276222c53c62e0b30af SHA512 9267434c8785869dd281346adfa2ed79e55e97c6a889db3be8e05597420331596cc9d87547cb1305b172e434359c2d4dac6da6453cdb4e1f1dd4fbc989ee0a3d
+DIST async-task-4.7.1.crate 38077 BLAKE2B 200f3c2eff92afeffb34404bd9b02af39226024d309137c3835342ab6631c09f14f47abc5d25d77e73cbd133274e731fc88e7e94d8456f690b0f1056bae8dd95 SHA512 8495436d0739a2ce83b372ae13ff24ca1487c92e032948d5830af19c3ba411d7cd004634fa10bc2f748f8a82de27c12cbfacaac92cd0012e1fae024eca9e78ca
+DIST async-trait-0.1.80.crate 28775 BLAKE2B d95384a8828c9273e0f295d3c3826b3a8716cd0c4ab39bdb43d65ec57fe886f7c5926c1666a76ca25b1536eedef61b0d92c78ff9c8a52a0515900360b66b0f13 SHA512 3e92bc8d38feea49ebb5011303e55853bbbf5d0fb7c4f6ed6aa471b9000a2a0ea5475619f98831641e8ee484beaa6fd8880770a96b8a5a7df26e392c1b4b3a19
+DIST async-trait-0.1.83.crate 29054 BLAKE2B 4991f79abd8b9260b9541e754c30d3e0731ff786fcf65cc3f3eb75a5fcedcb37be147222778e1a0fa6c68d8fb872144b2b55b43cf6f8f4de371f24175cef405d SHA512 15969eafbdbe51e80433b53196962293daed2a70d3d9bac91c58e5e7359f60fc99ef519ceb1fd54e34d627c94f821329474a602f25f85179318d10c3147b5649
+DIST atomic-waker-1.1.2.crate 12422 BLAKE2B fc6632f3c9d719b1d24a1c8e05947d94028909d1c629b80576e176e567636dd4cca699c7e91cae2df63541da574146b3ce766374e93f0ee429bb5bc89a4d3cae SHA512 e07e58db7955791259d0ec00fc4d53318aefb4506e062914819c4220c6dc75fa11a7af0289b4653aa1f9041eb975a025635190de68b4800a0e91e33cdb0ba11c
+DIST autocfg-1.2.0.crate 14808 BLAKE2B 122327d6ffd32e08dc9fbdb4dcf69128b19d56280f9d934311b946741003b40571cdd1f3ef54b2be02c8dc505aea11c962b244d33a92206bf4ee8f6b2b9da432 SHA512 66cbfd13e33b36284cf4c74c8d654f93adcc45893d127d9aaa4c1d183e47336096e72d74e7c17dd481fb7a98931ab6cfec7e4d4165cfb491861d4e3ffe2416fc
+DIST autocfg-1.4.0.crate 17712 BLAKE2B 7f7300439899be03d001dd32b7e797bc4b9a58103081b6f7353c4b5897813cedf870b3fb1fa25d320a75326b334b44d8287e8603de34fc560d0b567143915cc6 SHA512 3b5e7c30bc73e105e4bfcab584c24fc4016db41fac9c356c6649fd841051704bbe8848e09546eb50d7c1f18ea8ce1cb72fbc268a620d5c609b3472114b5be73c
+DIST backtrace-0.3.71.crate 86553 BLAKE2B 15ed93574fb9e8e28d5ad901bb1f94013b5fec7a79aa96d17f13f6f11a02d29a274ec14ce51a9f515574839aa41232e5aaf6e6fa3ad9c0483591055bd0a78c8a SHA512 5d9307757349e860fb4cab7e9ba1c9d0f1faf49ebcd935ba879b85fed2a9812786c7458abb59a742842a0796fc29ce9921cf575792402486ecdbd9a2568cdd89
+DIST backtrace-0.3.74.crate 88516 BLAKE2B 594b537f3860560bc790d04d72a91ea25bbf5f2494b9c43377129a8021c02d9c16471a223e518889775a816c45513b14bf097c453846b62302a58b59753a5fcb SHA512 00cb2be0626f0bf6ec8b8f525bb129d3ac74c386c5e46ee0f343edb78c863222521f8132876057a5a1facacf40792dea51f2f20e986b35f3a85bca3dcf5c1520
+DIST bitflags-1.3.2.crate 23021 BLAKE2B eb990bb27b2bdeb66fd7212ce582cb36e1c616debbac85df642d0c82b25439e6bf9b1e811fac76b59e58ea3c1bbea6170d03a61e8f9a395e4334a0e2e2987eda SHA512 3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62
+DIST bitflags-2.5.0.crate 43821 BLAKE2B 2d2a78b0a19dcb39580e6f73ed6c468b0626043010b34661084944c83561fe49db24bee1ab57fd692d57617be6506d529e095aea27b753a77e26d0b1ebf7ed78 SHA512 75d7a89e53e5e7582591932bc430e6a1db7ed0f914ded6dbcf957125be52975598df7fee14ef816f66544432ef0505f0a081f3794d17138ec429e283fe14fcf9
+DIST bitflags-2.6.0.crate 45357 BLAKE2B 3a368bd2eb58c095b7b4a46680cc2d90a28e24b2e37c854bbf8647c861c4b8fb37eca827599673c5c7df763048149dd82123d1ede1f8a0e58a6bc23c8250f7e6 SHA512 f9bb3c48931ed7e7e05ec6d13305af5da6b6c18861ff307d7dc17c658f63972c87b70b0527287b3625c8592befc207cfe15550654995faf3862bb12a6d95bacf
+DIST block-buffer-0.10.4.crate 10538 BLAKE2B d819c4f9c4be85868e8b105fb7e479d2e58d3ed85c3339bd677a3e111f85cb1ff624a54d7802ab79a6e1d9221115f66388568340480fe83eae1cb448f19f5b11 SHA512 b7d436d8e627e16e6ddc300ee8f706a6cef28ff6f09eff848eedee46f84bdcd03601303c92ab8996042e55922866a59259948177c0a4496eed723523e77f6fdb
+DIST blocking-1.5.1.crate 17277 BLAKE2B 0eb9ca486e2eaa790b2b74bb32208e5a7df2053b045f5928c78f9b461c964cb8d38737c1a83cecd8f42495b7101a2378883533dd747f2ffac6744551ec164f4c SHA512 b12916db3975a1aefc36fc2a8824a89f5c0eafd83d83e458d1b6b35ddc3acfa92374cf0b5cd82825eec0182bb4ca97b048edf3b8a80cbbe0daa1c07875131ce9
+DIST blocking-1.6.1.crate 17788 BLAKE2B d07246809d8b80f1fdbdc678b2877f349b748f2dd0f8543e91fde4aec7aea0b45e145a44f07cdbf26934d20269af01844e1cf7d9dd8b9588d129da7f929d9c95 SHA512 1879bf31c18d5cc4653f794dd4109769ae32071564d3a0d63896162fe160bb5ed3d7d8de59ab34363f8192871122099bb8564ffa93de5a5b75ffd93c0d424ed6
+DIST byteorder-1.5.0.crate 23288 BLAKE2B 7f85a7948406844070a2c8202e0bd52f73b3dfc7c666a97046128044eb9352195afb80e2bf894c0742ad109e4473339de1365d09591de70dfec6c8c02a8e1453 SHA512 96caf981177f6ded9f27f025922cb94eb0cd9de5303bd91680099912d922092e77b7361efa70011e84f1595e443193e4f1b354443b9980c123f6ae573b236f7f
+DIST bytes-1.6.0.crate 60605 BLAKE2B 3e4cd094443969c6062b51917ad9df314b61ec9ddcb0336cf2621d8966c568d5b1fdbf16b11b5e2fab01b43ea76f6609f753eb5c2380a5e4aa8fb6e807a2ff5d SHA512 6507bc4274204d0a19b6a95c3284c52245c71cbf5f2dfb5cd372193d989e49869ec557c0c4e449e96ed4e3028c90606dfb0dcdc1d72bb234a36bc5f344c0a7a8
+DIST bytes-1.8.0.crate 64824 BLAKE2B 9af490b43146b04704e8bf0f7df1f251d7db414b68aa614d47daebcb374a7e18908192cf0a2ecc80f40e70379395b88f60f85fa80f66e3be5661752c4ac560f2 SHA512 a721724e5cbfc73b79102a9c4a00fc9da520417819ca5c82b798c8cfb45af3d77b33f7035ad33d6187399c613cc2e83644236ac772aec934f521f87d4680059a
+DIST cc-1.0.95.crate 76485 BLAKE2B fb86d2c49e9ee73f1a7f9268274a879260b13adafa49c8bd4bcd4acb77861b7b65c5cdda988877e1ad2d4a4eee52308ddc29b545a07cf90cdcf10268ce639986 SHA512 7e19d1c2271a094311db96edc6faa6576366070dc2e77a666ce43016c367d5a94e832724b95b170650bdb16998699699e45d3ac2cd0eda6655c58c1e141d40d1
+DIST cc-1.1.31.crate 84637 BLAKE2B 80b95666f87f80f20efc53aacb132db32900132a58995411e95fdb043e65467ac3c84ac905d13206524d9666563486ab594a09df1fe86035ec3e5542f78a6f5e SHA512 fbc42db9e908d69fe2dac18605e057f3187ccca067ee0e9f0c271b6b9dd213f0bce1a1e32f073bc012d2ea756878929f506775076d453593a14accc5f9a159ea
+DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff
+DIST clap-4.5.20.crate 56376 BLAKE2B 8efa9c3e171ef38c98a25c526f528629e7e72850c6ec27e7e89a212403ee90d7d005b00750769e4335423ecec1d86abb35c19b0bf7f2c063bc7c6a8bd59d6804 SHA512 e432a118a2ec15b273a404c3cb75bbe579b11034ba55def1823d4670c6553e3d8611074a24f50a0f4adc8bda184213b06106c44c68a19d267342c53e345351d4
+DIST clap-4.5.4.crate 55401 BLAKE2B e9ece2eee6be16c366888f6140080c43a182aa758a971ab2f60fa5c8f5e00460c3e6ae6bface1f36445306265ce13d8145ac24cef833b68b2b2c32c13a7a4a00 SHA512 c1e88968a86598a6541cd8f8144909872fe71fc707dc5327293a71425f6ff9d4957491f93c36326a9f615c1cce1a453cc85740ff18e1ca571e91bf8f7a6ad7c0
+DIST clap_builder-4.5.2.crate 163566 BLAKE2B 5eb81df416f3da0bb7e53c59ef4e914f03e2bb0563bb3707fbf70215f249aa523e3f5ef2205d0a8e25c23db6c6d0d344181c1c771566453505c769c55b355374 SHA512 af7eb8326a980cf461442a4dd6d224e61ae31a2fe4a45b34210a2c1f747eed49e00b6254699e82f986f441667f290a5de747b5e9d9d0360ed049504343385864
+DIST clap_builder-4.5.20.crate 163812 BLAKE2B 689110f2e4f46e8c4c779b6c39cb5f5758c3a32ea5bbfa1faaa6642da7d650cac0827a3e5b503c5054a85e0e7dbf04e7c53d65991a45f3be90c75070cc9c200a SHA512 e914c8b6592f9d230b4f4290cf4b4d73d0160c12a1fa3976c74bad21ff16da532d6af792f0a33fa472166f1cd551291b5d1d71fe8b359040040418694ec52000
+DIST clap_derive-4.5.18.crate 30131 BLAKE2B ff962e52d8d8afcc9639365e27753c6c6943fd809ef89d9e555e8be5b2f13efa650bf1f9ae451f4c127c1529a0af1d892c3b02153b46deb912029b45983e01cb SHA512 035bb918bc7e9badd59341560f23e3a8a2e7cf945b6d8183f74052c4edfcbecf07c9ea6fce0ceef0b84c89a99d62b11760af39398897e4ee7dad0170a96cfefa
+DIST clap_derive-4.5.4.crate 29159 BLAKE2B 6f7087d553102f24c9de37e1ba85c0d540ea42d9df9af26b5234ccde23175180efe21df93513df49f6ba83e46cc85cedcead29c902e426c39b25086c9f79a51c SHA512 670411136c819577c0129c6fcf5a8216cac82a47ae11ce3cd97cffd038644e06c5a21f7a69948628f01fb77f1e656678ffbfe441385866fdf90d247bda036c4d
+DIST clap_lex-0.7.0.crate 11915 BLAKE2B 03287f02067f6cb33bb3889e8032b0848e9a9cc17446eb0e2767768cf6ea8c579a7455d33c8af735fb8d0c16095b19f991a5e2528dee3a7628d68c16f9307fa4 SHA512 638feb2e4571677dbe15ef0423866d2f0df309723e5ad65ddeaff7fd5e2e83adcb973a32d52a5f3924ea88fcff865e956b7d30dcd569df0412ef47848af14036
+DIST clap_lex-0.7.2.crate 12805 BLAKE2B 952bf3f3885ae7bedd0e8add236590da5fce72a7ccd88ebda063410aef337ce7ccdb5e5e929cb870bc993891610edc0197150a3aa82a62fadc4bbfd96324fcdf SHA512 a8726397e5372fca3389748efdfdbd016b6baedad5b4bd95f33e4e820d4f40e0b94c88b1918ded3678aecf23911028e2261837e73d58ba7fd6f091eb47267380
+DIST colorchoice-1.0.0.crate 6857 BLAKE2B a0818be1299717461ffc1bcfb6fc53a0b3b645aa8c45fb72e045cf2d876fa207948610e58d6a837aad24838ea9616e80b0558ca3eae03fdf9bc4c03a8e5ba52f SHA512 53363f2889cd8e8a3b3ed10c48356896c0daa72f3c12c9c7804707ab0dbc07c0e34ef52fa4f0fb1647311ce5913168c1bf62c2407ff86a33f765a9e6fccad551
+DIST colorchoice-1.0.2.crate 7924 BLAKE2B a4027d5f870b4d9a718ac3f9d89ce04e2ed38406658c4a55ffaf39ed0cb1ce7e1c691eb56c66596b519ca82309e8ec7eebac65e69394cdd277f44f9b6280d560 SHA512 f34d5f66f84e90f473b6b9a62a61a59575e712d3e9b140324683f80af42d40c1d079701aa2ed651d0dd95a5ac8838e1f6f6c034e2adef79509d32357b8093117
+DIST concat-in-place-1.1.0.crate 6803 BLAKE2B c3d34c183c2f530391405f7086e95ce8d68ace7f0ef277ba8c3cc25f66ac111d197b543eb202e06a7d670ef9bc82612191556f0afa1069c83f3baa6305f38c95 SHA512 28cca029f7ea514309ef2e2bbc0ebcd425ce46e71d1382875c590d533b3488b529385dc46085f7908c26d63ac5cbddf5f77a2cb0ade5337f8117d4f2b9b51221
+DIST concurrent-queue-2.4.0.crate 20244 BLAKE2B b30b97eeaabf0205bbd8f4eddcc57e59b6863f18969731be66b134cdc5bcac9eb543493c54b17bb394b6e227e808f016e4f3c1da2fd6b40269b9b24a5c433f7f SHA512 5821bb396a73692e5b033d8406c2996bc4318cebf8807e596e441a2bdc28715fc6bb8eb29b575ea318f84b748ce47341a8d23f5c4de65660f86056e99b6a8b78
+DIST concurrent-queue-2.5.0.crate 22654 BLAKE2B b490e76804e45d6a7af6bb4ec074fb370d9ec7cd67c7ecfb55d5ed53b9b437c174e678add915303559e902ac81c8751dccb2c5ef0543d5961713372fd2b08d3c SHA512 235704f9161dfac60d2a6d2cf96425e39c097dcde2f005187c1f044704eec66d8303d59352cd414a81a3ed0eed60421054b0070a9b8f69065a79a2519e913e5a
+DIST cpufeatures-0.2.12.crate 12837 BLAKE2B 5b518c58c548d9116f94cefc2214fe2faf87c3aaf3fffbb0bf4085f75372cf7fc5144bc3f827101a3a14a51363d06d8075db94ff5ed853ab2ccffaf597728093 SHA512 52742595702fc3371d4126fb355f3d7a6da514a94e43170f1db041cc6c560027f92115eab7846131dba1018ca5c72003ae36f945c1de88d57a0e7f66331623c6
+DIST cpufeatures-0.2.14.crate 13165 BLAKE2B 45521d1a4bf2ddc03c6cdb9ceacb900806a03748fd122dd4431f6927d06cbf8608f9830e312b5728dd55b5084476280669129ea80477432fd04fdd68a0e50fb0 SHA512 402c0d6497c65882415841b9eb5953b1dcc1cb35b9fb4512801f3d0e2a056ca95bd32fdf70b6e65a18b048d7df8892c95fef1de975b56b63cfe45460783d5867
+DIST crossbeam-utils-0.8.19.crate 42328 BLAKE2B b2846f569555818fe7a3ef4aa29f68c638f933ee0251713c2c92624bee5f8013def5527027022963f572815991abb98d5e68d0fa00f478b2762133f84ffc84c0 SHA512 6e742fbb0d2a6371db87e81f8ac583259530a288237d0e8347394581c60004703a822318ec945936c410bb44001b115d8d986bb264e5b2d8091bb63a8edd93a9
+DIST crossbeam-utils-0.8.20.crate 42487 BLAKE2B b50da06721cfbfff07825574feada8a28d3814edb218434288683eec31bddabe2ffbf7e5ef1281ee14a8a77c56db3b66f3c5ceabaea9c72317c1bd2cecda0c26 SHA512 7175eadf9fa7c526fa11ff87e40ff203f0e7a4bcec15cb972f924f3c7ff7cc20b6e2e8dbbc1ede142a0207cd2baa4f446deb25d825d28a54cbd25c263701bfaa
+DIST crypto-common-0.1.6.crate 8760 BLAKE2B f2422bfb89c15d47a8f91c8f6695e05eb56990a922e3cdf3d426044736f9932324c0d899a151a6df4d6683e6a6b21659c657d3988734014c02cd854bb4b924e7 SHA512 471dbc43f517089d2cfe0868e29510c6ca579875b3bb5d013c70796db969b609b6c4bb35c9a07b9a2917012dc5708b717d48e317a20038adbe7e7039bf3ada6f
+DIST darling-0.20.10.crate 32031 BLAKE2B 038c2a4d919a8e9ff6eff5f83911b40cf4e918ac27c90f313b6b9131c41770f83cc3901973fea1c6fea2886a8360f3c5cf73b807d14e579b8b8e87f15e3bc6dc SHA512 7a14eebc20e48fd39ddf7b8376dc937a04f561d723aba864432cabd5ab46eb189706b43e5121a7f4fb0d68dbfd044353875bb479d4bd5cd96b76e3571733ce55
+DIST darling-0.20.8.crate 31234 BLAKE2B 13e8ec124715f743486d740241273fa5ff046b5ede86c39ad5413b3e767166dd90e7ba7344a69c1e14991f0572f7ffa24b081ef54236712c5286f211fcfbafd2 SHA512 2b4cf37cf7cce9af8e93f576dcf36b539816e1ee7b8881b5b8480c45e038c97ca2d3a80c54e243d7c6e1ae23782947efaf0d67a37c0d4dc66301c8a86ce0fcc3
+DIST darling_core-0.20.10.crate 65015 BLAKE2B a94adcc6092a7a69728725ec4bf4cb7c163bc3fe0890f272bba9963c256697bbe1ad964d58a975c80742019c59d4e1b3e56e624f938576996e216d2f99e21f2d SHA512 2b971156b8c1433dd0ddb2213ee522e2fe9968a62889285d1457b5e733daa70a09c21bca9b8573d9c742026b4c06f4dd2025a6a196ec0b08b25a78d8737dff6d
+DIST darling_core-0.20.8.crate 64442 BLAKE2B bf1844eba6bac260104e2ef310721d3aae7ff222d99b01b9bb66e3c71ab700095af7dd5b3a77043d6751d94af131f02f23bd321fe9d4a7066f93d1fb7c0c605b SHA512 6f2d047758541355b81e43273cd1eb8865624096c951643e6ce777d716e17256528c47fe012f33eeb1f63883ca08f532b1ca52f43394dff82fd1bbf323763751
+DIST darling_macro-0.20.10.crate 1874 BLAKE2B 29cbdc6bd63e4eb0731c8f8f0a50cfcae9a88f116f8cfc0068e5d3cddc20b42b7f0f20f128ffa0f7bcb8d72f0188b04b3838b8327fa6f3ab45de4cf5c3bbf317 SHA512 565b8d535248d9d88b49a58e2a210ecc70f1cd39bfaf029ac6576a9b2eac70a6b18b4930aeca746d76d53b745c6aa82172bb341c4844b3757fc7978732fc2f52
+DIST darling_macro-0.20.8.crate 1856 BLAKE2B d7087fa67033c897aae582e5f4d3126e06e024b7db203de7e7513308af7a0ff6ef0584a150c6f30ce434ba6ce4cc2a438f89f024c9d6338198aba3bd15cdd116 SHA512 97d18bb22b79dd95dc5ab23ea7226f9fd2d6e418b7ce9aecd4d43b7a15b37cb91e509607b89eb3a914a5d3dc562b2a292d1343f87f594ab32d41fb583d7cbdc0
+DIST derivative-2.2.0.crate 48076 BLAKE2B 56d27e27493c3b818ad45703efda607a0a0d9a48b0d43785b6a013443b8b964b67bb5b5284d242358415c5fb81b86b02079ee7c0595ec07bc658240eb114b887 SHA512 3c65ecdabd2dc202be3d83b06f96b6f68504fe542ede7e2285093c6d360a33ec76a3787c436c6e5ff8f59d430436a4b8ce2f908cf7b2b08cd8b0045de4e5d1da
+DIST derive_setters-0.1.6.crate 6462 BLAKE2B 68ab4acc60f4396642f840e57db93a360b999d2a298a90eaa7c56d6367f582ceeab67a5a278331b1f4c1b6534eb8d715171a5ba35cf1ccd59ec8817d12b4657f SHA512 c16e8f4c1eb5f846b3d22b0b49edd40c900464df8409356bc2897572e448a14f37edb71a14d68b45c6b904882c05457199078e42bfca5752b9edf6e600b98c30
+DIST digest-0.10.7.crate 19557 BLAKE2B 61e69d78cb8d6850ae26ad7ff2d52dd6dce820d8c621230def11cc0e8aa6d883a6e1b25340fb45748db52a8ccf3c8d36a8aa0c8cdf4d4eeb4e3f870d86abe09a SHA512 0dd8c012468ab9011b89413ea4d3647d95b1f683b020a0e6274c95ed5148638b56fef19cd9044c837ad53715b582b88eed277fe96e917c27c5d7abdbf7c3794c
+DIST enumflags2-0.7.10.crate 16622 BLAKE2B 5130fc27294e25ff3fca4bfae3895c79ef3f78d20c64378854375ef859eba0e0b00dc6b2e662129bc41997751537c40e058674f43323e11d463f2e8be34ef593 SHA512 03baa542e83b15d0e2e36205a0ea7a6694bd959b315918302324d50ecf30efcd915af79441c9c8c15670c16776442d5fdce51080fa7404662e2756607fee1668
+DIST enumflags2-0.7.9.crate 16555 BLAKE2B fc9d888285be03c9b47c6f2192467361bd4e67d41053a046508d0d431ac15b8cba69c265123a5403cdeac213d6c3ace8a94130267bd891e576b6d4cd34ffb082 SHA512 3899b6af180e239673d10cef2b02c848c79325f50dc40ce1ed07d00775d157679f1aee83b3fb79b8e432419810309d3ffd1bdde8c866aff723c2a3cc9d4c735b
+DIST enumflags2_derive-0.7.10.crate 8104 BLAKE2B 7332ce1236a62a02c3441192e1bb9ec3944dbb7e74e91bec0f488f5b7c382c3879196b1608bebbe04015cfc2a9ed0bb5a399f889ef94b43176d28df8f1c16598 SHA512 3dad49b91c9724504121ed1b1efe7167fcb61c956d7925523e1edef14bbd92187d82e60dcebc8ac0c22d50c801ab2868460b8b3e298f31a730a7000f80080509
+DIST enumflags2_derive-0.7.9.crate 7901 BLAKE2B e71ecdabe6c4e5ff7e01b1a820da948b000d614fb9ca6dd53c2a6dee215269d392a1e15c724ded3caae3b08dfdf796e1f61e04fc4a887956eeed8666fbf25868 SHA512 4bb89eba5b22cef199b19cd0d92605b5a11ec3738002b4fc2426c6aefbe6017f8b7156b3ac83fa7ecbb5abe54643b3456a8700ec831cf1dc27a518e621446be0
+DIST env_filter-0.1.3.crate 15191 BLAKE2B 95fa27602c10e819ef09b8f4935dcc3204104f7c5a0227e5fd33cc51fd77f70cdab3d822670d216321f263643d1f5220f5849002ad857925d4170b1b56cd3fd7 SHA512 94db29f1639636655e05ab02611cf14d5c2c8778be6eddddf0b6b8c21f364a71909a2ecc3acf3f4062d5d3c79a6316e9ef30b2fe042f617108af8431e198d344
+DIST env_logger-0.11.7.crate 31842 BLAKE2B 2f40855eea20ad6c7ac1fa4fa539637356c2d56b4a45f0aa2b7c26d9b3158f554d0227a6be9d3b6f566fb42789d4f7f216ce6fd0ce23401a2e8f8fdc3ceed591 SHA512 4fab31be7d6eb07d180e8074e0d191a4827ea2b977f799d944c26cd5d1ab9c55367d135965cffde0e069c0e0f906a3ed9ad55e38d3b5843f1cc1193b05f9400f
+DIST equivalent-1.0.1.crate 6615 BLAKE2B 302d78069d9df05e78b53f0488a9e4eb98fa2bc1e21893dc8a0acf2234347ba7c4df4b9d6b380ae77d8ffb1074b9c790460fe2dae47318aa1c4fe4208244540a SHA512 b2bc60e804c1b02c461dcefcfd60fc37145af710d183ebe65f9a4d63f2b2072d23193f98dc550a9213c7fdc6a2a837af23b04a89294ebbb681a4aaf5d5031140
+DIST errno-0.3.8.crate 10645 BLAKE2B 4a7af10845f11b3d8f177a75a692be468e8ef0ee53fb84a4d212335f1499456b6739a59af260894b5c3853d3bf21ef3490d1e3a613305561203ca334a636c3b3 SHA512 29753c421c6f929760cd7565f8171696e4f70e677654a7507253f4fc495edbcf214ace27be46bdfe5c1a0d782f4b688f591476e56f4a1096471cb353c643328d
+DIST errno-0.3.9.crate 10690 BLAKE2B 8deb19cf0c830ff2adebb733ab961558cb4463f256604f9c76d5c5952f34a79b70dce47e28f68f459977ef34d4821ab5d0f7e79a7a110693700f80b49ba56651 SHA512 777fbac5730d420d58275ef63b7579997d8e6c72106d483ee1e3b1f1ce3977f1f66c56870a05acaa4cfacacb820eaf963e9c763748759cff3668fa2e6f89f04a
+DIST event-listener-2.5.3.crate 15392 BLAKE2B c56ed5eafa64014141e869dcf952e86f755eb35ed1722f8139260cb502ba226351ed1bea301618e94c9ca7f3309747057eb5f7d7986cfcdb7f6b79d13d52b439 SHA512 ddd67c1139ffe2aba95d763b73db0e2a9985dd2e57cf8f72030047d53d46d833df4b4192730cf0af4e060ce52e4f2df23aab6509abb94a6cd02e0d8cc3559d22
+DIST event-listener-3.1.0.crate 38793 BLAKE2B b26a13ca1172531145e8ae1e7990beb8719b99828d38ba3291b80d0bec59faba38b754debe3f64950f587304986ca9bc3c8edc1ea1d4323f094306943379c046 SHA512 e341cb624bfbbf0c58ae177e6a0bf462a7bbccdfff839f04051b7bc6338c6c504f3c6593e69f5cdad3592202e11979fa0b9986794272856b746ffdcfc7fb3154
+DIST event-listener-4.0.3.crate 39784 BLAKE2B 2924aa196726f3a6404536dbf494a52d266014b2097ea1f4a42e0f5d54bc2d14d6722deb4e40f1b1fb539ec12af7348275a75a9fe3e619a7f6a6a9156e0d30ac SHA512 2ed4f1624fde0643fc8eaf3275dfe77c15f936e1eeaae43d205f68d90e2a8dd3eee3b39e953a221cd19a88e8b947eabd5b8477dabaf8f30de328c0c13d132d7b
+DIST event-listener-5.3.0.crate 43084 BLAKE2B 0876bf059b3d4798cf4a273f784a4d4461c933e6982805b44e997ae244a5996566acff08ccba2fae6bad6ba2b536fe90f554943d1f735f5638a37bcf0a74139e SHA512 b31b6ef4de7c062900845bd7d0e940045b641f7b02898eba2fcf42ac98241a696777e4e1fa740aa52fb80454b5adcff4e1511705d9a593c882f9ccd13437bc8d
+DIST event-listener-5.3.1.crate 42576 BLAKE2B dfd8020527c06adae338e9bcf19076e70ae745facd7b49e8d6604e8508436b70b48fb1f4479214998f288055447186d4ef4969630af90e301103bc5faf6492e5 SHA512 98b7219a3959d6225ee5fb68e8b9d284ab03334d895f52a71f673e59cabab1d06a0abb9eab905e8d38d5f9589725c7c598355ae3c909044a23bc5830b761f5c0
+DIST event-listener-strategy-0.4.0.crate 10225 BLAKE2B cedf057e73b7d26ce691c3a5523c7492ba6fea65393ba20ca80ed091d3c4b392c85caf5a526647886547cca22bd703b0a01aaa8d018b07731ef909bc3281243a SHA512 02e8253ce8b680d9df72b786115d8894147483c5b44d530adb600718213424b2d87c899517ddacefe73738ec9c8904d042341d4aab8076fd19876e89972061e9
+DIST event-listener-strategy-0.5.1.crate 10656 BLAKE2B d73df359befc7b8e547781e43b41fb3f7c72eb5bf58e6d672172d5b0449f4c82a50adf85966f6c741bc37cfb5a8e5d4d9ac6702ce100e738fcfdcdde95228e89 SHA512 7d3b98283e1b52610a2374b4174b4015d68aaf12a6e38e4c88fefe58667a64d6602bdc13e91e671c0526cec36125b2e0273fc742ae5e11f74cd68f465c6f3393
+DIST event-listener-strategy-0.5.2.crate 10697 BLAKE2B f49faa8a2cda551b65e29b9dc98e4e55dabff7f2b330097bf5f6a5a5927804a99cb699d1f693db9c7cbd92ecb44f6c1b51be2b86810d3e3fbfd5eebcfad1a241 SHA512 7b3759d07c7936b53351172e38623658cbe642f079426c99e7f9187ba1d7f8cbbe7530c056cc760909cda4e70281a50577caa41426164b4c8d6c3f4cbddb2626
+DIST fastrand-1.9.0.crate 11910 BLAKE2B 570c66ec1d4ace08b9790299759e3b6f0394aca52c4ec2e02258229c198846cba7c0627807548bac3ef1f86c7e512c4bd105f1e18e35ac0ea6934f76a6838e1f SHA512 321567b5fad8552c0efc4393b1e77d1bce288b0a88c475d432f79e91b3457ee6eb5db9e4d65ac6381b9990c9916f4651b6a76250df44d51ea3e25bd8184bdc52
+DIST fastrand-2.0.2.crate 14674 BLAKE2B ea23f52d745f4fcfd4ec911d48d77c60da837f57942994b17458daac7cae38953cf679459908d68e5f393d03a90cd6eddba23d2a86c2bc11ebfeed0bb41fe4dd SHA512 3ef9c21e4928071619adbad6421165ea82feb04c26ee18893b172f9f8a510b9a2097257ae31647a907680412b68d6662eff13cb27649ed9f5e68c374619701cf
+DIST fastrand-2.1.1.crate 14983 BLAKE2B a4535b1612b103376fe64d71a393f7bfc37668c574d9122ca90a631aeb91cf0895bb030e597b79a80a4a37ea4d514c4c0836332030bb10a60bd971573a6d6ee0 SHA512 9a51185132c1c89fc31af463c664e996f431e607ce96676b8301f28ff11a99661d18025dd460e3332e373af68d20017d96481719746fc3c5de742d08d63aba3e
+DIST fern-0.6.2.crate 304626 BLAKE2B 7dbfc8a1cf0adc288732a1dcc23e30bfea6668b01e162b60e867b67b995b7eeea5399b9e9a630510e3f56c8f36b79b34913342b7c8834783ddacb2cd7b94e140 SHA512 f9c44d1387f803b567b7254d91cd942c55d30a1c3cd37786101d7d49d346bc2bbc593fa8a3b2e59711c5320c1496354e8d2f3ecf0967030ac1e5199650523fba
+DIST fnv-1.0.7.crate 11266 BLAKE2B 81da85889c91b6567e0f555e37dd915f1bd919719d1ca10c31a6861d7aec29a49ae9c1e8bc500791bf9d6b8dbb318c096d04872c5872a4b1f7d45fbd8e12842d SHA512 2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334
+DIST futures-core-0.3.30.crate 14071 BLAKE2B 76a9fa5aedd0d4ae8dd9db9639839b6b342125759c1b9f9bbf58aacb4ecca316ff1f24ff8f3c15f559ffbf974e4c2cd02a5418cb4c4d7612dac8449c8234eeb8 SHA512 3c7259ddacbe02e47a84178b75e5f13523bd0c8f8bc0b2375f7ecca60b7075695ee0a5cc4e1c1de26665cf250271173be803661e2f2f53e2a3b96380a8efe7c4
+DIST futures-core-0.3.31.crate 14318 BLAKE2B 613d16e4f18547e45ed0dd56a7b908306393e479c379ff64f358844eacb1f8d37008ffbbfe6b1a4ed184e501ee9214db149d9cca31651b7d353ab4a99c8f5ee1 SHA512 d2f4c2476c4f480f724a880ee16566fcdd545579d3cacd2f16745812eed9ac4a7a88d59d4a38b163ef466c6f6b612b9cb06308a09d52256506a8a90e358db935
+DIST futures-io-0.3.30.crate 8910 BLAKE2B c9af4290f45a9fd0839e107fbdfa4abff4f9077ff45b61054670419076f1c4508d7d560d4d86f8cd7ce146e436e531b9f5e0abfed2c4f2406c57be209cfdd498 SHA512 077acf5eab1101917b5b4b4b83347d30d533110d9a34c2de6db1411ffae0f0530f457033c5a5c14249119e89375c9f12127790b46e486dcd003a12a6fad48bc2
+DIST futures-io-0.3.31.crate 9047 BLAKE2B 667e62b50be304b68b8437d93b734a0e2433d88a3b410010ed0b04eb2bbfbc9984454c3f0a591f720c9983582c6421d7f870f0733c31337c4c518112f52aea54 SHA512 16d21388f7ca083d2c618ec140cb2c0807ca621b8c338698c367d862b99133ec9edda828f051f3f666472c929e7bf7a5cb334fcf167109c7c392c5cc60b54fdf
+DIST futures-lite-1.13.0.crate 37058 BLAKE2B e1151b6263adfc96494ced26c377eb6582c4529f1c6347c1f920623400d317f6466d11e03c1ed70dd4172c57340b13b1fb1cfceedf430e3b95879bfa120d8e59 SHA512 2c007c62294c86108eba30a850a341e8fb369892bcbacfcd4b7ca39f949bc9a20624c3bb21630706d8240e27dcc402cec542480dbae8867ff933375e4be15fef
+DIST futures-lite-2.3.0.crate 39181 BLAKE2B 0e4c510d7b640efc6ca8e8b00f4cd51b05b727ce5d25d76e317fd5aec2f515d3b1dac57e4058c323fdd0c5d125ebc4073a9ab1f2ee21aee0e5aa0f9bf2e049ac SHA512 057de40b58d5ae06104c480a0e20a0ee4a962a93af615b04a9a34cd08135359c1f49f1b61577f15277fa73e9b7a93d2a659d3203b490ca4295b88fde2316bc7f
+DIST futures-sink-0.3.30.crate 7852 BLAKE2B dc768e4ec4c9f9dfb22a20c1c977401d859072b9222e6f77978332f495cbd0f764b175a679c9d7c77028d7b56cda5e2d86188ee979c7f323187defa6a0485ce3 SHA512 1c198da8f4118d9a9ab2b597e3f7b4e1ac7094dfa547bb81f3c4148c45216ef55b309255849174a517ebddba6c874283425f1df6e56e2ba5150af091bacf46a3
+DIST futures-sink-0.3.31.crate 7958 BLAKE2B 7d42180cfe19ae42e2ff486d83ed46f3aaa4b333256d4c30c5a2ce0e0d0b05ae93516b029e6d07105b4296bf23ba29e6fcce19f0e38ecf59b53c6ec9cfe2e188 SHA512 79a57dbee5cfe98f2c003bd463d252648743f70d13e2054af072978b758c7cb8e5fb652fd2f36c760df358ad23d2893cef24ca6ae3df44def28f1d39bcf348a9
+DIST futures-task-0.3.30.crate 11126 BLAKE2B c2ded9b9b709fc10c44cfeaa72d4e7477e43331b14f3e72433b25126fef93f2812a09b4fdc3c246b7379d41d3764ba17fa87c3e9c131095864cbb5f54771a204 SHA512 c190fa0acf7ff15fa67fe172911cfae803b2a8c08168570a5518a40767d08134f147259a413ab25c45cac5dbf2f601a9753c77ab0eb2c180cad2fe48cfe3867d
+DIST futures-task-0.3.31.crate 11217 BLAKE2B 8c0e0aa0aa14bfc28e668af00a3fcc2532950ca865a9f3935717a4a3770cb60477cd8f4cd080675379315b649fbdc5fee9dce49502f0f24f44db481a24c884bf SHA512 4872fd2f24b07c626efc6fd76c01b44d56efecb9697f972d0877307b38d3ccb06277ff029df38981470ba1f8ac5f93086123ab3af44d3c49bd9c10b6c9158a81
+DIST futures-util-0.3.30.crate 159977 BLAKE2B 9012edf76336952dab02cb61db48dfc74b6cfc17c137c36372709e8d575b306a4d7c4da89328067c9482a645aceb7b44ef57deb21a0c25964a5515e738a039d0 SHA512 7faae5aa35641d858d0f5430e4a69acd4ba9037852ad73c5a890bffeed411d28820883e18bad4ca8f7b0a765f9f4c5dbeaf5d0cfaaf90c2c69846434ae091951
+DIST futures-util-0.3.31.crate 162124 BLAKE2B 69ca647a261fe24f90a4221d8629169a8dc7eff9dd1c4e07cc700a52a8609ce9b8aa3974b9b09e1ee64d0121d7bcb3efeee6fc15983347aaa0b0b23b068afc34 SHA512 429b1de584546b931b17d475aacbdb0c14824a57d960c44e615aa808e8c0f9c126473e313a7150b3de87ea91b7eebebb1041509f61b3493fee8a9cd2c75c4df3
+DIST generic-array-0.14.7.crate 15950 BLAKE2B e74c785e3127095625951da192a018281ea9976aaeb11019f9088c3f27748c5fed1ef25d577150864486dc48b5138d6892e42f99979339f711a66fc70756c82b SHA512 363a7b04e4102f9ca63d429721c1ada6272be6bf0a2e97da681faf76381f73f0e3acb86623b9ce2dae441de9fda704088391779b9769ec02b3c8c9f9f35f897d
+DIST getrandom-0.2.14.crate 37307 BLAKE2B 5904388869335ea904d950ee83ad1867a0d3f6831b7139102b53f4bb4a2c12371c9396f1f1cbcc44e3ce69a4ea316651b1674722071bfa7562385ad4b6a88c33 SHA512 6c334415e09f570e3123e3c6c6eed1727533ac6c9c4142e16ae995c237a16effe146832a891be9fdde4335bd02b454e0fdd9160f20dc02f107ad106756221658
+DIST getrandom-0.2.15.crate 37163 BLAKE2B 7d534e799a4711d01c6553b8c9422dbf01e384a850fb0f7cd76e444628f2b96d28d0f5e8dae042f8081a2bf9340f57c558be50a6f22ed5fa6b0301a15898fb35 SHA512 04789a53d3f4a84862e1e8b2113641af67e471b468de1222470d5e6cef0015232463a2cf3c3518dc2a533b3983b175a7c8922da00665bcf71c1e4e279b67e6fb
+DIST gimli-0.28.1.crate 270497 BLAKE2B 4089e0f871295d464e548610ab5f0c2fd863825416109cf58ca827e482897f00eab23b795295758f1e3af16167b52c77c91df6f707f1f445984a6c4bcd68c6ef SHA512 695e46471fc07813dc4a47744458729b097f6efbfceeb57eb3db4165654e99bebb98dde2d73230b90bb5dd7c0ca0c6e77c7c3dc6f2abf70058b830a2fb386d25
+DIST gimli-0.31.1.crate 279515 BLAKE2B c8924ce351af5b8f96ef757a189f7a9be14533c024d496c62037cd4eda790b3f6282cd3013ba82ecc83082acab1b60ea80b83e0fd5f8eeb381fd7f9df88ce0ee SHA512 b9c8c11547dc7420fe936b9f32a4f5ccf3bb68d1d9f39dedffd40d631360f6e032e719d858668826f1099b8a262e8096aa7ae1f6d7d3d7aaf47934d832715949
+DIST hashbrown-0.14.3.crate 141425 BLAKE2B 23c63a99c6c6b7a6b9b9e8bbbc7f1e342e1eb9d7582fc9eb408d3eec50c99f34502d450170bcfef4da7f2b1e743e1d1619875ec879e4753dffcb84f3c10dc3b2 SHA512 4d344e5c89ce58e04668b80ef10e4e110a3a5daf4d610c52d980577795d0e2050c7d0b151d8ba97128117665e27b92ab0300f85b88bd6e1de943c62d49249356
+DIST hashbrown-0.15.0.crate 136460 BLAKE2B a2bc34b9d2eb7ca52dad7bc59e9bbb38ff9f79925495e1645eda7c0587e86e0a3d0675f8c7f159c5a83dfb2832fee9788a7ba6914168b51c26f762e140bd05b2 SHA512 497310e0f8e256e931ae0e752f66eb3811d5d3b9254dacfe2a1227e8532dc23eac8cce7a3f0758fbe0e0fd8f08b7bb18b5f118dbbf4fdf575a31666283583111
+DIST heck-0.5.0.crate 11517 BLAKE2B 5365ec43b2239a76b33a174f1a4292ece4147f9d382a68c6c60db78fdc8bad0afb1d51a65bcb25e96675372faa4ea37c318265030b0546ba51942f7c929e1835 SHA512 f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76
+DIST hermit-abi-0.3.9.crate 16165 BLAKE2B b779f005bd4cb9ba9abe401a0a559a5bbcc44726ac37f53e9c8d1f7218389ec8b48f74d14666261bc4fba4fbe5558cfefae873c49a2312c8c8bd4010b8344064 SHA512 f3a5a51d834a6ad55480b53f7e9cdc73a512ab0cc6c246a6ab1e8bf8f9851a0c8a55982f5bba6cb57b5a03b54870e73b0bab0a79195764c308318394a3ea8045
+DIST hermit-abi-0.4.0.crate 16310 BLAKE2B efcd1dee7bcd6d185cbe0051c7bc7e2776857ffcfd2adc3fb101febd7c1bd75994b7e4a4a0a59c5b4628cc2521b4c1f043e98a0c44935d0180e7499667690ab8 SHA512 b1a21f6d54598185a8e8c29565ffc2e1bc5da57cf1c9d87ba643d23d7c23d53e8ad36ee2f5c1ec8a504334b6f98b0f17a832ff37877c7b7f9238b196f4034e6f
+DIST hex-0.4.3.crate 13299 BLAKE2B deab49bf3d97f6fd7c0a0855b50232422443b226362bc7a4a19e57c2e662fff2cb046d4c5bd7618ddd523045f3d8c78754508f862f9a8ca29ca9247da6d6ec79 SHA512 fd8ff33b68eea2d6f2c6b02a6d82a2807cbcdc209ca5a76e3e3e5d006917ee151f236b6d18e2646cc9a9674bcdda1d6ce6ee363a89cadd99bef00d0eea9989e6
+DIST hidapi-1.5.0.crate 249746 BLAKE2B c9d4e494e4addbdca2ea3a56fd3bfe72629d2cf1a21be7bd76d4dcc3207eed13add23295c9fa021b0eb2af70e683a376cee849f2a551096d20bbe524473ca1b8 SHA512 b3382ddddd038968c5429f05f88949479c3f7774c90c304d101055586ef16d5bd9c039a449e5b5c13db9e6e7ed831ae634067d9f66d77dae0b23acab4292eb9b
+DIST ident_case-1.0.1.crate 3492 BLAKE2B bc79ebeefbb7e3ed1139e3f41d8d20fb175786bb123bdb9c1a92ea70effb4a0e5e798f24b068cd66a1bf20d53eea4bf24de495b5568c2d649ea804389a1327ab SHA512 81003a43f18da5997d644319274502e2066af9f9fd1400afda7cf2986b3ae0b7355b932302723cd3bda2d46b264340434d9279dea58425bad13785698d5808a9
+DIST indexmap-2.2.6.crate 82420 BLAKE2B fac5cf6339dc3c0a40b100035a5c874cc7b2efeafeb31c51488d25156e392dc9db86a497e76eead351d2126f69d060422faa9c55d73407a0de9f5be18d234123 SHA512 53211c4a9003d751feb6dcdf1a76495764cbf32d24bbfe2be7023946622ef4f2b07a6de57109e5d24ee01892f4b2be0e0692e10cd31fd39c4ffdff4d37abe9ea
+DIST indexmap-2.6.0.crate 85204 BLAKE2B 420a3cceedab93e5023b476f9b6b93e57057238425d4095de59eb9490c2a088193873e643dcad2f739e34e5798baa9a18939424cac1afc5fc7b93ae496ba188c SHA512 c870348691f5acf97e7bff25c805e60f2e9db9e3ee7b3b939b7be45b6bcfaadee9880e6ad27adbbe2545865193655b5fa9de18487b7a1d030017b2fca48616ca
+DIST inotify-0.10.2.crate 26200 BLAKE2B 8080cace302b0e5aca8ed4188126992fed5b5b4f3624d0e5de70dfb426583428890513faae2fa32c31afbe1051aea03acb7a7f22d0720a24569f020a2a5ec940 SHA512 79692a043787daa67284f9b94892a09a2bebb12feaa5be2e1bcfa213b710af5499a4fb62b837d45793efdc19ed1eee00a014a7a620b5bfc9a594fe0571e96929
+DIST inotify-sys-0.1.5.crate 6965 BLAKE2B d70124656ce3e6f5ea3f430e8e7100d0691003161234b40542ca86c407ecaac1785f3eca98e9fd2914dababbc3f47a0855c99c9f19245d1f2cd5312739c802af SHA512 dae749f32c533b0c9f99963d97a77dcbfcacf173ec8fd7a02f275804f9925e867b4dfdf6be52c3c3c3de136d64e6e7d6b30a3bf804a01608cf974b0cc2e346da
+DIST instant-0.1.12.crate 6128 BLAKE2B 728923f757c1ee4e4a7afb90e460eed81392068961240a538e5c6468e15a0b6491f590fb5f6cc46e6d78901ca232351f65abb9f2f230d8f4983c5e58c4011902 SHA512 fae494c00111c51c840f9dd6a10febe403e27ebb933dd16633a213e9c20f2bc11adeb431c71f8a6713bf88f270a010941e15d83df294e658791934f83a5d2407
+DIST instant-0.1.13.crate 6305 BLAKE2B 83a2c479e21e789ca9795f66116ebc55481a42afb21f4c0ec0551edf07781901a28978667e92b01355b43e0e1a7ffcd3cc37b5501a7521da78f4f352e586c9fd SHA512 b7839431e8920c4c0841d0974eede75fc50f2bb7a9475664bd2c4ff6c558a10084e1c025e5be977c3364ae9112c365c0a6f480cb9b35ee4130ca2beebcf650a9
+DIST intel-pstate-1.0.1.crate 3519 BLAKE2B 17276891677b8387b2500662bf3d247d60796d2330e78f9c3925c341cb5c42375becc7da78c457642f62f709e29d7f5ba721bd2be1d1c9f5ba6b34d327b3cd1b SHA512 ac7cb4b92b3be1bd29f2e8ae3b55812ded9b7b6314daa77c9771118f7b0142591c6195e5532f6ae38e2173dacf9dd85348c601e2aa3718931c19c7fa9bd7e546
+DIST io-lifetimes-1.0.11.crate 37346 BLAKE2B 7f278b7378a8569d3552c9b6d4be06d7908e05d77cdb964267f0b621ec4975a42fb6e48fc030a75ad5865681adf32ff747943ac559ab4ad73331a6611a1b10c6 SHA512 30c6e5ce6f5beabe0d7bee4f4522884d1316cf7d9b8d093ba0f952995997be3d0f10e1e77b9c20b7fe2b65429de0d2ec89bb35e939455795205206a3154ed544
+DIST is_terminal_polyfill-1.70.1.crate 7492 BLAKE2B fa663f858ab8e5fd56202d731b572bfdd4ab0e8262100424e27360a9ffd2820182bc57d6718a305ef82d04c3798111841c0d9f9dcfe219765c0f63edb560dc1e SHA512 4730fa09401cb4e69c92b38b2b43afd74699c61f5bd7b37605efbc0c08ca7a1318d43e4a844e46e0f84f83f42432f01e33771be2b18eb5977702ab9f894837e1
+DIST itoa-1.0.11.crate 10563 BLAKE2B 94da07e0f7f2535d0b1491b3a3c64905274b315ffd35ec8e9a3e36e26cd7211733b462eefb5208963e388345f65be9694804c344a6132b2b595b0bc716c0b328 SHA512 7e22dffac34c9c9f432daef395e0ec710ed658164bc9cd9fc6445c9f984c912a10bac556214a026bcddbe27a3197b35b0c87d6709fd605062637d086b2d20311
+DIST jiff-0.2.5.crate 698600 BLAKE2B 6e27a0771954fbf5b9859d17634fde7159c9c8783a4952d92f08302962c3b2691fe4c109fb5e36d5821d3647f0608a21ab21eb3939f031ce851049ce915f4982 SHA512 e14da27355d1630dcbb1d47cde1ca3d255486d15952055702957e2fb9eb7a83ac0e05445ca4c064687347c198125b8990039f8a807d599d6a3d029b0914c9e54
+DIST jiff-static-0.2.5.crate 75874 BLAKE2B 4ae0ca85c5709dc3a1f113a28694f5fee3edd9cab32170aa1aea1edde1765bce7e6b412b385c83cdb525c173cccc7c4ba19f339c7464526d9c9af15a41f2a683 SHA512 91705e5f3cba93af2e236e443f4c50cc219d63a9de262b3d8bbb7008f3afed57ae476b36cafc303f5c0917725c7a1b7458ed9238b4c9bfd5057ee37837ed9831
+DIST libc-0.2.153.crate 740614 BLAKE2B 523a41bc8cff4ebcba0edbbe9e6a2286ec7cb3ba5e90ca5926c972b68e4b34188bc077d20c22376238c3cd91b7455898a95c505ace4ededea88cc496edb4c5a7 SHA512 3f99e3a192974fffdc053ef21e9ad5fb54b7cdbd4755df176704a95dba38047138ccab76763e89c6b565f37f98fd549fe368749f84f6d1638b3209cb07eae9b4
+DIST libc-0.2.161.crate 765389 BLAKE2B 4880efbc347e0b92faa893993f37c486a69afd1a3c741cfb9d3a2d3c87fd56e49788f8aeac17baca217f4ceee9180097386ef481f4e142942802f27983f8e6fa SHA512 264d7a872c10484b9cb19ee858c2ac44bf165297653fbc6220672bd2e0ba10913408130f21d370d2861eef529f9ecafece66515b47b4461d56e6b02f55ea2be8
+DIST linux-raw-sys-0.3.8.crate 1013776 BLAKE2B 375b29d2cc700e95d94ea8dc304cb711562952742f65c9664e33560a3da862aba74f2ad2ee66b1dface8cd5371ea9cbbc452ea953a6b6c656ade7d938b7d2ff2 SHA512 cb0e5c54870dacfa513ad05f7a84e9e90dc1a42f55685fe3e252fd25cffa4b875f1b65eaf4ad132ef0a19e6677c7763b360d71ff0060fe6ce5198f38b9956375
+DIST linux-raw-sys-0.4.13.crate 1493855 BLAKE2B 1298a038276e2424eda9873c642fb43d864b343b03b7962446122d2dbea94d58d9fb2b93e890769e6fe4092378755413ed6afba81ce56fd61e512146e44148a3 SHA512 3918da6b667a08ef8a51aa0b087129e2dc5ab101669cbba7690fc98ae2659a36861bf9410a3b87d18522a7549d43ac169b995ea192d3073f7249305a809cac62
+DIST linux-raw-sys-0.4.14.crate 1826665 BLAKE2B 804af73daf396bb20da14f831f26ce06325181de14f0c277350bd22d21789f2bdd663a964cc0e7c5cbd2e084285d02a401a6bfbb3e8a8f079c120f9488b56f99 SHA512 28149660bd975ede05624af3582d5c78f498239f5d89713c2c32f5372fc16f4ca024dec35f81ea973a2cf986098890395dbda06ac6cf4ee29df3f9a0e11eaea7
+DIST log-0.4.21.crate 43442 BLAKE2B 8429b3270794d3e2c7f7d5b58bd4fa1abb9d4807ab3a1ac980ac81c11d9544635003d8cf2e608c2c0094865459108a2879f280278e121df68d09bc1561d604ba SHA512 0becc1a06b6e7048cff6c0bb8df49a16ac4772133c00239e9e9459c0811e7715c500f440cf1a9aef8d7ad74f57434559ca9b55917f588b8e476cf36eb6d4e10b
+DIST log-0.4.22.crate 44027 BLAKE2B 831dc5092db05123bf2e909eafa708339983edece9bc8cb802f0ab418d47ddc5045a72c1b58bc7c46ffa68080eebd0fd55d6e4f5b3d5ad3b0bc6b2ea0dcaace1 SHA512 bd7baa9c8a5523fd0864a53bcde955d484cacd782412b5b02c890b89dbf62137624da3a27337a310dd8f62bcc6606925a42bbd4ca161a3b7936ea4ff96bc0d71
+DIST memchr-2.7.2.crate 96220 BLAKE2B 2399064b6db21838d4aa0b25ed0bf04940ee3820741658cc6bf62e5ade08f41320df743ff13f99b2781da7b844e18deb1cfe25fe570f0e93f98ff03ca5d442e3 SHA512 cadcb4239c7f3aaab042592c5186770a225621e32f8583052fd3dbebb4a6d9b99be28f589b39b5ca36cb2d56fb3709e7d4ba91838ebb882e28e51280c02bbc40
+DIST memchr-2.7.4.crate 96670 BLAKE2B da38114beca670467c3e1fbf4e415af6f22d52e3223715d52e181babb89b872b46511563985bcc16d7ff4e82f812c6e83ad904b0fe2501b14445119dfa8240e6 SHA512 8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2
+DIST memoffset-0.7.1.crate 8556 BLAKE2B 1ef270f1c8dba32e66cf47a1835f10c342024762c0e56953f16e82d575250028154054d4c42b1324c60f955a40fad3bbb1c5fced147c11c9a4ad62f6f0e948c3 SHA512 40ca3c4b1fb929bec75bfcde0135037f81a6c5aa80181bc7dd7bbcd9c0946288eea8d23fca95e296567ccb02155ed0f66c7c23644b5cb3e6d3932be9f9742157
+DIST memoffset-0.9.1.crate 9032 BLAKE2B 0aab55fe084134bb599c52d77c96400db40949b1013e7037747ada4fcec8dc4a124b6f3755f04b36e057eb2fb4a6bd6f07d6eebcf166f8a71405ef434d802fbf SHA512 3a236c0f481e36973b9f805e454c2efe4dd375e6b4ee406b57145136c70d5fbf4e1183d563ebf3b5fbde7363bbf5f08f0d88e507aae5bda4cc75664ecd0e33aa
+DIST miniz_oxide-0.7.2.crate 55731 BLAKE2B e3cbf5983025bee879b8a735fa2912db8975cb60f0499498a73ce4375e7d452c9ed62d4b0b6f6a4fa591aab55e5d7ff20033baa007fd6c839b9d74b31142c0b1 SHA512 2f8f09d7afdb9d78bfc80a228ded85a215fea05e577e907921f1808f84aae30ab118048d7b53295f11aeb5de70ab6cbdec892f3a2417bedf6f53a4576d095432
+DIST miniz_oxide-0.8.0.crate 56343 BLAKE2B e4abcacab4c8698d0489faca8556faa7bff53d272ea0c80e2e7843dc0f6f9229b7d5b0a17ae210344722a379853e7f14212505ee05da4e60549081cf77717c1b SHA512 044b641ce6d98d1968c1ee0906f91963f9f524d6f3fdf3059708177a759e1d498c63e595d3a3f0f9f3210c45c828b9b70274134ba078b899d7fefc2bbddbeee6
+DIST mio-0.8.11.crate 102983 BLAKE2B 913a8e0e4843b3b19cce3eeaaff0a0024eaf1bdb4784a710e54ee95b6631edbd763e37669ec7d269e45157907663dd2eb6c9279db850fa47ef4c1eee867ea24a SHA512 9a2806ea78b0637d0cf92448abcd50bc5d09bd80da0f37752c847bc98d014baae7a5cc4d929de98be6283c76d82ccab1f1467aa6ab583a4e782d97d5592b0bb1
+DIST mio-1.0.2.crate 102777 BLAKE2B 9b87abd99269c62e48c6be4fa197d2b12527b672c435d5f1f623f986c60ed391597dbde7d5b73a624a4df0eeaf9c9cedcd56cfd7ce4239757d59e67e9892c59f SHA512 77eae1170a318d4a53550dda3462ae070d25656cda51db4cb2dbcb28210802f9b7e279900e6d6eba68314a0c814c90eb4af7acc561f611535cb364f75ad4e317
+DIST nix-0.26.4.crate 279099 BLAKE2B 41debf1f21427ad6c25c6cd26b7867feb8ba46366028c4b74073307e902e526543f536fc0a66db2cdc5a52fbbf9166a6a4843aba57e5e5caada3d914286ddd60 SHA512 cc68ff8e3e8ea8635c6fd4c0a866cf42121aa3e25165666ef3b97b5b2c1d9273cba6f689e80eb812b55b5ee513390924a926d95fce45de0a74b98764dd1fa27d
+DIST numtoa-0.2.4.crate 9167 BLAKE2B 16b0e6c26879c33c952ee0122c8d2b28cd678d3d877434292203fe420f1f60d8be7ef1b9067070e449a15cb138551bf3c3b6421b629b80c201d34ba1f1e688da SHA512 d627d2ea465c81b768545a1ed1770d5a567f0cd6fb19e819717ba31d795c47296f1575c56d767a7f7535c83c65d81482cbfda8d1c8e711c209e76ab813065b4a
+DIST object-0.32.2.crate 286994 BLAKE2B b9085200fe0107ab0f8ddd5c5ac82bc681dc6266c6503e4a803ae4dbdec775ae84ca4a736754b770d858ebb058342af45d485d4c9a41f57966ca1466de40a4c5 SHA512 5d03d998f06dc592c3be141f7163bd72a0e73396f95d22ef1e0ffbfc66489bf727a6f6fb813a32739609b619b8e34a471974b2231dcfa23df8bff52007c25a96
+DIST object-0.36.5.crate 327435 BLAKE2B 1ffbb8ba57024a7273217edb1db76eff03e0689f81ba27b0aef0a622972e7f6acdbdc480384b50d603dee6c38c960fd25125a313264187aa0e429aa839198dd4 SHA512 b85375ab3660a8a0c57833c28c4dc665dc0664857e1eb3cd472a61b9ec8c16c470b16475545c2c311fc23cb3c43755967f93feac12c7bfad013cfed5f879e355
+DIST once_cell-1.19.0.crate 33046 BLAKE2B c14b374eaf4ac0f60acc2e02f7bba270a0e8e0a6978d749cd3cb0ab3eb26907e4fbea70dd5132982f90290381ed18ff8a87fd530f1415fabffac864f157ea380 SHA512 4154876afd34a699ee650d1a8a1c5ee5a25f0ebd9388b8bef2564e33629fae68f113d7507488c68abbe7ea1acf9bbc41813cbbf3ef3e464e3f3b9cc7a51d870c
+DIST once_cell-1.20.2.crate 33394 BLAKE2B 79dd394fcf1637adfef28b4159ec653c8b71d2bda0e0e36a940c04e3d87698f039dc30c97f26648ecf0d9742962f1f0a117568f7c705a8a3fc167085b0ca3e80 SHA512 bc6005bdab7a154c01e2203fb553a68695727475a9a882cf906d49c054ce886ad92cb491d380b6b9fe71a81b2fd690ce91c9a6cf8dfa8508470ac9acfc8a31c8
+DIST ordered-stream-0.2.0.crate 19077 BLAKE2B 581285d32136bb9c2134f405c5a2d67c952a36eb3613912be029f2826b847919188e1b479506b46f20e0b63d371f476b99d9e7e1ee8d47ddef7b4f48451b0e3e SHA512 99976f90637f0daedeae05d4270d33bc03fad1c06a85bcf2cd7140b149f76c7560d5e60becf05a633a62dc82f7f65900eb8f510c62aea4e630b78c45dc76d83e
+DIST parking-2.2.0.crate 9730 BLAKE2B c6da9ea4d8c0a488a64510781b025ce07f283814a09703c58e8d46c625cd74e2c55d7e28a4c09b0886fe4ab415b128bd3114f8283d4c903398e12a11d65489b6 SHA512 184a4514322279ed093a27a9bcad5fce808900a9ebbfb624216dfcb90a5483e8bcc054d82a0bba4da3809364ad1ed0a623328cf983bec3751e4503c9670a3f9a
+DIST parking-2.2.1.crate 10685 BLAKE2B 3af8020bc27ea921d6023c14f20545f70a5a5a5a216d5f97458d76d3bfc8d9de937f3c92668d31a79de85ce08ed0236d440c64ca1e4fe0a7748f412b941c052b SHA512 2e49137b59000f0467aa9ee0648d53e06cd2b8319d6ea28bf04c621b873469739a34186840b02f08d770d109cca26e161b3de3e4341dd729701885307a6a8177
+DIST pin-project-lite-0.2.14.crate 28817 BLAKE2B 8e9875967059faff399fbffff82cf8835982c46ea8df942acf50b038e3f500e04d3d8cde39da5a71ebcc38b869553f8c49830e484d1109b353247a4cfdeda89e SHA512 f90a6b9f5ab8701718f72677a4f3597c1b9f32e5fa53198b47a94696227ea37815997599abaa6058b217c5b32a94602582c6b13fdb66e2d683bc98921de95293
+DIST pin-utils-0.1.0.crate 7580 BLAKE2B 457e1287202f16d1873b24bf4f1de1828300128c4ba3131758e64f9784d36d47365f22d85493c3a85d854f0d8dbb4c6cef3a0f5b064014dc03943e58b7ba9178 SHA512 828422b8440cc82ac6b0743e0112fa7540d437aed457564999092b1462cd7672cd6b1f0201b67075431aeedd3d9c5127468a3dd028744109944f7f023c82fd70
+DIST piper-0.2.1.crate 15878 BLAKE2B bf63206c72b08a87da7ec5949124bb2742ec0aadb116f4c2ea86b09adeec4f741479b64e92f824a3df87ae9dba07ebdf812cbb6622853f9223f8ed90ee6dc389 SHA512 86d2195b8811bc2d30050e977925a947b175ca674e99497b7202dd8c515e09fb83e42f389ed3c6b554dc2c6480892bfd26c91fee463115ef1c710aaea858afe1
+DIST piper-0.2.4.crate 15950 BLAKE2B 265ee8a57029e6ffa6532dda8e4da94a288504b658fceca9426d2c13086255cfe5a1013b58dd02e029ac658b6bfc8ff59b88458fa620a41e0203413b78b7ce1b SHA512 88c6fd8d1118b37b77217fae004e47c01db8f95b9b925f1302c0577971a8a9f239b4ac07ccbec924d8912cc47ccfd88eb2045cc607b5fef3fbaf496d24ef7df4
+DIST pkg-config-0.3.30.crate 20613 BLAKE2B e14dd544612f74b038bc7d279d629034237946c261e3e97621d6ac910a12f4fa4e75932dbd5d3339e62325d0ccf33002b07f04b0523f93d2bd3b1a919841ba66 SHA512 e4bce232e1e1cbb17d1c08c3de4dd12613f5a5238f831c2a765b6ede9b494e647d2416a7d9a0c926104e24066dd1b38df8df98a6c55d62f25060f80eb33d064d
+DIST pkg-config-0.3.31.crate 20880 BLAKE2B ab7676e810751f89639b60ae70bdebe1d57edc76319f83077c3680049a701a26e72e8cc485fe77cdc4346fe3571d32c59e7384c8c86fef17e00d7d81df5daf43 SHA512 ac3e8062ee8831a4e4fc717b5247dc7f113da7bf6d64ec95cbca7875959a2afa1497bf81d9dfc27206b5fb10027a2509d51dd9ca1c10139d7b4c78128864fdf4
+DIST polling-2.8.0.crate 43554 BLAKE2B 8fc5986db7c34989954bbe84bd69d1f61c59b890d4e5fd21a20f3861bad750aafe2d1a89b3181df97f3659f1a6c980a92e43dcb9ef9e1de3881518024caa6f58 SHA512 c22dc35f39f374f21483c987d43108472dbfc291508e3f5e1d76e2c466f40b396b1ba7c222db5e5a2c0e670e83b4c34e0fbb5c3e93d86435b8a2ebb0890471a2
+DIST polling-3.7.0.crate 58381 BLAKE2B b18c2de920feacd907b1a93b3bcc5419a147a086c2fc19dbd09b408ee56bc93fc58968e5a92458454a13c82a1e8d66d1e4253d2da229d1a52909a9254bb34822 SHA512 912669f12c81f5b33c02d39ccf6f3f40bf87d1c646f3013447247335d93fa99fa1188a078e03af44068bf4bb7f0ef88355bcf271a8c96ac1bdc7fba292dffc2c
+DIST polling-3.7.3.crate 58276 BLAKE2B 907f5cec860d5c631b7cb7ea9fc919df1a1b77dfe3ed4ca94f717316b78d73e9ae0f34391476a057d82d7376f819625ca1ca594ebbfb33bce7557db6663b7f2d SHA512 a2db17dcf623b77c8b94e36ea5f55059a35a70aba80f261428bc5b8df175dd1a95e302912bdf55dd1a6a3282fe4920054bd1cf6d7bc6eb52a70556d220e05429
+DIST portable-atomic-1.11.0.crate 181258 BLAKE2B 627bd7c306f6c4d7991abd9f995b7e0ce110a7ace738690c287a43ce3b979691214e525876f8ace0c2f0d10d781fba95c7d3bf29aea28e09b05b06f4764db03f SHA512 71774f8308963c5399095c6b755befdf9ff3d28f9529b4bae1fe0f2aba733339a267aa6f0ff854e59fa5044a9b0c2c86bad3bc4fcaa951724c839b0d6a22041e
+DIST portable-atomic-util-0.2.4.crate 47043 BLAKE2B 6a8e122bb2b9eb8262e9eb790f336dbb602f6c086f8ac025740c043170360d5474af578b3842b06ec51535535de3f4d1b6753ec54a6871dd0396f5c1012b0bd4 SHA512 f2266e78576181123aaf68e7b5d3523a368fa8136d447bac68a08d65c7051dea677cea84491a1a03b9decb4704b2f9392574d68dda9427092a2ac92cfa0affe8
+DIST ppv-lite86-0.2.17.crate 22242 BLAKE2B 48c4a31a3b555fa37072c4de083580bb769747c7668748541af472778b5b58c3e7ab2b5e178760f542f973774f09910bdd4058ae5fb9d6b10c103eb76cfd0d3d SHA512 539d916e7e5869d832045c1aa88aec519bd000227f9b01d4dd0bfc9ffb640d5f5eb21b05eba718174773c97192a655ad3cb31b53ceb914dd19179a6699b3583a
+DIST ppv-lite86-0.2.20.crate 22478 BLAKE2B 9d68dc36d8148047d571c0147ed29f586f3c6ac9394b56bd955c8ae5bb18f5a8da5369809f7b8c3199074e23660325158c32c62e1bf69a16cb1f5da2a01f5df0 SHA512 6d171f63b42296f7765732fce3af7ea05d0d81f1541ffb3ad86e81210715ef4afe5bc9e58926e97e757aea6ff96a8012c8411eac78be0fd080898318ed21d7d1
+DIST proc-macro-crate-1.3.1.crate 9678 BLAKE2B ed617a1930bf28a26e865f6477229566a0c4ade7f2c1e8f70d628c5536985f03c7533c561490415e207c0f58b4885367e7f54ddcf10b058711829f78a34d68a9 SHA512 5306f017933ffa89eb6111ee00b0536179c5cfab56529440630a0bec86b62194ff16f57ebb471b233e88cd886b7b9871de8402ed29073b23e5ca98193e513659
+DIST proc-macro2-1.0.81.crate 48233 BLAKE2B 94319064772c757b6bf57eb9e759e827454f719d82210271ebab9c6ee4ecfddc9099522cdc8595123efe2efb64fd50eadd7e31419c5842ff1cb8fdd32e8daa0c SHA512 7edec4b786d9fe076ced4fa5c0d369c163fd1c27c895431245a8268ab2e16665b7c0a585552d46ceee6b8103979a4201f92abb381f0e678128abed359f514de7
+DIST proc-macro2-1.0.94.crate 52391 BLAKE2B c50986bb34468379e22215c6572c2b722f54381c02258fcba6805eef0166e4bb591d20b94b9084b5d68972df8ef12476ce0d1081588cf80dad3c4ffffa347660 SHA512 3fc4552187d4130f0fdb415f94e625c156a1fdc6cc955fda8a68b49983ac8a83b897f43d1caa130c4f0932fbd9651140b7670601faa2b9b936947c3fd89f7769
+DIST quote-1.0.36.crate 28507 BLAKE2B b93495163ed205e33543ed45f084870240d479071d643704b6e348fb9ada6e1d8401893c13348b9964f4b6b17ddb96cb5458eec540f0d761655fcb96a4cd9129 SHA512 f1f002a912692f7ffd4912ca980ec57ff4aca3a7d9e2e42e9e3409e2105c9f59d86c05719f6af309bccaef2f8843b0848a6e3afda3356e045d8e7cc5956ae685
+DIST quote-1.0.40.crate 31063 BLAKE2B 09036ff3e5ebbd775c466bb936de91d4c070481eb4b98c62a4cddcda57cd7b67d63f979b321f6ec64aabee3f5da6c28e7a3efb83f4647768ba578f1bd0bd0bdb SHA512 45a76e22a2b0bec47e4ba73c3b73cc41d821dfcce9876134c5d8eed514da214aee4ce7612e372c8709f888c0d8b9b7e5442f27adb7a59f3571f0339ed7e2ac99
+DIST rand-0.8.5.crate 87113 BLAKE2B 516f26bb2a969d0d79e957818133f35d2c0b4d9f1b401098ea23c5b80d27599e842b9298c0c5e46e2a6cb6953857bf8a9fb71ec9366c5ce6708cf17df14f179c SHA512 8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2
+DIST rand_chacha-0.3.1.crate 15251 BLAKE2B 645771b2c3e274f085e0837a20306b1d59f6e9032fba8eb38a6d1b30180d15e2f89ffa2a162bf6358da41e030098242d81e71dab4321980d0a4f6ddfc2974ce3 SHA512 8198c580b1b9b0429758ffa49cd8138fa3ce724f0dcf73c767ea7e55611d6a2e4c7cad9950896510def500ce4062b594386c947ac3d89425b4e5c9b04d0b8075
+DIST rand_core-0.6.4.crate 22666 BLAKE2B 8b6b66d50aade877f2779c006f8038db450f808c66d73d79efa66c4178dc03db06f12201bf0e7930181c4b0f4030c49b20cce6eb7839763cf2217cad9710789a SHA512 36c67eb845aa2ccca49d6d680f28d418229bbc5a050729e487fe6b9f9f384fdd7b8d67fc6508b90b79ffb3c26688e72feceb3ecae57d3d7f59338aeb62296f79
+DIST regex-1.10.4.crate 253191 BLAKE2B 08bdb925efbea1ee9f885a89ec6b4692e39d7b17039f788e5b3c1dbfb7847d4f53b67f0c61e4085af7ef4901e67e33ea94948668bf706fef19b4102a06ef0447 SHA512 88ef121a51759f418d5dc01607a6e02651bd00343dae92962c02a80f30343d3f079a0375457780ce46bf205ca38f279b03989154638199fe2fcede10554bf21b
+DIST regex-1.11.0.crate 254059 BLAKE2B 9450e54b522c3f12e4f1d814025c3037f8373b9e1feaf2028756b573335cb7f22400b0925e3ceb0716d72aeb19b02b4bcf70b0b435a0252d0d52a7028d95308c SHA512 16c066664ae87497f9880a52222301fb0d44053ae2d6861ea21dc59cab82bd1ab8ac407f9e77228a21a586ee745b02f9eb10e7b9b30df2f3aad73633270bf73d
+DIST regex-automata-0.4.6.crate 617565 BLAKE2B 8f1e2a3cc1d2d50478776281d2bf10164ef441dcf7127994f4a0341ec40588ec8dc1c07fdf9f670da9e61a7753551500b80314df130370b61d2c03c2b2e3135a SHA512 b288e1facae2612f73d3de3fe9fd1af13d337107004f990263abe6277b31b948478ad9c2b807dcafa73fa565e48bdf2113139f5ca67eb73165b7d29e2ee5c9f1
+DIST regex-automata-0.4.8.crate 617784 BLAKE2B 7535c79f6ddf1b1225e21171921594dcf32fc3afd47519d2067b2047b19070cb7e6fdfd1563b884fec6f91dd568522fc95d85bf095c11f8c02daeac128c45020 SHA512 278e3e2ab230ed5fa7d4837e8ea879fae68ebf35c2da5cc3a67f46b7d593abbcf71e6326a0cf34e38edc0f3f2166ff42a4fcc17a400d9604429aa5b4be075a3f
+DIST regex-syntax-0.8.3.crate 347497 BLAKE2B 9ac2f63098ffa3fff51fe2bc0bcf9ef164cf9389a909a3f0cb668d2598e7ca65d573e47d571ee2e6bba3a1a96ef7c298b8d681e1ef89c8c53b7d590e0e22839b SHA512 925f7bcc50d94c65d34fcc770c6e58dd5b8a045541c0109e77b8efe842eef4c110087ac9c0f86c7c3022ed013abbc5c0a187d796dce292ad5361a0cdf7153d76
+DIST regex-syntax-0.8.5.crate 357541 BLAKE2B fc6d125f7a8574c37d81c75cbfd447cbcff736f2d9991b19814ffc1a414ebc5b76e84fb8fd36c983b38e8e391d165cdd9047832b0d9100f0e1ba7085484b7db5 SHA512 549d8d130fea9ec0d5806126f57f31d433f50e9328c5532ad417c44bb5488ec0d20acb0983dbe54dabaa0b453cbea4533cf7baac7144df119e8f78dfe55c5ab8
+DIST rustc-demangle-0.1.23.crate 28970 BLAKE2B 611d2e41a8a9799db2f8bcb8fc8fefcda361d055a417d2bfaaf2dedcce9d6f388c69d905a28c65e6691b4d408d7922ccdc97ce524c87c3cccb8467e314bc87b9 SHA512 8cd29800254b1305ad50f1fc008838c52d9659f97a51a68e9f2bd6d0a60126f3ebdd1c79760f96445b3bf998d0773526ddf663b174acca81babdc0b423247247
+DIST rustc-demangle-0.1.24.crate 29047 BLAKE2B 8248b014eedb26cdc0b748544ba91b9aae9c992a6f93b4d3ac256b78f691d572f8885a3575492ea556698a241d2759743968293079ca02bb6a5f318b0ed66dd4 SHA512 eb897c35300b87766e6105917a907fca1c5b1f7691fc03c6c1aaf38075ac883a73d1eb54a245d13ba59c7b0f0333d6543e23fc1b1c542fbbd5c750a84660b9e8
+DIST rustix-0.37.27.crate 324534 BLAKE2B 65fc8317c5aa86236b2099104b6841a7d35d4567977218f5e59a85d199aee7d6b9f0278083d93f575b31d77ef8685576b7cba06ce8da6e96a164af30c854ace3 SHA512 e1c648cf11379509b732b9e9ed88ebd36006d8e73755528a09aed4f46df08e23a705696c5e6ff7ea0e4382513edb487f9859a8f1673150d60d70c698216fec3e
+DIST rustix-0.38.34.crate 365160 BLAKE2B 02513c2513ac45897b659f0d332a0dc32401d238b8fb64ad4a90ecc4d8952fb042c0bde4bf13d52630cef34e73e96dd32cf772a8601b4f6eb5e2961f0a394add SHA512 717cf26e2ec792b41819ff964888adb265a215d2b6c6e2b7a8ca1f7f793b713b853bba9cf03c2cc88b0f9a5eb1a0478faedbc05526f39bd81583e7b1f764756f
+DIST rustix-0.38.37.crate 371243 BLAKE2B bceaa4861747208f1f2b68f8924c7247648d88deb200e97d8ed17c5cbf9c934488065f0ee7e4406bc96e8709b292ee1fe15beb346bff57b5f05af36174420a0c SHA512 6c0ad1be1fcf1b74f670b2c7599ba68c2ce834c760ff7486674d190ae0d552165b0c2abdc35b13eee8c0333a904c67f5dd1efa742c20fd3735c7ccdf2a439619
+DIST ryu-1.0.17.crate 47537 BLAKE2B 28408e17a4322f1afb6f21bc8d7328c39d07186de4d464f8e9bd63a69757cb4af61b46e558075e14836f310f020ac824d5ffa616fc0a5ffba59b9df0bb66ffc4 SHA512 6dad725c4fb2d3a33ea30107b63cb702eed56bd2f3c16a72265f648f5aaefcd3d5a7b919b1d037af926cc6311bc68ba58c4e0483da2b2e2135c6a7c2d6601af4
+DIST ryu-1.0.18.crate 47713 BLAKE2B 409cdf4b4e77685394018371e91ad6fdb175ac57e1df9f902871f13208515e5a2ab1daa226fc1e7291278e64448332845be4cc9409bce3b2f3daed409259e104 SHA512 a9b2beac778ec47e6be303148d7512ee681bd2361f6e4ac6db32c8b4baf86a8c5eb5b0d02eacd6131ae88c7b5105c57018c3050676e0b3dd1ed9c4d2fd650e84
+DIST serde-1.0.199.crate 77598 BLAKE2B 8c0adc59a4fe7bebce94394059a487b6a23415a9f6cd39e6207793125018b838530443bd4264be2912c42657a68b271a6646480161f02b4a66e46b4ce9120858 SHA512 6d365e23d5980d343175cfa14edf82d8ba34f00d197e3cfeff813c27e1d088df945611780fa22b243807b4948c576bbf6f0f18faf5f03be984f6810ceada33f3
+DIST serde-1.0.213.crate 78349 BLAKE2B 0426dcc9a6a3f7a2f35ace4ac9e023ea7607e5677ec71cd63884cdfd1280ddfebf0d1c38843ea8a076c3371b0b4d524eddd80f5cdc0c8799d7d7099a682c38f2 SHA512 94b3f1ee0008dbb434bec1b19e87202cc2791c1b0948aa71f3ec71a66693a00bc7fd2218c4bfb361b71922db18f0e0a89fbb605e68e91c38376e2d4e3f3ffdfc
+DIST serde_derive-1.0.199.crate 55793 BLAKE2B cf59a2653bdc15ed439415ffd5c21300023ed669f9076354198429f146ec0d96b9905d66aaf6a5ba3e18f16b8afcce7d9349baa75e39d1968b7fb75177b586be SHA512 8b3ac20b7374a515ac9f7a929582dba79701de4096de1662368b361faeaf9259b0a898458ba1cbbfd5ddde4c9c8216c305e307656fa1dc85aab3df87e428201f
+DIST serde_derive-1.0.213.crate 56625 BLAKE2B 0ebf7b11793c0f5368c363ab37a40d954d6b91dd0db15f16e5f2db7d1f2f747abcce7f1e562cc7323d1e837f1d3aa51978229f278c20af7a90c748d659b1c917 SHA512 38aa6b70234c780534b4c45056dec71224cb993aea82866b5a3e9be1830ac8ad56b2618a1db51e1b350a6534ddde8eb9e49b8a74569c0c4081a56d5cbe296477
+DIST serde_json-1.0.116.crate 146790 BLAKE2B 20492ac3c431fd3666599f079383a9d945549e02357127a58acaa7011684ef0caca221a253218402ceff6956ee8a20cc41ca3394b25bb69669be75ab22b66a1e SHA512 d383de754b0a50cc4ab3e6378b758ebd6178ad32ebed80cb4e32a9d8e81d0c689585ee5cd35f12b376e488d25ecfaca659be943c9bb4104b63a1c4f9ded2f337
+DIST serde_json-1.0.132.crate 150549 BLAKE2B a49aef7737fad2e6f6ec79cb6da00c734e7de7ef16be321846d1f6229534b58e15ceb0f6306eeae6f85bf07431d82959c0a56ed1394d21a67b65c8c48e971f3f SHA512 9d157ce7d705fee8245569e7c577310782b69675a6e459f21904544b824a1ca5c9b445d17419fee438dfeb6fcc35343ba14e022043fffade0210b6d2c1b5795e
+DIST serde_repr-0.1.19.crate 9997 BLAKE2B 1bfc8e94b8c3cf897813f4749d6a1112c1097c2c257821eb366073a41ac46084a21bdc0ee4e3b99d82444619a894472e24fccb60cbd8a41ab7d5b0469cad7c41 SHA512 678216a62702b3300fef850f10ee60d88f31de1fbeb7300e3fbbdc4e4a9cbc95c6890c8e7b9385223ec837d9504edd53e69b620f80609e54579c0994ed1ab0a1
+DIST sha1-0.10.6.crate 13517 BLAKE2B 85ad8dcd237125945f6f9c2d7a48bc9802dfe8398a2bac86ddb96763486092fa18e80a2e69f89cfd6e95599d34d60ced33b26a68cbbe39bf158238a79433584b SHA512 fd37be7e3f1d4b6addd313a36b55215fb70abd21be7831b71de28bd3eb03b7352817d8a7b1a166df002c3a23eadc8224e49edd4a37556c0e5357565305d4128f
+DIST shlex-1.3.0.crate 18713 BLAKE2B 18800c364d3a628f1a3125097ea82fe6286550c2997235df0bf8483a3906aacabc81308cb239887d46ba2f457cc6f8acd5aca78316707eea5098cd5666aea67d SHA512 5c8cedbe666a14b8a0874defb9208146ce64579cde52ed483e4a794cac5dde6a24bf8d684404edff582f842e1fd4fa3fbeddbe074f191e4ec4aa517aa456fe8a
+DIST signal-hook-registry-1.4.2.crate 18064 BLAKE2B 7274d4c115678eae2640a709bf9d682ce867c1f6295a0c5f49e492f95dd1c457f20b56207a74221df1fd9d744b24c6260e28f705777e3c7d47b7bdd36f1d57fb SHA512 16362d232b1d301007c069198d7716848aa73d898ef92e050422b36c09001b4334390dc95a6650e5315377fd8960d4336e5ae869b0a305e8525e977b8327c508
+DIST slab-0.4.9.crate 17108 BLAKE2B 8e5288c4d00efa915e7be27b55f2204850968624f0d8101c091a357131106bceeea7a63c98007420c12f67893dd2228b15d3f23508108c3a0ceaa605474bc7a9 SHA512 b6b5423ae026472920f7c9a4abe0962314140a36dc562c0a9e3fa60725b2b8b7a8b343110d9d4c0e18fb318b0103e14c0ccbc9ae350d5563a5ac80c35f228c40
+DIST smart-default-0.6.0.crate 8169 BLAKE2B d4b19bf0a96d9eddb05b7530545a5b138464c8a23448abe60ad21a2dc6d1f335bfbd97b76a48b1f801d078e9bf84879c736b64b9d8d932478fa93e57d77590d3 SHA512 66ecfadb3c7a7a8c6ee48b62146a058595e87efc18f4962a7bcf04120067440a83fcb4489c7831986eba06450279546b019c111e2a2a01e7f2d52fb82e98914d
+DIST socket2-0.4.10.crate 45697 BLAKE2B 1af475724e47f0d7889ee092c4bb5ed34cd3a34885bb3d65a7c11428ad224174be94c617f5215ed1a1656973e112e40bc56ed50666543743371a65d61bf3257b SHA512 eeb0bdb86ad969f3cce4735c99aa812a867b11a5ec88a53fc7f5e399c510b47ab14d06bbfba63398fec0a0f65835edaedb7eca7fe36aeaf4805843aa9f0dd5ce
+DIST socket2-0.5.6.crate 55270 BLAKE2B 10eb32486b9a2908e05ab24620ad7a79243e59c2c2db5a7793f87f32765745b21746423d5b3896ef37d3dc9e76410fba97826cc64cafb7dd45adb485900c2282 SHA512 10f14ce7bcb9fabac56f98bd34ccd6368dcf4ca245ba2df80fe0f1157e177056eeffc6fcfb1d1fea6e89c0eaafb99d8056fbd10101031d3ccabb98950ec563dc
+DIST socket2-0.5.7.crate 55758 BLAKE2B 148d2e2b6610895ec555b1357b340576984eb76cb3ea719f85af50cc4215b2ea2db739e2a61434c09360a0c1ff8e05911764e18dc4a59451c0aeb0eb60b8403f SHA512 ca37157bfa970cf3cee8b45c7fe64930becf2ffbbc309ea4613be968400279b70edd084d159f65b76fe1130917312d81455023c0d7c1bab7a59c79542aef9dcd
+DIST static_assertions-1.1.0.crate 18480 BLAKE2B 358dd5ac413d06f62da0388e2016c5fcb8ec68fd7dceb0dbbcb97665c032b7509b7e083c20701648b6a9174485f117c02682ae4bde7ef037e80a85cdf6a0c86e SHA512 46d0e35f77941dee6f60f574c130472248063dc38494c1c4f84f7c048244cc2a58a86fe17c0990e3f0f01406b75ed385a13d00058612b27cf0e867c8d31c92ee
+DIST strsim-0.10.0.crate 11355 BLAKE2B bcb25ad0a7284e24e4f17ebe0ccb621bdc4118e499b50b094d98aa7e8fcc0b96716c9953c3516ce7ea78309d41d424892ded595259696a5bbffdcb07802b5c2f SHA512 78b318532addfcf5c1ccc1e14539e258aab9d3cd893cc45d82342549bde838c177d90f13c560671f8f32929af47d0b467db35e6876bd7697d8b3f9e055aeeac1
+DIST strsim-0.11.1.crate 14266 BLAKE2B 252a9ede4241b165525486aa8855dece37af77f5b28e0e1858c4a5d2047db9fa958328db10989234aad69463ab51b2303785ec056c63ea8c95bf95e111ddabf2 SHA512 0cebe0155a92640e56db9a599ae62078cbb32e1d2da8bfa67ed0e8f410a7558dfcf7b3c2720ff5913282e291ecf076aed9fe9bf84c8d44e814a642b1bed3335c
+DIST syn-1.0.109.crate 237611 BLAKE2B e827445d00c79a8eeb91eacde472f1987addd6ce9e1df95d7abf6446a77ff4173a8006845f3ae71c1da47193cfb72e0ead9a6d6bad2573be12c17e90735d9ad9 SHA512 12816b9e8cf984024b2fbce9f0ae14cf94d4d2c06f08cc54fb793ce78770bb4cc1288eb7df0ba5e8e937756e1e8e295c53fe07a0c5dde1ea8ddba03b6203b37d
+DIST syn-2.0.100.crate 297947 BLAKE2B 50a9b244732eebc16464bef152bb620d86aba590942b0d68710d36e89c0ee752629be5bb8db48866c7d252d545ab910625891a5a9b499ad9142191881eb9b42b SHA512 082a975c6448febe38abdc0b43ae929a97a303c0f980ecd2bdd6c44aa2b39ee5aeedf6b1c84316cf088e0d97aff011ec0482a5242ddb338dcf7db5d55926cf6c
+DIST syn-2.0.60.crate 255808 BLAKE2B d7a8e415dd72267fd92da48ba8b3e6feb728f0639797db1aa74aeaa2a57935b7565eec37cbd32eec826154e2c54075b121737369eb15af36c322c34b3cfd7930 SHA512 20bfa02b03c193672a9922f9a5e196185341e082a262f7c00d7c2d467d9e2d77f4af3994634923cfaeee34aa9eab510415165f052ffd9b1ed0b1b581e272898d
+DIST sysfs-class-0.1.3.crate 8806 BLAKE2B 34f96dd9cd438cbd9a1f1efe7abdadbf7294aef57d7ca6e0b8577d96e25609f4b015f27344e44a051e7fc44cbeb1345cd11a58ef4c719ff9c31d6f8e65c5a59a SHA512 0d65cf8518878222aa11e9d9f31569d42f5f72cfbde283399a09432f1e3021d384fca93b9c7362f72a4af0f10220accbdf0ecbeaa485e5c6eb4aadbafcb83a4b
+DIST sysfs-class-ab63e7f638aadfaf896a02e53cf330343d331337.gh.tar.gz 8491 BLAKE2B 1615e4128dc99ecf6b2bedbde38744d47cc209ca92c312389f3f9d53d84dda2b5b2e4de82248efdc29a220bb210f29b536b475a2fb238a0c0fed9fa7dc8d7143 SHA512 a301080f6a46e87fa09cb9007b603706a11bd5b16b4a745f7a242347d8ea6ca7514f16837efba72737f7a30e5eaa69ca50fab439eb3030a9fa7407c90c375426
+DIST system76-power-1.2.1.tar.gz 65344 BLAKE2B 5cb396ec23e568568d5db007b464c346091b1742a4660c4baa4f12a5d2d59e76b52b25bbcfecda22b2fef7454d954a8b9f80835b317bb8e05b8350cbed8a35e1 SHA512 fee8e9165735f25d3a9160522e1a0b72f8bf28e48c56bdac611f93c2b317cd0dd0df380dd1900cb8b97fbf9c514fc316884cb3c81be87adeea0a7ceeeb43bc7a
+DIST system76-power-1.2.4.tar.gz 66231 BLAKE2B cec2d18d24ce8d7b8bbd8c48d8753793c9d2408152d1ac2d72c04933704890bb4890008b3c6f3ac6fe14101c9f4fafea4cc2180f1ae291678b198a1cf9895bbd SHA512 598117aa86a92cf9e2a773acf5e6087f093b7cf535f9b0b0338ca31d41a685c146c763098254e164e4321cb25f38a3c25e352d7b17036cda774674dce9222554
+DIST tempfile-3.10.1.crate 33653 BLAKE2B 819b183e7840f70270883ee8b6a91fa09861c3112eaadc65007199885abe099bd593e1cdc4d9ab48c23490a6d484cad9bf0e80cf4e718c369cc2418b72eaf09c SHA512 bac7515b85b0d01ea914b527f0fadd3a4d8e77c9eabe786977d2625d8a3e91decaec502dd15bab4d49a43597fa7cf7660fff4be1b043112d13b542a72443bf39
+DIST tempfile-3.13.0.crate 34910 BLAKE2B 736378935088ccd8b540997c0554444c3752a74c9a4bd82cfcb700a9b22f572d0f2b3e61252064d4a631b57783199cfb42309e518826346a83fb5adb44843c49 SHA512 68701bee80309cd8dfa96c237b2344f26bd03702d2fc2e1a253820c98654c85d802aee1e0fc856f6372159a92ecbf624f78c8146f34a0cf924f5b56284915f85
+DIST thiserror-1.0.59.crate 21040 BLAKE2B d9ae0b1d810e7631edf072a41267a871c1cd88d71c882c8fb47d65b3dc563ca2addef0ebf9a9cb122fbfdccff5b92815b8f2e0f7c3382963828cb69d21ec8531 SHA512 254b0ad6c4b135234f89db8bd5674fb8c6b633495810140abf93cf06c58e911ad2ebcfdc002e7ce29739e95ea066eeed3fbd7c831e2858822dff620598dd147a
+DIST thiserror-1.0.65.crate 21825 BLAKE2B feca5315211d9c2f953dbc2a1b94eb7e00aee29918617b033dacd24fa8575bb3c540dc788496b4d8c4f2ef93715e2c1586ebed9dadb4531c13cc8404dd5860b2 SHA512 80a6525265bccfc890599070166133c25ba764d6bc63a486e5f7350e473826c5a004b08a5c58b0fd4c04dcafb7649617720021564717021230078ca0bb416697
+DIST thiserror-impl-1.0.59.crate 15726 BLAKE2B 0e524c851f999f4592e5450d7d8ad45a922c9cc5d2229f4dd106144238c8a0ceaeff5a4d1c7e27cdc53a7eb44e60f890fabe1f43ba3d5b950da9c63e6ddcc9d1 SHA512 75543ad39d1243dab23a4b50075bec337c39045f0271337a1ccc144f25dc1e7fc23b0163f16958ded9a1f44ff359378bd22f4c0f5e095c1823e928fc929457e8
+DIST thiserror-impl-1.0.65.crate 16077 BLAKE2B 06b704bac22338710de027d220d86451d2dc832df722888d01d35f87e34853d683f1c2508937ae221cf0c7d20d8026092d676f8910b18f7cb3b21189556141c2 SHA512 ef211d621322fb5886b2eb3c7fdc210c7885545a736bb37b195666051a8b47ec8b771fc4f6c641cfe36a840cb841186ba132cc5a270caf3137cc17bdd061251a
+DIST tokio-1.37.0.crate 764297 BLAKE2B 725f3b62c52ae962623df84c690db7c54438581b8d2108dda76f05bfabdf1688f2de8b4fed2ab0db5c04c7659af8d95a7e19702654a12fd498d85a1d030c7a45 SHA512 fc3c070ed0c09e57205b76618a93b8b00f4d74c2ad89df3295254ec2a984f4fdfa9ed5472ff935e1644e89cf2abc44354742603c0e006f14861deab2b873cd85
+DIST tokio-1.41.0.crate 805168 BLAKE2B caefbbbb03450cec3f3d5e445464254c14d24b2a905b1affe54ca7c89765e91a2bac0d35bd5794e7fe1e78a7de25d6d84bd3aa1bb59c98eae0e11f143ebdec48 SHA512 62f31b33cbd595f20c3b3169895163fc2bfb1b4f5ec2f6e554c7f238a0b63c8431675843fcd1be0e9d1d8de734aac69e41bcb8b5355516b1a239cfac1e9c62c2
+DIST tokio-macros-2.2.0.crate 11520 BLAKE2B b688669f8bcb44967fe0d3db51fc5d5f86da3cd0c7eb7b5803feb250ea3444d134ecc7f79345f0b947cd3479a46659f3a158a04e0edaaa52deb8d343deac4761 SHA512 7e33fa62e0cf4b829638553a51f849242788d217264437444b3bf478fb40be26800d5cfd954b1bcdca1e5191b3c6c60879050f0f7e707461f7b090ae5025e0c6
+DIST tokio-macros-2.4.0.crate 12501 BLAKE2B 9b358adb86e828faeb956d24a1ebf68b51a69bce519ad9760ec3d3b8eb1cf4435afd4edc5ddbf634fe152bc77b8675182dda3f076f1011c5b5b97850c1fa1689 SHA512 f4a445f6c2cc7c1cfb5825919cd3dea3af52720c7793c20601d05870e7efbcfe0c6231fba7ada49b5ce46757f0e1475b3667914ff33c2fcb25e9a40151bd2501
+DIST toml_datetime-0.6.5.crate 10910 BLAKE2B 93a21ab2784e96ee2e6b56c7b4f733f6ac4c68c1e7d7dac3fbd8aceedb3580e25b4a9c7d9c3f9b5ed152560353b3e80906e37824956dc4ea90bc6f039768f6cb SHA512 502bdedbcbd2ac9fbaa5f4b51f2e409af185f3633f01f8845de5e3b007f2400215ddeb82ac588bc915ed5a5f9d7251ccf93fe2a57cd40fca2927f4c0966357e6
+DIST toml_datetime-0.6.8.crate 12028 BLAKE2B 62113366771f22b437b2ed0d3bb2489ae9078cb589cfad2ad2e92c81ddbda48f689e5a573366eea4f54c2b3cbc6b37eaa8b442b6d935b631a992de4917268757 SHA512 d38b98db3b2d4eebd3001d88e2135b6fdbae63b200f7e900c6bb9c121dd3f170e557332bd26f237312c1cbef61666716b0cf550c2d730f86fa7cd9eb5f64a16f
+DIST toml_edit-0.19.15.crate 95324 BLAKE2B f989f96d571693ff81572af6c05a6f51b673e478f22d20a6b166c45909902ac80280ea92ec5c3567327df90100a47fb7504845fc39bbcff6756af6c1a89e2221 SHA512 46d6bd2fea957392ae0ad7e687dad7743b76ee8e8ec76c80d6374ea294d3d09b6f73df0a82c821b9ee3b5268987a4136aa825034309f3cbc1947dbd1af1505dc
+DIST tracing-0.1.40.crate 79459 BLAKE2B 33693ee71564fe5925a63dca351e838dfd8612b4b1e49a33a70095e56ca63287c13c772661ace0e540d08c92942d7cbdc51ff2cce4f4b372164d9aa20ec05dee SHA512 5622188a45dddc0d6d3a8244a9b12db6221f4180944ce1019d18f4e613e4bd113dae5d45fb57dd0754f6e8e153b047cdf00c8f200782bb2b868bc2d423d99275
+DIST tracing-attributes-0.1.27.crate 32241 BLAKE2B a20af0f50a90dcd64e5318e55779142da294ba18d1cd40059a8aa964fd3c92834e03ee563e41caaeef71a30e3f027e5c8d167d90e2844da79e0774b267e179b4 SHA512 7dc59f4234c3bf3434fb352baed2b81db4e931eeb3ed207c4a204e480da734be40847b167b808058d2807b5583815625bcd5153e2bbe79804cfa6f069a74ffa0
+DIST tracing-core-0.1.32.crate 61221 BLAKE2B a7815c46af9852ce62498083103c6d359351f4d33609b4291330073b6abf4b63f5e1bb1a7dfed3bbf4d6913ad5217e96999416261af8a70609408a29109e4db6 SHA512 164f79cacfcca533a53b7dbbdc2015aaf851a16e00c72fbc4e5f515b6a6dedfa464e964810009b54f08cbcdc5a314e50245ac7b1b01a71fce4c63db135bf5521
+DIST typenum-1.17.0.crate 42849 BLAKE2B a6d1162050679e2c4ab2467f3a77d301f6861882eb7c9749f31d047f383dd5bd2ed5846ad63eed99ccc04d6ac36cc697a305861e1d65880b4d2ef04ee0a79b94 SHA512 99773d5d9f850c0602db4bb67dd062b0ade6f086e155216f1bb2fb6569461ba7e1b7c2f2af81ea8833bc3bfcf3fe5033edecb7c438adae63f59d3e30cf63a508
+DIST uds_windows-1.1.0.crate 17040 BLAKE2B c77914e150d2f0afc5c55680e28ba242238f4f1291948ae492fe63c16791e443ef33bafa6686cb753e53361ce452f2df27d2bf4088fb1ae203a47df3c55856bf SHA512 092c41f6fac2aacd5b83009b4aabe2cfc487cc1ad5ebc8237d9804aff0c5c823d3c079d99748e9ec3bb1c02b8a51f6a22e41441ec9a72c50600c08b1efdeb0ca
+DIST unicode-ident-1.0.12.crate 42168 BLAKE2B 4cede03c08758ccd6bf53a0d0057d7542dfdd0c93d342e89f3b90460be85518a9fd24958d8b1da2b5a09b5ddbee8a4263982194158e171c2bba3e394d88d6dac SHA512 bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920
+DIST unicode-ident-1.0.13.crate 43279 BLAKE2B b5e935020d1c9f3aa24f7d382f6b73d6510d654a61ce1c9c024e2e365bb817182e076139f370e822573531356fb78ff7499049b1f29aa1e2f4a2cc74a955b47b SHA512 5ba884f39debe9c8eb0b1d251ca713f7e2bc191d211707ed10cd81465487dbdca53914c19e131edfa1da15af132dc2c346260c3969c61e3747b63399ccb1cc51
+DIST utf8parse-0.2.1.crate 13435 BLAKE2B a1c111d7ffc60690f2aaa86f034c66ba1abe4e126f1774a4377d41eba3269369862f57515af387ea785d69a8adf46338b5e53761b5ee6f4f4380473f4d9cab0a SHA512 51fba8f1e7eb74b7020fd831e30a67fc8353ac2ee07335c8c3374a5570ac8117f165f6905d4b7f0360095b7b5ed3e739001d02a8cc3c89195baf2cd679136050
+DIST utf8parse-0.2.2.crate 13499 BLAKE2B 095b5d219ab8ff04c06fd6303e03d913ae36a57845f0b2ca3217a40e31a54cb0fb5ecedbde165d28f5f60f1553d8252986d7098fa83befc84a7cb20bf3b76144 SHA512 f3dbf78fe924f1dc3cf9498b6e43fb10174699463f31091a7a8136d8f31ec84fc00e80e3d8551b7e86257e8b3573cfddb56fc0de797fdb2cde0e962a8f239266
+DIST version_check-0.9.4.crate 14895 BLAKE2B fa1fa4008af165bfc1fdbe560488afd9d232cfafee94104fbcc4cbc52f234849bff9ddfa88109a1ac682f6d9c1d86b0459893d223f64e65adc08966aaf93dc89 SHA512 b172dc9a3759a4a683ffc39b9a40b03b9974b626a088217de87090466cef695226557c226cf3e469b2b25ee7297b7eb0d7719878cab42457f80146a81943c0c8
+DIST version_check-0.9.5.crate 15554 BLAKE2B 131e75cc287518831e142430e2a39b48e4275874f4473780d47a27552294097aa1cddb65c385583e1022478f940b495eb43c24a8b1617b8ac5a24af3340c0d72 SHA512 d11d5a2240ab0c67ea69db56561ce202201edeef9a8e5eda3d9ae7ab7bb5752d8f343fe7f6536d8383de8d55f9024efa84f66a0c21e69563b7a38c4a628014db
+DIST waker-fn-1.1.1.crate 6323 BLAKE2B a6b60c11d72aa5991ba57036bff589f73ddb5c15c399b8510a7e4d2993af67fcfb9c0d3a85b0ed27a772a98d068b0748f4b43145475e46e4a5ee1ce290875a09 SHA512 293321481eba0b72a4a37b158c76b0a783f0e5e4677d9609e43aafb703d44162e4abfb6b50bed1adda5bd1bff95a3b658fb542cbaa6c684a1bc7a8e8cf4135c8
+DIST waker-fn-1.2.0.crate 6685 BLAKE2B 26a5cb7941edfa50157bdee87142b734203110993224cb7d1b74fe0ea4cf5649c5c5c0ae8f10e9cd10662c3a0ee9e6c5a2a104fcf64beb3e3730f2266d307c04 SHA512 5f75c51a82081d0e3cc7a1d8473cd0e07ac17771b024401024a3324c12fd3f8dffae4661f669235ec96a50b70dc653ab46cd170b00b9f3b75b27f887eaa21b4d
+DIST wasi-0.11.0+wasi-snapshot-preview1.crate 28131 BLAKE2B fe501889f25d65e2d032f885cc50c4f8bf7dd70fd5cbc438de349838370d8699e9627b0a4fc76030ea9fe6d508f41d0c9928a875fdbc47e73bfb17241cf7b155 SHA512 043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f
+DIST winapi-0.3.9.crate 1200382 BLAKE2B cb5799749ccd935ea2d7068d953cecf19f543d9db7dc16ad4584bb7005373ada34937a3ced7225544d8bc765da599911c7a3190efefb3a25b7c1bb7123b4f673 SHA512 ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97
+DIST winapi-i686-pc-windows-gnu-0.4.0.crate 2918815 BLAKE2B 4d357e4d30f9552972170d65b9a5358b69c46a3e772fe05efc22f3d4ffc1caeeaad7aacdc7abd503a7ad0545f8bd7d22bf351dcb6df76f812fa4d45c34d65df0 SHA512 a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2
+DIST winapi-x86_64-pc-windows-gnu-0.4.0.crate 2947998 BLAKE2B 2ad1ea8b5fa07d544e910ccba043ae925269b76b26c9da356305b34b86741dd8b9aff0b9ffe3d562db4fcd7d7c46a11ce9e3168b782b1d89ae6881742b7ede82 SHA512 4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513
+DIST windows-sys-0.48.0.crate 2628884 BLAKE2B 551e900de4f67187ef034b60df9fd0e0d8f82a3100ef28e1eabd543ac129d882dc86ffcc1714071aba09e4cb2ae2d2f07ace1a32b99fd989ce525cf05991edab SHA512 bdf534bcf3face31e9ebe11427a911a53f89f4ff5eaea8cccd094e139bfe14b2aec602b1cab1df774794d999477439d9adc6b627a8e33c20334fc348ba2c47ed
+DIST windows-sys-0.52.0.crate 2576877 BLAKE2B 69d6b560ccfc8f679e2678663ba606060d71fa28efa82c8aef8cceaa2c63b06f2052764d60163964f939649a26bbec6361ee4b094555e941fae92070db566980 SHA512 24ee0df246c2b456a4987a9124786a28acd358768cc7d1305bccd81bc5bb8822b81a03fb18d35174a520b911c6d9b685f81a34ab319fee13da3b985273584f03
+DIST windows-sys-0.59.0.crate 2387323 BLAKE2B 3110c8cd2bc005f8c95cd038a8d574af648dc19788fe4485f977376f92e36b911b1a542d669a07ae9cd4ea72a884ab01ec78b8a2b5587456eb202452d1d8fa0d SHA512 d35e009e979633a1f3c8468cd038bd5c8c0381405165ce03497decd7d9edaaac485d704487e4a61d9aaf4e4d011b4248408912df6a0044d50e8457259867e061
+DIST windows-targets-0.48.5.crate 6904 BLAKE2B 7396bb210f37bd51da86f39fca3425c8f6610721d5c4e94f9fafa0a8a8046303b3fcc6979146bcfaa32f4406d242a0455f6cbb220f84c6ff84650e755acf5223 SHA512 e079eeef255a046be7f8e6a31c14f7b230254ebcf05eed2944827bb3d2a0dc30940d87593cf544d5e7ef35f6312b99430efcfb01421d91b02bb9c4bef7d98709
+DIST windows-targets-0.52.5.crate 6376 BLAKE2B 1d39fd86380ab086c536d88e67b60956410b345790ccea62a25e6a700757b2a9cfa6dfeb7b86934cf47b981ea2e5f42dddf49780ad9829a551dc507fcf108641 SHA512 d00d7bc7eec3c10272e803ee5c9ea0d9b07c43311124dae975b4f5aae7408c5f2ccb2fe6e68228ea3d4e70b6b658382cac6992ea177f43a9cba2ef95c4fda0ee
+DIST windows-targets-0.52.6.crate 6403 BLAKE2B eb98d0a8daeed5fe76e7fa8edb2743e2a3e77dfb9c4ea68605a6ab10532cb7cfc43bc1cea0180869445bd940be762a40136500e26b84ca88b5e0c502004c7a4c SHA512 d6d2dbd96096c6c396dba141a9817e377c35877f3b2fe58b2553280c7cfcb1ed6ee75bd4d62c9b882662de67ddaf0c1049b91530d29c94dd709c230e08eb895f
+DIST windows_aarch64_gnullvm-0.48.5.crate 418492 BLAKE2B 5c6f7d73ad05740f0bac304ed1ef9b2ea63b0d6ca8f875552ae299a0b73b1557e8fe996f1c2b69be9f2df350c9288690f49ee62239a2896991364331d6c55462 SHA512 20158d31454488f6053d3ad7b97d7fc6eae6cf37e4ba0e50c28bd29b368505eed64199ae31104d5f97b66846be54e5ed25c0ad31ea850819205c573a31ac0996
+DIST windows_aarch64_gnullvm-0.52.5.crate 433266 BLAKE2B dee1b69cdf1fbd4143136909e4df3adaa7b80d7630a01ca9a42fc5ad0d5a4d9a9e2873b43c6d8e55de59f237d9199fad0768c4e1cda3b1e5354847bd70d4c79e SHA512 b4cf511025458fe30d5b11368af285610e1654a8986ea9f78fa81b8bb87d38a00c4869441c62692534df66d06baf14c8a4d17f8eb06468eb260b99e2fda6439d
+DIST windows_aarch64_gnullvm-0.52.6.crate 435718 BLAKE2B 8b12ae02892cb69401329034bbca671d13bd268a112120b56b90504707cef89decfbd2560492844a9f0588fab62dc1476ab7e931126b939015d25a8cc91ca334 SHA512 f62b2d942bdb3a9353465b07d47b93de179bb706511aa497e4addd74cff95e689a9b633e7801ce786e73b5ae5f30b506b6faa199c5ab86eefdc1d94652df79c5
+DIST windows_aarch64_msvc-0.48.5.crate 798483 BLAKE2B 60c466d6536426425a34b5ca20da97c8127ebeb4fb9b1363911165bada484f8913fcd50e90410b5661e0c27dbfe8f4eeaa62fb17d1f3566bfc82b6255e11619b SHA512 223f016c6f1a44dbc5c8a8428b39438f75380ea06951b7c26ed0877b19d79410c6fde5e4c7f2c839b6e76159131f39a1230e0e3a208dfc425ba9117e3665c4ff
+DIST windows_aarch64_msvc-0.52.5.crate 827944 BLAKE2B 3bcb16d527be1dfdf18a9105ab259a064f00e949937ca423c8dcd1d2b90090d85aa7e42ca6ccc50c9baeee1aa144123d0a04643f9ff1147e62b2fce28b8a697b SHA512 c8974f81e37a43d92c4a8b142705e36b7acc58d9150d80ffa3997433da878044c467a2d9167ba792d37a183a0082d912500fea8c8fed743f395b63ca62a5758d
+DIST windows_aarch64_msvc-0.52.6.crate 832615 BLAKE2B adc8ff61b6dc96d39c92c7d4221ae6aa0575edfc016cfcd046067ca5d8fcfd56d10e8e227be1c038ce34684be22c7ccaf5f18cd5a7638d28fbff4ba15b48b90b SHA512 a3e21305ad0e6de38f5b5ed5d37ee5825b7521064163bcdf31d63341cd87983f54377865d2daf3bb480d2d0aa66d6f598fa09540ec1d71baea74569c86bd213b
+DIST windows_i686_gnu-0.48.5.crate 844891 BLAKE2B fdc37cd74a4982056bf22fdb7b84e1c55dc838f3cb19ff3648730a77e673ef4ecc0380b3e4277bb8df2fcfa25f57b69014713d9e3ed27c28e19b25b3ea2ab774 SHA512 931ba5c1e4eb8ae73248e00d9611298d1c4b4b0dae719fdeb9243930cd420a103a7bc2738e0a4887c42c8f25728d6c5d64ad141dc092bc3f1d0f35dbe37d303a
+DIST windows_i686_gnu-0.52.5.crate 875699 BLAKE2B 528ea431d080c5326e4c6ed316d9ea3e38b40c2e1322a12a432506a2c11555a94537661a0941e90c20eff4a9ce42c12539876dae6e77a1df18b522529928b309 SHA512 cc3e0362fb62dd5e8a855bda3be0177708ec8629ee9685f1f9aaac3f71a8cb082387388bdf49b09d3f5ee24a636b0b4f933d2c8bb75db434ee0192c8ce0547d2
+DIST windows_i686_gnu-0.52.6.crate 880402 BLAKE2B 5aab8ee07132eccb7695807eb44811beeb0657aadfb672c54e99b6ae39c067ba9b93e38fc69bb5b9b14a9759f263ccd5e301597d2727d83b31b49a409b6bd405 SHA512 a1f6b5dd23d17ec3567bc9d11a4be6f35e196eee21ca342e9b88dbaa6a5f7c46e439c834b77e724f32ac22c0d81573746b3b513a6c944a221b92b2c76fe98822
+DIST windows_i686_gnullvm-0.52.5.crate 473064 BLAKE2B abe41ee330c05ee1366b3a835d15c6db3964ffd7b340ee69d215056b0d4b65c67f2782b0c04a55db64001098de87c93e2d447e25ef2a27f2cfa6685b8cf20c88 SHA512 da45c882248070911bf55698f62c245cb081a23254cdcf578df053905adb9117454235e52dcf1dd97c0d2248f92ff1d2fd3e18844a7be8d93ba08590c1eca22b
+DIST windows_i686_gnullvm-0.52.6.crate 475940 BLAKE2B fec4fda8bb2bf319a501a22372fa642ae682e4dee3235b258a028190ee73220bfc55b3142f06249bb4579b17e5fde662bb2b121aefe18544653350d7d0fe7d8e SHA512 95f13af855d530acc0b856214478d4b11b8dbab3f8f79dd223d0b009790c0e46d096fc1773e0277997deb2d5b96c704f17f23c7df11411524629f75415dec99f
+DIST windows_i686_msvc-0.48.5.crate 864300 BLAKE2B 3d3ea8be55e2d6ced0eeda18abe1dffb925a1a78f456d683e4450d9f2fd287ad2e8494d65b2b770c677a12b3a60d10f0435e16c61880e3867c3657fd44892442 SHA512 70e2fb4fdb006a4cbd43ab2c7e940b277a15fb1790dfa2d1fc1f1fd18bead4886f6dc046e44326603e4894d988578917b8932aba5d9a6a4cc8424911cad9dc7e
+DIST windows_i686_msvc-0.52.5.crate 895404 BLAKE2B 02555169f8c5b944231a877de8693fc871ea0d7d33f52f60e164bacb35cec13d463af07c57fec4667948047cc222d8bda7f6a0be01a07e7184b69e4adc2b4577 SHA512 08c96f8e9385ac121549bae8ed228741b32004be20b2955d163a98d4b62af464f1682cb813681fa22823d20646f19335cf0a66203a876b105e119e05a4db0634
+DIST windows_i686_msvc-0.52.6.crate 901163 BLAKE2B 99ed34e052db5ba77bab240ed5d38ce450be347a794d63ec39b719304c32722c9999b540ab40abe0216318900b7412970df99dfb36d1516a9517cae0c77d1bdc SHA512 ca97913ce202d73266cf55947b868bea7e964a4516b6a096a81aeab6a60ee73867171032ced35e3afccff741ddfb2def7468343b6eceb95253e4d4f349efbf96
+DIST windows_x86_64_gnu-0.48.5.crate 801619 BLAKE2B aa7e7e6a6ff9f9553ada3a0a39a9aa798e9d995a8eef36e0b6fdb2a0db93ddecee5548970575271fe43aec74797a420d0ee231d503b5bad1bd999059261e0e33 SHA512 1d6056fae430b3d042bdff3c6217c76be4b8b9f5dada9bad06beaac2db7d7ab9b0a82e44f498ec88e61afa73e99f56d84d445dc3847732b9ce5d947e08485f74
+DIST windows_x86_64_gnu-0.52.5.crate 831539 BLAKE2B 54f84c19988addeb7cbbbddb940e430e7345944589419592b99addf9b83bf6d801b18f4e80399b85bbb0b0ccf4608e36d9a50b79d8b1d6ce2b93745856e06eba SHA512 d9bf91765d02d2727344e42081f4bcfa73be97991495126f7e633f27e56a261ada3a8b865a559cfe71f9bc9aed5b14504f89138796766937b3521009726dfab8
+DIST windows_x86_64_gnu-0.52.6.crate 836363 BLAKE2B e2335829155cdbd4a55cc9f9babc237e14e32aab97f6f91afabcdf80d2aee37d6fb4b8669aaf433ff532c85dba59b3d366c7d41b61a2f29b96f960169c900687 SHA512 c4086bb0280042f2bef9b556283b67f8a5cacddd209e1c5fabec63decec6d4fd2d6a7071407973981b98ae0c0cf7034fc612f9e70dc6d3eed9acdec771ae31cb
+DIST windows_x86_64_gnullvm-0.48.5.crate 418486 BLAKE2B 12a2199d434617c1df1a839e9f435620ad64b40c579f6d0c3677553ad7a48e5765d12c266b04946402e15c92cff2e4ac4979ce2130750ef426e2672119680284 SHA512 c016d5b5e73832b61ff67929d92fa8c16e154656294357266ad29ce1f44db4ca2d2935dba31a6b571187dc838b1d22f1e3b41fefffd1d719a338439adf1646aa
+DIST windows_x86_64_gnullvm-0.52.5.crate 433246 BLAKE2B f34328a6d100e092ecb34a6305daedf4fecd71840432f104e8707f049b60d784584ce4f02fabdd0281fdb8bc7ebed34b38fdacf3be9c8abd60084e9a4ee9fd56 SHA512 22a978c40df9705cd94e4c52f2b706e477e667b564c608d0adb144b38cb486c279c09d1eb1dd2d6c7bd3401b75a2dc5eafe0f7d642ffe6453f394d1f59483a08
+DIST windows_x86_64_gnullvm-0.52.6.crate 435707 BLAKE2B ab77dccd06328cdb00175f41cdbc120594050a9678b7f9820444391fb50aada3911a91ea00f3a6db2b4fa1820fd23bc9a007dfbe65ad41417c26ee1137ef9b96 SHA512 67681f5859e249c56b0183181811f6212cc7008d6471dad78aecc7ebe3d027686b19210b8aa9014c554410f69f913d21ce2aca928eea905eab779bea26464cbd
+DIST windows_x86_64_msvc-0.48.5.crate 798412 BLAKE2B 8abc0721e2fb337fe17c91d278947d36122d9045b839ba0cf3e690202d242265b676f23cc301da5f9d98c56ca4ecb76f7d6f072ee71bf986a1deca87020b90e5 SHA512 fa1c5cd14ca2ff0082e2504cf59d317dc4dc6f7138d35c12f95d4476a9c13d8b7f5537d0ee251eee7c99411ad31b22263171b7fbd391daa5d3ea3488ceaa61a0
+DIST windows_x86_64_msvc-0.52.5.crate 827905 BLAKE2B fd5dac198bfbf29878cb461a7338c289c9af16ea80b3e5fa567980d2a6a5ea6a1cd83729ce6fd67e4da171873083dbeb1d6e16a287620f0245201f9cb29c29b4 SHA512 81176090dc725d7fe3867e6322fdc4a4065168580847b35e6f8da345f685c4f66a81e35cd1880dbaabdd4cdc82446dde9d6a0e583cf0b7fe47dda8bc8002f1c6
+DIST windows_x86_64_msvc-0.52.6.crate 832564 BLAKE2B 8e9a3044654c6de99a9153e7cacd575474e7a8a3d883c67b02132af5d3fc99d03cd5f7a4dd666a3947451d11218e6acc6eb5e2526f012481106cc13453839719 SHA512 21944cd8e3a481b514509e73ae3f62722fe7ed380d37ea0c25f8fbdeba79174dd52ff65d898838da5df4197894b74e00f45d47489418e978753b4e55c7e623e7
+DIST winnow-0.5.40.crate 159316 BLAKE2B aae5076d59b3459c901d918d8aaa97ba8bfcc993b8484344f52e45f1f37deb96d6cd3a1663a67f3c367be2b05d633286f270274c621bda9f3ab72b98bb652cc2 SHA512 525156f08514b0110697360be6e331a68d08f0cb65ee4ba3ac9d101dd2d42a8c89601e7409bdb5652c5b05145626506651010f58a854c47712065334c61ff39c
+DIST xdg-home-1.1.0.crate 3600 BLAKE2B 9ebd05881f0b835ad8647691d05b168f0cc807ccd02bbeff4da9db0a4f6b9c5458a891d6df2867f8597f70789d7e4d49d4b81dcd266ed05d1c3d4b67ad9f11f6 SHA512 3f4d6d81b84beab8eb549e124c9dcf5dbcad8b6471cd87edcebf5c0011371667718104c7ea6eba7301fde7524137b18484621c820c75b182bafd7b9b2972957a
+DIST xdg-home-1.3.0.crate 4000 BLAKE2B 0da36aadfa518f1ecb3fe9067eb4c014689af1f76c71c592184aa4c4fe457883faf1dad757344b375a92c484bcb3d7a408f8759c24b2e7738ef4997c870fdb85 SHA512 4d090f18ea4a37199d2c1760faca11e16ba9069086245543b3390c53e74a84145144a94863c7d8c3155a9d616732a3cd8caaa1a416c43dc4d107ce045727279d
+DIST zbus-3.15.2.crate 151554 BLAKE2B 55374c8d81445c8839375cd78ffad262c5c3d1b4eca6bfffd8ac86c4747292c24adfde5e51b6f26d3ec0abbda688f842876423c27179c627ac7a2a3ee667ec66 SHA512 9533ba54cbaae174d52cfbdc34aecddf5e34b883acc07eefa11e9ed38ce4c85ccf8a71689d3cea99b7c8c240766ce4f64929de3060e9827a9c00a8605a89d116
+DIST zbus_macros-3.15.2.crate 25883 BLAKE2B bde41b12dae1104c7444f5db0ecf61c68f9fa03585bbd81e2fba12f54d98b2ec0440865612df166e6abb1d6ba2cf4627e07252467b44067874c420301b64fdd2 SHA512 a4e6c1ccf7ca6b2ae7692f18d73773027f30bc69a5ce53186c0b33c9c3f317bd83a3ec9ef0c2e30f91153278674a23bd26bbf97f592b8b82bc5ae756fa2915bd
+DIST zbus_names-2.6.1.crate 9640 BLAKE2B 72626c31b7fd363942ade39c8b688810dace1ee3414090d678f3a0eb04b1fb5e16fee93c1fe24c4abd4e19c1a7ec0b9c2e7b9a6df7454618e15cc5fe7a3686cc SHA512 9bec9a7a03d0306b05e248dc70897313a7cba1ed9db4b4b44ba3ac4db1c0ab9cf5a3ce1fda516a14badf36ba62f182b0c0fad3087842ec5942897cbd59e72125
+DIST zbus_polkit-3.0.1.crate 7583 BLAKE2B 0b190c846b465eb73ccb4b21b910c9ba7fec6bff9798f05a359daac6c0aaa3d2989abadff95165a0cc0c66600b0c0b7cebe3bc81df1dd6abd895c46ecb82d2bd SHA512 b60da3a016c304c36b2aba304f4b42b178fb7bc81adcad394709d63542a0abdb128cf831c675465d42db6369d82f9e8b71fdf9f4d3174f63c407c5437819bd44
+DIST zerocopy-0.7.35.crate 152645 BLAKE2B 8f13123c9d9257ac5a5c6954d38c3510fa658624442f7e03cdcc6db5a0977d9f26bb4e277be172b7872ec365cf6e58ac742e5578636f7698f9f37093e9249d9a SHA512 17fcb31c029ae89c01e5bae5fb2bb46bd434120199a3dc2c7fe0012dbbcfe2a0bb38934c4a7d3a4920e3fe47c097403beee554fefa54b66cb390f8b1de638d3c
+DIST zerocopy-derive-0.7.35.crate 37829 BLAKE2B badeb7fa5e0bfe93a6788d93fd297604ed31de526b121549300ead3c49d450f49265f499e2e7ce606dcce2b59dd01f7fa817b8fbb3f237475185c5b42f5299c4 SHA512 dbe23573b62a6267d7bc8c744320b75b2fbda03b908c1d175211f7394374fe182bce58021e25485c10671d726b2007f250565dfe53134d51c89293bb607e9feb
+DIST zvariant-3.15.2.crate 75401 BLAKE2B 07385b72f2acd09920cbe79050e11ccb4984923b7f8f67be6b0dccdeeb72b665af393822fcbc96cf765d4de21871ad51d2889bed11aa450da09b6a50e3c948d4 SHA512 aef1134e295bad75677bcaae627c8be486fd82b8d0a4afc85681c8aedf216c8dde54d36714eb3620f3fb3cb411f5c8f213b50a462a4ddc49cf5134a461432b27
+DIST zvariant_derive-3.15.2.crate 10936 BLAKE2B 352af2baa9af1c70d402a087d78574621d1f617a33e3ce6d773ef847b29f6d7dc921be51f31d9cee2568a08389aaee7aad55017c2f9a0154213bde646cb9d2ba SHA512 75b44b457ac1a75d99caf5ae4f405720a4b4d78f17ba9105da952c616514b1e7cd12b159f7b7f682abf8943cab80f654e2111fb612cc069ff244e1122ed96a02
+DIST zvariant_utils-1.0.1.crate 6223 BLAKE2B ea304bac65493168f1be268192829d5a666a267b1f69533a9d2da2b2d2447d7a9f0f70164d60ab02afd90134e37060f86706bc7047c23aedb198d0834f987d15 SHA512 3cf364d53f1169d5274998c3f06ef1a9371071644b256223441deb004553d4eccbb564305ddc0693cf1b7a595e8c1b989df0f8b4eb8447a72782d7d200120f36
diff --git a/sys-power/system76-power/metadata.xml b/sys-power/system76-power/metadata.xml
new file mode 100644
index 000000000000..3cb8e23216fb
--- /dev/null
+++ b/sys-power/system76-power/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>saigon-tech@tuta.io</email>
+ <name>Michal Vu</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">pop-os/system76-power</remote-id>
+ </upstream>
+ <longdescription lang="en">
+ Power manager developed by System76 for systemd Linux distributions. This power manager allows for switching
+ between battery, balanced and performance mode and handles power consumption on dual-GPU laptops.
+ </longdescription>
+</pkgmetadata>
diff --git a/sys-power/system76-power/system76-power-1.2.1-r2.ebuild b/sys-power/system76-power/system76-power-1.2.1-r2.ebuild
new file mode 100644
index 000000000000..7d13848b4a3f
--- /dev/null
+++ b/sys-power/system76-power/system76-power-1.2.1-r2.ebuild
@@ -0,0 +1,230 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+
+CRATES="
+ addr2line@0.21.0
+ adler@1.0.2
+ aho-corasick@1.1.3
+ anstream@0.6.13
+ anstyle@1.0.6
+ anstyle-parse@0.2.3
+ anstyle-query@1.0.2
+ anstyle-wincon@3.0.2
+ anyhow@1.0.82
+ async-broadcast@0.5.1
+ async-channel@2.2.1
+ async-executor@1.11.0
+ async-fs@1.6.0
+ async-io@1.13.0
+ async-io@2.3.2
+ async-lock@2.8.0
+ async-lock@3.3.0
+ async-process@1.8.1
+ async-recursion@1.1.1
+ async-signal@0.2.6
+ async-task@4.7.0
+ async-trait@0.1.80
+ atomic-waker@1.1.2
+ autocfg@1.2.0
+ backtrace@0.3.71
+ bitflags@1.3.2
+ bitflags@2.5.0
+ block-buffer@0.10.4
+ blocking@1.5.1
+ byteorder@1.5.0
+ bytes@1.6.0
+ cc@1.0.95
+ cfg-if@1.0.0
+ clap@4.5.4
+ clap_builder@4.5.2
+ clap_derive@4.5.4
+ clap_lex@0.7.0
+ colorchoice@1.0.0
+ concat-in-place@1.1.0
+ concurrent-queue@2.4.0
+ cpufeatures@0.2.12
+ crossbeam-utils@0.8.19
+ crypto-common@0.1.6
+ darling@0.20.8
+ darling_core@0.20.8
+ darling_macro@0.20.8
+ derivative@2.2.0
+ derive_setters@0.1.6
+ digest@0.10.7
+ enumflags2@0.7.9
+ enumflags2_derive@0.7.9
+ equivalent@1.0.1
+ errno@0.3.8
+ event-listener@2.5.3
+ event-listener@3.1.0
+ event-listener@4.0.3
+ event-listener@5.3.0
+ event-listener-strategy@0.4.0
+ event-listener-strategy@0.5.1
+ fastrand@1.9.0
+ fastrand@2.0.2
+ fern@0.6.2
+ fnv@1.0.7
+ futures-core@0.3.30
+ futures-io@0.3.30
+ futures-lite@1.13.0
+ futures-lite@2.3.0
+ futures-sink@0.3.30
+ futures-task@0.3.30
+ futures-util@0.3.30
+ generic-array@0.14.7
+ getrandom@0.2.14
+ gimli@0.28.1
+ hashbrown@0.14.3
+ heck@0.5.0
+ hermit-abi@0.3.9
+ hex@0.4.3
+ hidapi@1.5.0
+ ident_case@1.0.1
+ indexmap@2.2.6
+ inotify@0.10.2
+ inotify-sys@0.1.5
+ instant@0.1.12
+ intel-pstate@1.0.1
+ io-lifetimes@1.0.11
+ itoa@1.0.11
+ libc@0.2.153
+ linux-raw-sys@0.3.8
+ linux-raw-sys@0.4.13
+ log@0.4.21
+ memchr@2.7.2
+ memoffset@0.7.1
+ memoffset@0.9.1
+ miniz_oxide@0.7.2
+ mio@0.8.11
+ nix@0.26.4
+ numtoa@0.2.4
+ object@0.32.2
+ once_cell@1.19.0
+ ordered-stream@0.2.0
+ parking@2.2.0
+ pin-project-lite@0.2.14
+ pin-utils@0.1.0
+ piper@0.2.1
+ pkg-config@0.3.30
+ polling@2.8.0
+ polling@3.7.0
+ ppv-lite86@0.2.17
+ proc-macro-crate@1.3.1
+ proc-macro2@1.0.81
+ quote@1.0.36
+ rand@0.8.5
+ rand_chacha@0.3.1
+ rand_core@0.6.4
+ regex@1.10.4
+ regex-automata@0.4.6
+ regex-syntax@0.8.3
+ rustc-demangle@0.1.23
+ rustix@0.37.27
+ rustix@0.38.34
+ ryu@1.0.17
+ serde@1.0.199
+ serde_derive@1.0.199
+ serde_json@1.0.116
+ serde_repr@0.1.19
+ sha1@0.10.6
+ signal-hook-registry@1.4.2
+ slab@0.4.9
+ smart-default@0.6.0
+ socket2@0.4.10
+ socket2@0.5.6
+ static_assertions@1.1.0
+ strsim@0.10.0
+ strsim@0.11.1
+ syn@1.0.109
+ syn@2.0.60
+ sysfs-class@0.1.3
+ tempfile@3.10.1
+ thiserror@1.0.59
+ thiserror-impl@1.0.59
+ tokio@1.37.0
+ tokio-macros@2.2.0
+ toml_datetime@0.6.5
+ toml_edit@0.19.15
+ tracing@0.1.40
+ tracing-attributes@0.1.27
+ tracing-core@0.1.32
+ typenum@1.17.0
+ uds_windows@1.1.0
+ unicode-ident@1.0.12
+ utf8parse@0.2.1
+ version_check@0.9.4
+ waker-fn@1.1.1
+ wasi@0.11.0+wasi-snapshot-preview1
+ winapi@0.3.9
+ winapi-i686-pc-windows-gnu@0.4.0
+ winapi-x86_64-pc-windows-gnu@0.4.0
+ windows-sys@0.48.0
+ windows-sys@0.52.0
+ windows-targets@0.48.5
+ windows-targets@0.52.5
+ windows_aarch64_gnullvm@0.48.5
+ windows_aarch64_gnullvm@0.52.5
+ windows_aarch64_msvc@0.48.5
+ windows_aarch64_msvc@0.52.5
+ windows_i686_gnu@0.48.5
+ windows_i686_gnu@0.52.5
+ windows_i686_gnullvm@0.52.5
+ windows_i686_msvc@0.48.5
+ windows_i686_msvc@0.52.5
+ windows_x86_64_gnu@0.48.5
+ windows_x86_64_gnu@0.52.5
+ windows_x86_64_gnullvm@0.48.5
+ windows_x86_64_gnullvm@0.52.5
+ windows_x86_64_msvc@0.48.5
+ windows_x86_64_msvc@0.52.5
+ winnow@0.5.40
+ xdg-home@1.1.0
+ zbus@3.15.2
+ zbus_macros@3.15.2
+ zbus_names@2.6.1
+ zbus_polkit@3.0.1
+ zvariant@3.15.2
+ zvariant_derive@3.15.2
+ zvariant_utils@1.0.1
+"
+
+inherit cargo
+
+DESCRIPTION="System76 Power Management Tool"
+HOMEPAGE="https://github.com/pop-os/system76-power"
+
+SRC_URI="
+ https://github.com/pop-os/system76-power/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ dev-libs/libusb:1
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+src_prepare() {
+ default
+ # Replace dynamic git dependency of 'sysfs-class' with a static one
+ sed -i 's|sysfs-class = { git = "https://github.com/pop-os/sysfs-class" }|sysfs-class = "0.1.3"|' Cargo.toml
+ cargo_gen_config
+}
+
+src_install() {
+ default
+ elog "Enable the service: 'systemctl enable --now com.system76.PowerDaemon.service'"
+}
+
+pkg_postinst(){
+ if ! has_version sys-apps/systemd; then
+ ewarn "${PN} is not functional without sys-apps/systemd at this point."
+ fi
+}
diff --git a/sys-power/system76-power/system76-power-1.2.4.ebuild b/sys-power/system76-power/system76-power-1.2.4.ebuild
new file mode 100644
index 000000000000..2de923f72d17
--- /dev/null
+++ b/sys-power/system76-power/system76-power-1.2.4.ebuild
@@ -0,0 +1,274 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+ addr2line@0.24.2
+ adler2@2.0.0
+ aho-corasick@1.1.3
+ anstream@0.6.15
+ anstyle-parse@0.2.5
+ anstyle-query@1.1.1
+ anstyle-wincon@3.0.4
+ anstyle@1.0.8
+ anyhow@1.0.91
+ async-broadcast@0.5.1
+ async-channel@2.3.1
+ async-executor@1.13.1
+ async-fs@1.6.0
+ async-io@1.13.0
+ async-io@2.3.4
+ async-lock@2.8.0
+ async-lock@3.4.0
+ async-process@1.8.1
+ async-recursion@1.1.1
+ async-signal@0.2.10
+ async-task@4.7.1
+ async-trait@0.1.83
+ atomic-waker@1.1.2
+ autocfg@1.4.0
+ backtrace@0.3.74
+ bitflags@1.3.2
+ bitflags@2.6.0
+ block-buffer@0.10.4
+ blocking@1.6.1
+ byteorder@1.5.0
+ bytes@1.8.0
+ cc@1.1.31
+ cfg-if@1.0.0
+ clap@4.5.20
+ clap_builder@4.5.20
+ clap_derive@4.5.18
+ clap_lex@0.7.2
+ colorchoice@1.0.2
+ concat-in-place@1.1.0
+ concurrent-queue@2.5.0
+ cpufeatures@0.2.14
+ crossbeam-utils@0.8.20
+ crypto-common@0.1.6
+ darling@0.20.10
+ darling_core@0.20.10
+ darling_macro@0.20.10
+ derivative@2.2.0
+ derive_setters@0.1.6
+ digest@0.10.7
+ enumflags2@0.7.10
+ enumflags2_derive@0.7.10
+ env_filter@0.1.3
+ env_logger@0.11.7
+ equivalent@1.0.1
+ errno@0.3.9
+ event-listener-strategy@0.5.2
+ event-listener@2.5.3
+ event-listener@3.1.0
+ event-listener@5.3.1
+ fastrand@1.9.0
+ fastrand@2.1.1
+ fern@0.6.2
+ fnv@1.0.7
+ futures-core@0.3.31
+ futures-io@0.3.31
+ futures-lite@1.13.0
+ futures-lite@2.3.0
+ futures-sink@0.3.31
+ futures-task@0.3.31
+ futures-util@0.3.31
+ generic-array@0.14.7
+ getrandom@0.2.15
+ gimli@0.31.1
+ hashbrown@0.15.0
+ heck@0.5.0
+ hermit-abi@0.3.9
+ hermit-abi@0.4.0
+ hex@0.4.3
+ hidapi@1.5.0
+ ident_case@1.0.1
+ indexmap@2.6.0
+ inotify-sys@0.1.5
+ inotify@0.10.2
+ instant@0.1.13
+ intel-pstate@1.0.1
+ io-lifetimes@1.0.11
+ is_terminal_polyfill@1.70.1
+ itoa@1.0.11
+ jiff-static@0.2.5
+ jiff@0.2.5
+ libc@0.2.161
+ linux-raw-sys@0.3.8
+ linux-raw-sys@0.4.14
+ log@0.4.22
+ memchr@2.7.4
+ memoffset@0.7.1
+ memoffset@0.9.1
+ miniz_oxide@0.8.0
+ mio@1.0.2
+ nix@0.26.4
+ numtoa@0.2.4
+ object@0.36.5
+ once_cell@1.20.2
+ ordered-stream@0.2.0
+ parking@2.2.1
+ pin-project-lite@0.2.14
+ pin-utils@0.1.0
+ piper@0.2.4
+ pkg-config@0.3.31
+ polling@2.8.0
+ polling@3.7.3
+ portable-atomic-util@0.2.4
+ portable-atomic@1.11.0
+ ppv-lite86@0.2.20
+ proc-macro-crate@1.3.1
+ proc-macro2@1.0.94
+ quote@1.0.40
+ rand@0.8.5
+ rand_chacha@0.3.1
+ rand_core@0.6.4
+ regex-automata@0.4.8
+ regex-syntax@0.8.5
+ regex@1.11.0
+ rustc-demangle@0.1.24
+ rustix@0.37.27
+ rustix@0.38.37
+ ryu@1.0.18
+ serde@1.0.213
+ serde_derive@1.0.213
+ serde_json@1.0.132
+ serde_repr@0.1.19
+ sha1@0.10.6
+ shlex@1.3.0
+ signal-hook-registry@1.4.2
+ slab@0.4.9
+ smart-default@0.6.0
+ socket2@0.4.10
+ socket2@0.5.7
+ static_assertions@1.1.0
+ strsim@0.11.1
+ syn@1.0.109
+ syn@2.0.100
+ tempfile@3.13.0
+ thiserror-impl@1.0.65
+ thiserror@1.0.65
+ tokio-macros@2.4.0
+ tokio@1.41.0
+ toml_datetime@0.6.8
+ toml_edit@0.19.15
+ tracing-attributes@0.1.27
+ tracing-core@0.1.32
+ tracing@0.1.40
+ typenum@1.17.0
+ uds_windows@1.1.0
+ unicode-ident@1.0.13
+ utf8parse@0.2.2
+ version_check@0.9.5
+ waker-fn@1.2.0
+ wasi@0.11.0+wasi-snapshot-preview1
+ winapi-i686-pc-windows-gnu@0.4.0
+ winapi-x86_64-pc-windows-gnu@0.4.0
+ winapi@0.3.9
+ windows-sys@0.48.0
+ windows-sys@0.52.0
+ windows-sys@0.59.0
+ windows-targets@0.48.5
+ windows-targets@0.52.6
+ windows_aarch64_gnullvm@0.48.5
+ windows_aarch64_gnullvm@0.52.6
+ windows_aarch64_msvc@0.48.5
+ windows_aarch64_msvc@0.52.6
+ windows_i686_gnu@0.48.5
+ windows_i686_gnu@0.52.6
+ windows_i686_gnullvm@0.52.6
+ windows_i686_msvc@0.48.5
+ windows_i686_msvc@0.52.6
+ windows_x86_64_gnu@0.48.5
+ windows_x86_64_gnu@0.52.6
+ windows_x86_64_gnullvm@0.48.5
+ windows_x86_64_gnullvm@0.52.6
+ windows_x86_64_msvc@0.48.5
+ windows_x86_64_msvc@0.52.6
+ winnow@0.5.40
+ xdg-home@1.3.0
+ zbus@3.15.2
+ zbus_macros@3.15.2
+ zbus_names@2.6.1
+ zbus_polkit@3.0.1
+ zerocopy-derive@0.7.35
+ zerocopy@0.7.35
+ zvariant@3.15.2
+ zvariant_derive@3.15.2
+ zvariant_utils@1.0.1
+"
+
+declare -A GIT_CRATES=(
+ [sysfs-class]='https://github.com/pop-os/sysfs-class;ab63e7f638aadfaf896a02e53cf330343d331337;sysfs-class-%commit%'
+)
+
+inherit cargo
+
+DESCRIPTION="System76 Power Management Tool"
+HOMEPAGE="https://github.com/pop-os/system76-power"
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+
+ EGIT_REPO_URI="https://github.com/pop-os/system76-power"
+else
+ SRC_URI="
+ https://github.com/pop-os/system76-power/archive/refs/tags/${PV}.tar.gz
+ -> ${P}.tar.gz
+ ${CARGO_CRATE_URIS}
+ "
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="GPL-3"
+# Dependent crate licenses
+LICENSE+="
+ BSD ISC MIT Unicode-DFS-2016
+ || ( Apache-2.0 Boost-1.0 )
+"
+SLOT="0"
+
+DEPEND="virtual/libusb:1"
+RDEPEND="
+ ${DEPEND}
+ sys-apps/dbus
+ sys-auth/polkit
+"
+BDEPEND="virtual/pkgconfig"
+
+src_unpack(){
+ if [[ ${PV} == *9999* ]]; then
+ git-r3_src_unpack
+ cargo_live_src_unpack
+ else
+ cargo_src_unpack
+ fi
+}
+
+src_prepare() {
+ # Install the Rust binary using the cargo eclass as the Makefile hardcodes the release path
+ sed -i '/\s*install -D -m 0755/d' Makefile || die
+ default
+}
+
+src_configure() {
+ if [[ ${PV} == *9999* ]]; then
+ # prevent network access during src_install due to git crate sysfs-class
+ cargo_src_configure --frozen
+ else
+ cargo_src_configure
+ fi
+}
+
+src_install(){
+ cargo_src_install
+ emake DESTDIR="${D}" prefix="${EPREFIX}/usr" install
+ elog "Enable the service: 'systemctl enable --now com.system76.PowerDaemon.service'"
+}
+
+pkg_postinst(){
+ if ! has_version sys-apps/systemd; then
+ ewarn "${PN} is not functional without sys-apps/systemd at this point."
+ fi
+}
diff --git a/sys-power/system76-power/system76-power-9999.ebuild b/sys-power/system76-power/system76-power-9999.ebuild
new file mode 100644
index 000000000000..95835c477fcd
--- /dev/null
+++ b/sys-power/system76-power/system76-power-9999.ebuild
@@ -0,0 +1,76 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES=""
+
+inherit cargo
+
+DESCRIPTION="System76 Power Management Tool"
+HOMEPAGE="https://github.com/pop-os/system76-power"
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+
+ EGIT_REPO_URI="https://github.com/pop-os/system76-power"
+else
+ SRC_URI="
+ https://github.com/pop-os/system76-power/archive/refs/tags/${PV}.tar.gz
+ -> ${P}.tar.gz
+ ${CARGO_CRATE_URIS}
+ "
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="GPL-3"
+# Dependent crate licenses
+LICENSE+="
+ BSD ISC MIT Unicode-DFS-2016
+ || ( Apache-2.0 Boost-1.0 )
+"
+SLOT="0"
+
+DEPEND="virtual/libusb:1"
+RDEPEND="
+ ${DEPEND}
+ sys-apps/dbus
+ sys-auth/polkit
+"
+BDEPEND="virtual/pkgconfig"
+
+src_unpack(){
+ if [[ ${PV} == *9999* ]]; then
+ git-r3_src_unpack
+ cargo_live_src_unpack
+ else
+ cargo_src_unpack
+ fi
+}
+
+src_prepare() {
+ # Install the Rust binary using the cargo eclass as the Makefile hardcodes the release path
+ sed -i '/\s*install -D -m 0755/d' Makefile || die
+ default
+}
+
+src_configure() {
+ if [[ ${PV} == *9999* ]]; then
+ # prevent network access during src_install due to git crate sysfs-class
+ cargo_src_configure --frozen
+ else
+ cargo_src_configure
+ fi
+}
+
+src_install(){
+ cargo_src_install
+ emake DESTDIR="${D}" prefix="${EPREFIX}/usr" install
+ elog "Enable the service: 'systemctl enable --now com.system76.PowerDaemon.service'"
+}
+
+pkg_postinst(){
+ if ! has_version sys-apps/systemd; then
+ ewarn "${PN} is not functional without sys-apps/systemd at this point."
+ fi
+}
diff --git a/sys-power/thermald/Manifest b/sys-power/thermald/Manifest
new file mode 100644
index 000000000000..3a09d473bc06
--- /dev/null
+++ b/sys-power/thermald/Manifest
@@ -0,0 +1,3 @@
+DIST thermald-2.5.10.tar.gz 182812 BLAKE2B 797e7235b9edcd82c0d2cbae243e6d91e8f892eed77544424ccf249b77c89aaec542763d142e2dc3277ace0e980fb6bcdecad1155982b2860ad0c501bc0e11fd SHA512 a1265e6f7c940a0651d5652c81e13ec1d16c8836eb80622f3d51dac9c054b96d4d78c0988162cfa574578735804b3ee8d1c5eb2c1163ae516bd263ec5d6e2328
+DIST thermald-2.5.11.tar.gz 158546 BLAKE2B 8f692e79b94883a5825f2948a8b0fd58a3f2221c4e17dbf5e7330824de163684ea35c8c22cd9a11e6a4d49d65c59377f567c99497bfa61465cb97a49c323f02d SHA512 6b766f8b0549d2f9d597282f172f18e4e38053d73ae320b0e9bfad85c43e8db03d52c4cfcf4afcf025ce9beee71eb38c88c9faeabfd01c0ac28525e0eae0b1f1
+DIST thermald-2.5.9.tar.gz 182016 BLAKE2B 200609171070bae818f15505d75c5f3aefd265ff6ceca73e846b7efa25a73fc6c8635c59dcbb07c276e7547318ec8b232b00bacd4be936c3384e579c5c7823bc SHA512 0541cf490d9a97544b5c10a036a0d8219410c4451d0471b3896a62a743509cd41f5c9b862d81708a2c68603fbc0056268612d84089ef93308b91712c6d26854b
diff --git a/sys-power/thermald/files/thermald b/sys-power/thermald/files/thermald
new file mode 100644
index 000000000000..b3397dac3187
--- /dev/null
+++ b/sys-power/thermald/files/thermald
@@ -0,0 +1,19 @@
+#!/sbin/openrc-run
+
+depend() {
+ need dbus
+ after logger
+}
+
+start() {
+ ebegin "Starting thermald"
+
+ start-stop-daemon --start --quiet --name thermald --exec /usr/sbin/thermald -- --dbus-enable --adaptive
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping thermald"
+ /usr/bin/dbus-send --system --dest=org.freedesktop.thermald /org/freedesktop/thermald org.freedesktop.thermald.Terminate
+ eend $?
+}
diff --git a/sys-power/thermald/metadata.xml b/sys-power/thermald/metadata.xml
new file mode 100644
index 000000000000..81f56752b64b
--- /dev/null
+++ b/sys-power/thermald/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>dlan@gentoo.org</email>
+ <name>Yixun Lan</name>
+ </maintainer>
+ <longdescription lang="en">
+ Thermald is a Linux user mode daemon to system developers, reducing time to market with
+ controlled thermal management using P-states, T-states, and the Intel power clamp driver.
+ The Thermal Daemon uses the existing Linux kernel infrastructure and can be easily enhanced
+ </longdescription>
+ <upstream>
+ <remote-id type="github">intel/thermal_daemon</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/thermald/thermald-2.5.10.ebuild b/sys-power/thermald/thermald-2.5.10.ebuild
new file mode 100644
index 000000000000..24fd168dbe76
--- /dev/null
+++ b/sys-power/thermald/thermald-2.5.10.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools linux-info out-of-source systemd
+
+DESCRIPTION="Thermal daemon for Intel architectures"
+HOMEPAGE="https://github.com/intel/thermal_daemon"
+SRC_URI="https://github.com/intel/thermal_daemon/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S=${WORKDIR}/thermal_daemon-${PV}
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ dev-libs/glib:=
+ dev-libs/libxml2:=
+ dev-libs/libevdev
+ sys-power/upower
+ sys-apps/dbus:="
+DEPEND="${RDEPEND}
+ dev-util/gtk-doc
+ dev-util/glib-utils"
+
+DOCS=( thermal_daemon_usage.txt README.txt )
+
+CONFIG_CHECK="~PERF_EVENTS_INTEL_RAPL ~X86_INTEL_PSTATE ~INTEL_POWERCLAMP ~INT340X_THERMAL ~ACPI_THERMAL_REL ~INT3406_THERMAL"
+
+src_prepare() {
+ sed -i -e '/tdrundir/s@\$localstatedir/run@\$runstatedir@' \
+ configure.ac || die
+
+ sed -i -e 's@\$(AM_V_GEN) glib-compile-resources@cd \$(top_srcdir) \&\& &@' \
+ Makefile.am || die
+
+ default
+ eautoreconf
+}
+
+my_src_configure() {
+ ECONF_SOURCE="${S}" econf \
+ --disable-werror \
+ --runstatedir="${EPREFIX}"/run \
+ --with-dbus-power-group=wheel \
+ --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+}
+
+my_src_install_all() {
+ einstalldocs
+
+ rm -rf "${ED}"/etc/init || die
+ doinitd "${FILESDIR}"/thermald
+}
diff --git a/sys-power/thermald/thermald-2.5.11.ebuild b/sys-power/thermald/thermald-2.5.11.ebuild
new file mode 100644
index 000000000000..582ca1a3ca74
--- /dev/null
+++ b/sys-power/thermald/thermald-2.5.11.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools linux-info out-of-source systemd
+
+DESCRIPTION="Thermal daemon for Intel architectures"
+HOMEPAGE="https://github.com/intel/thermal_daemon"
+SRC_URI="https://github.com/intel/thermal_daemon/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S=${WORKDIR}/thermal_daemon-${PV}
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ dev-libs/glib:=
+ dev-libs/libxml2:=
+ dev-libs/libevdev
+ sys-power/upower
+ sys-apps/dbus:="
+DEPEND="${RDEPEND}
+ dev-util/gtk-doc
+ dev-util/glib-utils"
+
+DOCS=( thermal_daemon_usage.txt README.txt )
+
+CONFIG_CHECK="~PERF_EVENTS_INTEL_RAPL ~X86_INTEL_PSTATE ~INTEL_POWERCLAMP ~INT340X_THERMAL ~ACPI_THERMAL_REL ~INT3406_THERMAL"
+
+src_prepare() {
+ sed -i -e '/tdrundir/s@\$localstatedir/run@\$runstatedir@' \
+ configure.ac || die
+
+ sed -i -e 's@\$(AM_V_GEN) glib-compile-resources@cd \$(top_srcdir) \&\& &@' \
+ Makefile.am || die
+
+ default
+ eautoreconf
+}
+
+my_src_configure() {
+ ECONF_SOURCE="${S}" econf \
+ --disable-werror \
+ --runstatedir="${EPREFIX}"/run \
+ --with-dbus-power-group=wheel \
+ --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+}
+
+my_src_install_all() {
+ einstalldocs
+
+ rm -rf "${ED}"/etc/init || die
+ doinitd "${FILESDIR}"/thermald
+}
diff --git a/sys-power/thermald/thermald-2.5.9.ebuild b/sys-power/thermald/thermald-2.5.9.ebuild
new file mode 100644
index 000000000000..d3123286d96d
--- /dev/null
+++ b/sys-power/thermald/thermald-2.5.9.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools linux-info out-of-source systemd
+
+DESCRIPTION="Thermal daemon for Intel architectures"
+HOMEPAGE="https://github.com/intel/thermal_daemon"
+SRC_URI="https://github.com/intel/thermal_daemon/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S=${WORKDIR}/thermal_daemon-${PV}
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+RDEPEND="
+ dev-libs/glib:=
+ dev-libs/libxml2:=
+ dev-libs/libevdev
+ sys-power/upower
+ sys-apps/dbus:="
+DEPEND="${RDEPEND}
+ dev-util/gtk-doc
+ dev-util/glib-utils"
+
+DOCS=( thermal_daemon_usage.txt README.txt )
+
+CONFIG_CHECK="~PERF_EVENTS_INTEL_RAPL ~X86_INTEL_PSTATE ~INTEL_POWERCLAMP ~INT340X_THERMAL ~ACPI_THERMAL_REL ~INT3406_THERMAL"
+
+src_prepare() {
+ sed -i -e '/tdrundir/s@\$localstatedir/run@\$runstatedir@' \
+ configure.ac || die
+
+ sed -i -e 's@\$(AM_V_GEN) glib-compile-resources@cd \$(top_srcdir) \&\& &@' \
+ Makefile.am || die
+
+ default
+ eautoreconf
+}
+
+my_src_configure() {
+ ECONF_SOURCE="${S}" econf \
+ --disable-werror \
+ --runstatedir="${EPREFIX}"/run \
+ --with-dbus-power-group=wheel \
+ --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+}
+
+my_src_install_all() {
+ einstalldocs
+
+ rm -rf "${ED}"/etc/init || die
+ doinitd "${FILESDIR}"/thermald
+}
diff --git a/sys-power/throttled/Manifest b/sys-power/throttled/Manifest
new file mode 100644
index 000000000000..466cd33cd682
--- /dev/null
+++ b/sys-power/throttled/Manifest
@@ -0,0 +1,2 @@
+DIST throttled-0.10.0.gh.tar.gz 22191 BLAKE2B c301ee070ff462acd613c90525209eb5237c57e7171bf25133535f9c9a50d226b919065d8f6999f95b45f7f0d4c30e63abb5e04ec768d76b3c82dd19f092a693 SHA512 b89c467295bfc592d7b3ce0c4a41fedf436acf8067f8ef63d8596b92343ed8e04d371d065a9e35fdddba40772f12255c30960c2c46f0cbd5093bfc5e72fb4e18
+DIST throttled-0.11.gh.tar.gz 22195 BLAKE2B d45b8fe04c92dfd2903c1777a3d2bd017cfa4d4f740fa7f7dfc384b4ca902552b386f3e92112dcc57bd6b25644c9bf63a987f9ad4d7c81d3bcfa0a445c1cedfa SHA512 f60ce27d17abd6ddd7db6b77a80ac80e129fba24bbc2d21608d1cc8ed2b0131dac2f53d3fea07ac24f994850146e553c6d4c7fc0dedffee109a1aa6df8684c7a
diff --git a/sys-power/throttled/files/throttled.initd b/sys-power/throttled/files/throttled.initd
new file mode 100644
index 000000000000..efe8b6a7e151
--- /dev/null
+++ b/sys-power/throttled/files/throttled.initd
@@ -0,0 +1,5 @@
+#!/sbin/openrc-run
+command="/usr/bin/throttled"
+pidfile="/run/throttled.pid"
+description="Stop Intel throttling"
+command_background="yes"
diff --git a/sys-power/throttled/files/throttled.service b/sys-power/throttled/files/throttled.service
new file mode 100644
index 000000000000..5b7decc435b0
--- /dev/null
+++ b/sys-power/throttled/files/throttled.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Stop Intel throttling
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/throttled
+# Setting PYTHONUNBUFFERED is necessary to see the output of this service in the journal
+Environment=PYTHONUNBUFFERED=1
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sys-power/throttled/metadata.xml b/sys-power/throttled/metadata.xml
new file mode 100644
index 000000000000..37685282b729
--- /dev/null
+++ b/sys-power/throttled/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>vi@vimproved.dev</email>
+ <name>Violet Purcell</name>
+ </maintainer>
+ <maintainer type="person" proxied="proxy">
+ <email>dlan@gentoo.org</email>
+ <name>Yixun Lan</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">erpalma/throttled</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/throttled/throttled-0.10.0.ebuild b/sys-power/throttled/throttled-0.10.0.ebuild
new file mode 100644
index 000000000000..dc5d14232a63
--- /dev/null
+++ b/sys-power/throttled/throttled-0.10.0.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit linux-info python-single-r1 systemd
+
+DESCRIPTION="Daemon to work around throttling issues on some Intel laptops"
+HOMEPAGE="https://github.com/erpalma/throttled"
+SRC_URI="https://github.com/erpalma/throttled/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="test"
+
+CONFIG_CHECK="~X86_MSR ~DEVMEM"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ dev-python/dbus-python[${PYTHON_USEDEP}]
+ dev-python/pygobject[${PYTHON_USEDEP}]
+ ')
+ sys-apps/pciutils
+"
+
+pkg_setup() {
+ linux-info_pkg_setup
+ python-single-r1_pkg_setup
+}
+
+src_install() {
+ default
+ python_newscript throttled.py throttled
+ python_domodule mmio.py
+ newinitd "${FILESDIR}/throttled.initd" throttled
+ systemd_dounit "${FILESDIR}/throttled.service"
+ insinto /etc
+ doins etc/throttled.conf
+}
diff --git a/sys-power/throttled/throttled-0.11.ebuild b/sys-power/throttled/throttled-0.11.ebuild
new file mode 100644
index 000000000000..9a4b0f2a3fb7
--- /dev/null
+++ b/sys-power/throttled/throttled-0.11.ebuild
@@ -0,0 +1,49 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit linux-info python-single-r1 systemd
+
+DESCRIPTION="Daemon to work around throttling issues on some Intel laptops"
+HOMEPAGE="https://github.com/erpalma/throttled"
+SRC_URI="https://github.com/erpalma/throttled/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+CONFIG_CHECK="~X86_MSR ~DEVMEM"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ dev-python/dbus-python[${PYTHON_USEDEP}]
+ dev-python/pygobject[${PYTHON_USEDEP}]
+ ')
+ sys-apps/pciutils
+ test? ( dev-python/pytest-import-check )
+"
+
+pkg_setup() {
+ linux-info_pkg_setup
+ python-single-r1_pkg_setup
+}
+
+src_test() {
+ epytest -p no:python --import-check mmio.py throttled.py
+}
+
+src_install() {
+ default
+ python_newscript throttled.py throttled
+ python_domodule mmio.py
+ newinitd "${FILESDIR}/throttled.initd" throttled
+ systemd_dounit "${FILESDIR}/throttled.service"
+ insinto /etc
+ doins etc/throttled.conf
+}
diff --git a/sys-power/tlp/Manifest b/sys-power/tlp/Manifest
new file mode 100644
index 000000000000..99e73e53b141
--- /dev/null
+++ b/sys-power/tlp/Manifest
@@ -0,0 +1,2 @@
+DIST tlp-1.8.0.tar.gz 172154 BLAKE2B 843951699bab3237e3f3869393fe9890088da950101c13351e175287734871e1a72e368264b775a3f1c128fe8ae3225db1e4b6fac9fb72260a59a02028f48647 SHA512 d1c133faf2c7870b66a363ff84e5e0fafc6be2e36b5440336e3f4c45e68a9a8b7524f697af7a509cf724e21c3a43f976f9814e627531148e9ddaff267564d3c7
+DIST tlp-1.9.1.tar.gz 210993 BLAKE2B b6ab4a81852ace750cd6ef49b1fb595b85a9f9cafcf8da3f79dfbc0cbe09af62da9a1777e3b70ac03695a59cd45369ca11c1aa00e3a824a92683b5e652df4633 SHA512 9abb0e3fdfc99de0f3c11ee473064663d9baedb1181d2c13c7dd58362c8bbb269108157600f1f674aeb49cf9776cfdf366352cb59ac649e5093e2b843f88debf
diff --git a/sys-power/tlp/files/tlp-pd.init b/sys-power/tlp/files/tlp-pd.init
new file mode 100644
index 000000000000..eeccaaa68f8f
--- /dev/null
+++ b/sys-power/tlp/files/tlp-pd.init
@@ -0,0 +1,9 @@
+#!/sbin/openrc-run
+command=/usr/sbin/tlp-pd
+name="TLP Profile Daemon"
+command_background=true
+pidfile="/run/tlp-pd.pid"
+
+depend() {
+ need udev
+}
diff --git a/sys-power/tlp/files/tlp.init b/sys-power/tlp/files/tlp.init
new file mode 100644
index 000000000000..27b60dfeab13
--- /dev/null
+++ b/sys-power/tlp/files/tlp.init
@@ -0,0 +1,28 @@
+#!/sbin/openrc-run
+command=/usr/sbin/tlp
+name="TLP"
+extra_started_commands="reload stat"
+
+depend() {
+ need udev
+}
+
+start() {
+ ebegin "Starting tlp..."
+ $command init start
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading tlp's configuration..."
+ $command start
+ eend $?
+}
+
+stop() {
+ einfo "Reboot to stop tlp."
+}
+
+stat() {
+ /usr/bin/tlp-stat
+}
diff --git a/sys-power/tlp/metadata.xml b/sys-power/tlp/metadata.xml
new file mode 100644
index 000000000000..67faef85edd8
--- /dev/null
+++ b/sys-power/tlp/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM 'https://www.gentoo.org/dtd/metadata.dtd'>
+<pkgmetadata>
+ <maintainer type="person">
+ <email>jayf@gentoo.org</email>
+ <name>Jay Faulkner</name>
+ </maintainer>
+ <longdescription lang="en">
+ TLP is a command line utility for Linux to optimize laptop battery life. Primarily by tweaking
+ kernel settings that affect power consumption.
+ </longdescription>
+ <use>
+ <flag name="ppd">TLP Profiles Daemon that replaces power-profiles-daemon by using the same D-Bus API.</flag>
+ <flag name="rdw">Enables TLP Radio Device Wizard feature</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">linrunner/TLP</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/tlp/tlp-1.8.0-r1.ebuild b/sys-power/tlp/tlp-1.8.0-r1.ebuild
new file mode 100644
index 000000000000..4c3ac97819fc
--- /dev/null
+++ b/sys-power/tlp/tlp-1.8.0-r1.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit udev optfeature
+
+DESCRIPTION="Optimize laptop battery life"
+HOMEPAGE="https://linrunner.de/tlp/"
+SRC_URI="https://github.com/linrunner/TLP/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/TLP-${PV}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64"
+
+RDEPEND="
+ dev-lang/perl
+ virtual/udev
+"
+
+src_install() {
+ # NOTE(JayF): TLP_WITH_ELOGIND/TLP_WITH_SYSTEMD are both only installing
+ # small init/config files.
+ local myemakeargs=(
+ DESTDIR="${D}"
+ TLP_NO_INIT=1
+ TLP_ELOD=/usr/lib/elogind/system-sleep
+ TLP_WITH_ELOGIND=1
+ TLP_WITH_SYSTEMD=1
+ install install-man
+ )
+ emake "${myemakeargs[@]}"
+
+ fperms 444 /usr/share/tlp/defaults.conf # manpage says this file should not be edited
+ newinitd "${FILESDIR}/tlp.init" tlp
+ keepdir /var/lib/tlp # created by Makefile, probably important
+}
+
+pkg_postinst() {
+ udev_reload
+
+ optfeature "disable Wake-on-LAN" sys-apps/ethtool
+ optfeature "see disk drive health info in tlp-stat" sys-apps/smartmontools
+ optfeature "Sleep hooks" sys-auth/elogind sys-apps/systemd
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/sys-power/tlp/tlp-1.9.1.ebuild b/sys-power/tlp/tlp-1.9.1.ebuild
new file mode 100644
index 000000000000..74d09e74d378
--- /dev/null
+++ b/sys-power/tlp/tlp-1.9.1.ebuild
@@ -0,0 +1,108 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit udev optfeature python-single-r1
+
+DESCRIPTION="Optimize laptop battery life"
+HOMEPAGE="https://linrunner.de/tlp/"
+SRC_URI="https://github.com/linrunner/TLP/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/TLP-${PV}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64"
+REQUIRED_USE="ppd? ( ${PYTHON_REQUIRED_USE} )"
+
+IUSE="
+ +ppd
+ +rdw
+"
+
+# NOTE(JayF): Upstream dep list in human-readable format:
+# https://linrunner.de/tlp/developers/dependencies.html
+# NOTE(JayF): Blockers for these are not ideal, however all three
+# of these packages implement the same service on dbus
+# and have conflicting files as a result. Long-term
+# there likely needs to be a better solution. See
+# https://bugs.gentoo.org/967823.
+RDEPEND="
+ dev-lang/perl
+ net-wireless/iw
+ sys-apps/hdparm
+ sys-apps/pciutils
+ sys-apps/usbutils
+ virtual/udev
+ ppd? (
+ !sys-apps/tuned[ppd]
+ !sys-power/power-profiles-daemon
+ $(python_gen_cond_dep 'dev-python/dbus-python[${PYTHON_USEDEP}]')
+ $(python_gen_cond_dep 'dev-python/pygobject[${PYTHON_USEDEP}]')
+ ${PYTHON_DEPS}
+ )
+ rdw? ( net-misc/networkmanager )
+"
+DEPEND="${RDEPEND}"
+DOCS=( changelog README.rst )
+
+src_install() {
+ # NOTE(JayF): TLP_WITH_ELOGIND/TLP_WITH_SYSTEMD are both only installing
+ # small init/config files.
+ local myemakeargs=(
+ DESTDIR="${D}"
+ TLP_NO_INIT=1
+ TLP_WITH_ELOGIND=1
+ TLP_WITH_SYSTEMD=1
+ install-tlp install-man-tlp
+ )
+
+ use ppd && myemakeargs+=(
+ install-pd
+ install-man-pd
+ )
+
+ use rdw && myemakeargs+=(
+ install-rdw
+ install-man-rdw
+ )
+
+ emake "${myemakeargs[@]}"
+
+ fperms 444 /usr/share/tlp/defaults.conf # manpage says this file should not be edited
+ newinitd "${FILESDIR}/tlp.init" tlp
+ newinitd "${FILESDIR}/tlp-pd.init" tlp-pd
+ keepdir /var/lib/tlp # created by Makefile, probably important
+ einstalldocs
+}
+
+pkg_postinst() {
+ udev_reload
+
+ optfeature "disable Wake-on-LAN" sys-apps/ethtool
+ optfeature "see disk drive health info in tlp-stat" sys-apps/smartmontools
+ optfeature "Sleep hooks" sys-auth/elogind sys-apps/systemd
+ optfeature "Battery functions for ThinkPads prior to the Sandy Bridge generation (2011)" app-laptop/tp_smapi
+
+ if has_version "sys-apps/tuned"; then
+ ewarn
+ ewarn "sys-apps/tuned is installed, but is "
+ ewarn "documented by upstream sys-power/tlp to be conficting. "
+ ewarn "For best results, uninstall one of these packages."
+ ewarn
+ fi
+
+ if has_version "app-laptop/laptop-mode-tools"; then
+ ewarn
+ ewarn "app-laptop/laptop-mode-tools is installed, but is "
+ ewarn "documented by upstream sys-power/tlp to be conficting. "
+ ewarn "For best results, uninstall one of these packages."
+ ewarn
+ fi
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/sys-power/uhubctl/Manifest b/sys-power/uhubctl/Manifest
new file mode 100644
index 000000000000..58145d2a4594
--- /dev/null
+++ b/sys-power/uhubctl/Manifest
@@ -0,0 +1 @@
+DIST uhubctl-2.5.0.tar.gz 28241 BLAKE2B 419e6e0a457eae05e8a9fbf5c66377f4b809d8f1cb7cd9af8055a0f12b4b96a82a34850ef39ae8ddabf919ec2858747ed121d57850c2318b59fabfad9086bd87 SHA512 2b902b7e1df788dd1d4720dcbc630c958e80619dee3bfe4bad222a089b7f2735c6189e5e7d497ce3782e6b6ee193906ea955621cf328a4022bce15f1179b1fda
diff --git a/sys-power/uhubctl/metadata.xml b/sys-power/uhubctl/metadata.xml
new file mode 100644
index 000000000000..9e794e08053c
--- /dev/null
+++ b/sys-power/uhubctl/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <name>Rick Farina</name>
+ <email>zerochaos@gentoo.org</email>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">mvp/uhubctl</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/uhubctl/uhubctl-2.5.0.ebuild b/sys-power/uhubctl/uhubctl-2.5.0.ebuild
new file mode 100644
index 000000000000..0976ba64bba2
--- /dev/null
+++ b/sys-power/uhubctl/uhubctl-2.5.0.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="USB hub per-port power control"
+HOMEPAGE="https://github.com/mvp/uhubctl"
+SRC_URI="https://github.com/mvp/uhubctl/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+
+DEPEND="virtual/libusb:1"
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+src_prepare() {
+ default
+
+ sed -i \
+ -e "s/^GIT_VERSION/#&/" \
+ Makefile \
+ || die
+
+ tc-export PKG_CONFIG
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)"
+}
diff --git a/sys-power/upower/Manifest b/sys-power/upower/Manifest
new file mode 100644
index 000000000000..c93e395c58d4
--- /dev/null
+++ b/sys-power/upower/Manifest
@@ -0,0 +1 @@
+DIST upower-v1.90.9.tar.bz2 154756 BLAKE2B 5a749e63882cef9d3f940ac9983f367aca8114f14c2e949aaa87e2ac91fedf76c0c753a53fd68e380e755b917bb1db67b765e5794c4d9d0112fe9106bdd9977d SHA512 7308e03125a5a888242253f9260f68283f5b53677c08dbc4d7e4d48cc6f600f50f8ab161d100f152138208d5119acddc90f0f19742aa8cca58e3a0ec54975110
diff --git a/sys-power/upower/metadata.xml b/sys-power/upower/metadata.xml
new file mode 100644
index 000000000000..883f745a447b
--- /dev/null
+++ b/sys-power/upower/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>freedesktop-bugs@gentoo.org</email>
+ </maintainer>
+ <upstream>
+ <remote-id type="freedesktop-gitlab">upower/upower</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/upower/upower-1.90.9.ebuild b/sys-power/upower/upower-1.90.9.ebuild
new file mode 100644
index 000000000000..27efa4589c73
--- /dev/null
+++ b/sys-power/upower/upower-1.90.9.ebuild
@@ -0,0 +1,119 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit eapi9-ver meson python-any-r1 systemd udev xdg-utils
+
+DESCRIPTION="D-Bus abstraction for enumerating power devices, querying history and statistics"
+HOMEPAGE="https://upower.freedesktop.org/"
+SRC_URI="https://gitlab.freedesktop.org/${PN}/${PN}/-/archive/v${PV}/${PN}-v${PV}.tar.bz2"
+S="${WORKDIR}/${PN}-v${PV}"
+
+LICENSE="GPL-2+"
+SLOT="0/3" # based on SONAME of libupower-glib.so
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+
+# gtk-doc files are not available as prebuilt in the tarball
+IUSE="doc +introspection ios policykit selinux test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ >=dev-libs/glib-2.66:2
+ sys-apps/dbus:=
+ introspection? ( >=dev-libs/gobject-introspection-1.82.0-r2:= )
+ policykit? ( >=sys-auth/polkit-103 )
+ kernel_linux? (
+ >=dev-libs/libgudev-238:=
+ virtual/udev
+ ios? (
+ >=app-pda/libimobiledevice-1:=
+ >=app-pda/libplist-2:=
+ )
+ )
+"
+RDEPEND="${DEPEND}
+ selinux? ( sec-policy/selinux-devicekit )
+"
+BDEPEND="
+ app-text/docbook-xsl-stylesheets
+ dev-libs/libxslt
+ >=dev-util/gdbus-codegen-2.80.5-r1
+ >=sys-devel/gettext-0.19.8
+ virtual/pkgconfig
+ doc? ( dev-util/gtk-doc )
+ test? (
+ $(python_gen_any_dep '
+ dev-python/dbus-python[${PYTHON_USEDEP}]
+ dev-python/python-dbusmock[${PYTHON_USEDEP}]
+ ')
+ dev-util/umockdev
+ )
+"
+
+QA_MULTILIB_PATHS="usr/lib/${PN}/.*"
+
+python_check_deps() {
+ python_has_version -b "dev-python/dbus-python[${PYTHON_USEDEP}]" &&
+ python_has_version -b "dev-python/python-dbusmock[${PYTHON_USEDEP}]"
+}
+
+pkg_setup() {
+ use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+ xdg_environment_reset
+ # https://bugs.gentoo.org/935575
+ unset XDG_CONFIG_DIRS XDG_DATA_DIRS
+}
+
+src_configure() {
+ local backend
+
+ if use kernel_linux ; then
+ backend=linux
+ else
+ backend=dummy
+ fi
+
+ local emesonargs=(
+ --localstatedir "${EPREFIX}"/var
+
+ -Dman=true
+ $(meson_use doc gtk-doc)
+ $(meson_feature introspection)
+ $(meson_feature policykit polkit)
+ -Dsystemdsystemunitdir="$(systemd_get_systemunitdir)"
+ -Dos_backend="${backend}"
+ $(meson_feature ios idevice)
+ )
+ meson_src_configure
+}
+
+src_install() {
+ meson_src_install
+ keepdir /var/lib/upower #383091
+}
+
+pkg_postinst() {
+ udev_reload
+
+ if ver_replacing -lt 0.99.12; then
+ elog "Support for Logitech Unifying Receiver battery state readout was"
+ elog "removed in version 0.99.12, these devices have been directly"
+ elog "supported by the Linux kernel since version >=3.2."
+ elog
+ elog "Support for CSR devices battery state was removed from udev rules"
+ elog "in version 0.99.12. This concerns the following Logitech products"
+ elog "from the mid 2000s:"
+ elog "Mouse/Dual/Keyboard+Mouse Receiver, Freedom Optical, Elite Duo,"
+ elog "MX700/MX1000, Optical TrackMan, Click! Mouse, Presenter."
+ fi
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/sys-power/wluma/Manifest b/sys-power/wluma/Manifest
new file mode 100644
index 000000000000..5a6df99543b6
--- /dev/null
+++ b/sys-power/wluma/Manifest
@@ -0,0 +1,391 @@
+DIST addr2line-0.21.0.crate 40807 BLAKE2B 9796b9a1177a299797902b7f64247d81d63d3f7e0dcc1256990628e84c5f92e3094ee8d753d9b72187b9aaa73b7ca67c0217899f2226ebd1076f8d25b458475b SHA512 afde7660dda30dee240e79df1fb5b92d4572520bf17a134ef3765e2a077af9e13713952d52e27fae420109b40f6e24dbce1056687dbcbead858ffc21cc7dc69b
+DIST addr2line-0.24.2.crate 39015 BLAKE2B 57186d6b957542cd71a0aa19f1355dfaabe6efa19b853c42f306494728b03d1e3183efdb2d2c7734a3e2347cd83a985d004f50c097e06b7520bd152310532e9b SHA512 39cbec3c920ffc0f37584afb55e1cfe4f182e4415319a4e9bfe842360f102f7b9315f6171c0cf71ba0337123903e604096cd573fe98698a26c8eebc2376d965b
+DIST adler-1.0.2.crate 12778 BLAKE2B a1dc17786adae945ac09d3525e609ed944e6465690787bbb831a1b9d53793cba1989793d0a5606d5d23ee20d36457923d451b1b3530c9ec7072a487aa3e55bbd SHA512 7ab190d31890fc05b0b55d8e2c6527a505e06793d5496be0b3831e0513412f9ba97f8148f6f68ed0770fa9cd980a5092d885e058becf1d5506b7c74b82674aa1
+DIST adler2-2.0.0.crate 13529 BLAKE2B ec575b0bf12e321399ac3a1d59fce4ddbeabcc60cb3d7c2f362cce23eb29b4ea836451372d6d88552a4435ae29bb41d6230d55f625a4359eace680b9b771d0ad SHA512 12d12579ad617cf1a94cf95ab9d3f5db566c3b2de4bd5735eccd83c668fdad0eff134c996b73c46cbb9f932837682043878b8cc4764191625e9f93ccffcce423
+DIST aho-corasick-0.7.20.crate 111440 BLAKE2B 3f5d54fea2793ce1c2c4d5b3049b910f45a5721e7538cb2557df63dc3069ab3f6b66aceb5e9a48f21c43ae29778fd045428ea103b2a6de81659e605e30e64ca6 SHA512 ad31f3d1b3fe41e593d4ca7e721bbad62936f2e6a17fd1e0997353edb6fc906d1bef2b79f0ac7c7676abe637bbabb23ff22059947be379a2441011f8178983c5
+DIST aho-corasick-1.1.3.crate 183311 BLAKE2B 8dfcbba0b9d94e55eae739b16f5c6474baa43ee7854c5ca792f426a9f46fb0eece79cd493b804e51449181bcad338b96819fe977c02c9907654d713e26b9f830 SHA512 ba422a54688c4678fcf16e34fdf3ed06c333e6e3fc8b75af9272a215add494d43ebaef319021134b61327fd5d3572aec0dc655b714ffb3bc71ba3c265c9ebb69
+DIST android-tzdata-0.1.1.crate 7674 BLAKE2B 4385a4875aadaacd5284a9ca7d1bf8a7bf14bf8925d1563d52fbabacc3af2c1ea08bfcf77106f3648f4fa052ac295158a21e7a0131d31eb9aecd99ea4ba20055 SHA512 4294024c21ddd0090c42c8eedf708d40d917f55ad5a4cb7aa3e64cfb6551b6df60f2e36bc08620c1d2fc8c7ba7207411518ee5c8635f60ed8ad9efdd458a2077
+DIST android_system_properties-0.1.5.crate 5243 BLAKE2B 86f68ec3bdabf8c6ec47881d794970f08a9eefc7417fc8a2bf4fe9faf9bdd2a2024a94adb0cbf96673409f5fbbd4d0111a1ac371339e7a90a277b6cd5003524e SHA512 b09f51339f9772c0e2e4241b36cf51573c6b96b19ffc1fbbc94b1c1d1d2fdfe8eac3134af54174a675ab05d18ef4f6bcb2c7fcc20114bbeef6e17e3692202191
+DIST anstream-0.6.18.crate 29681 BLAKE2B b6f72cda084b38f1e1cfe60de2562e8d62ebbc352176bdf668a2d6be09349bec46d291cd475e8af814ce66def44d95cb98c325761150130752284a82d8a84f21 SHA512 5149977d6f7b5e9cf6350f1ef130caa3ff46c7e78976358452a185ce196cdd77fee48a3a9838f434ae6ea9c15b19f6bfbab156edf819f81179d6774318f08963
+DIST anstyle-1.0.10.crate 15725 BLAKE2B 36e656bd8f9c584f11fda5cfe0c2e24e8426b9e1b602aad34ed118ae6950a55440e292d2e0ff7615f5e4f466fd06f07536be198a59506a587d40cb0c4ede4f80 SHA512 621e7a89fad13db985f07375d316cf8efba57fd44ae18628a8049a65aefbaef27949f99317872e91e0922bb089a00234055199ea3167f80ae03d00ada4f75dea
+DIST anstyle-parse-0.2.6.crate 22343 BLAKE2B 85eba405dc5cf806283cf442984e86583dfe6c681f849eb7a347b7b67bd2b6f692e84fc9b5bd86486633cb2f05960ec16e8778300df114ae6676da43442db9bb SHA512 e28c9818afcda0e9b84c205d9c6697ce64cb06c21df2c3666869c07d66893105d9c5e96a27fcf2410a09f6af00735252e22b5c7d8c6cb3f68c4a8f376c49d396
+DIST anstyle-query-1.1.2.crate 9969 BLAKE2B 179b8dd6dd709c2ca67f4eb5c9a502b2867cb6744a39f824c4fdebedc67c6c3e07d107c7d817e2ffb589d13b7ed4900cf9653ddc0a43663217042ee92ce8c9da SHA512 26069d936c4b1fb09bc65cda0253fe9be8fa4e96c0821f980c772602b4e9230035ec8c9d092ef95e0a0354ac559f8d25f57a14c34086d4d241b5fba688951837
+DIST anstyle-wincon-3.0.7.crate 12400 BLAKE2B 2023529aa12ebe1b7073a88180ac7491fbba7e8556ba20061bec22b1db9d0f3da058faa5bd7f499d8e5da18422dec7e7648f3b4acd7b4a2d2064824f1b881259 SHA512 782440c1093235ad481f0b854f5a3d3acb7908d2e5ddbd4143139b8bfd0faaf2f9816c1034e760d9261a233e6d645098cd5a594064f190662908eaf79972c903
+DIST anyhow-1.0.68.crate 43882 BLAKE2B 0ccd8fcb746344dfa85674fa7c95aa648aed8d40134b8c1c1c0852f6c7d22f5622ca1704ec65c254fc20946b1733299e1517364d74f726952d5a951ef89a2fe5 SHA512 b8cfc132ebeac823edf18cba7e335d1939fcbb095ed4ea859f4dc4cde5b1ff35fd68f0743577c69085f74f019768a3359936bf6dc1b2aceb7e2b28ace7f74a0f
+DIST anyhow-1.0.81.crate 45142 BLAKE2B 9b8678c5336fe5fd2823c58eae827f7aba726e12fb6edfa958c6e3b38a96dc3310bc8d044ee2e9db0bc611548f0be9a7b664b75321bd0b8a7e168d27dd3d7e78 SHA512 3d328c6b45a4780cfb6fc8daa5581cb5e45b230cb5f55837b0fcc8331c8d53630950c281115c06b21e655821a46d360c4aa667cbb24e87f3a534206361b08af5
+DIST anyhow-1.0.96.crate 52168 BLAKE2B 86796b29b2d2003a614d8e3de91246e1220414dad89012188645a2df1757b18a7f9a49358b6c7db2622871fefd17b94dcfd76b0e24956a6ab8a2bfdc27f3d09d SHA512 673b083ba8ca51865d0b1c41e2ebd410039109db71d251a5048f24bfe009a4ca59f80f72b1b05c35155e523c74e326e349fb9c6f2654b5893eb8b3d50460fc8e
+DIST ash-0.37.2+1.3.238.crate 433404 BLAKE2B 727253b455d34164ca9d90e8bc4c3c77339cfd72b8ed6330edec3a10e259c1b258b29a8894f2f70f477623ac89dfb42e786e37ebf1380ce717f0f2e3d63dff5e SHA512 d135d03da45e5bf61a3453f6a6ed0020fbf9ffe29abb328735cbbeafa966338d501b097dfb7ea7aa04b15e511a36d310e67f12cb82bac32dd0c4a637bff81bb0
+DIST ash-0.37.3+1.3.251.crate 449524 BLAKE2B 0f21db7c1e8290b3cf5ae8ee064dc6905fe75d9f6075edf2255451a3cb9c1e7973c6555be6e06a3abe7d29a64e159cf9b6cc9c9ff9808a6fea82216dee41fee4 SHA512 7967df0dbe734d5ed7b60fbaad7a844e0c0c39792828f4764580fdadc3b38d631d4f1a62ea2cf4b08e3a6c0c0f89d771ed9aa97241d6f86031a9d9cb1ef140cc
+DIST ash-0.38.0+1.3.281.crate 457775 BLAKE2B c9216b068ef8a76e303881f1b42ca5cabd5f0b8a1297cd4ccd665e84a276f352e6155644eee28e7ce6637dcee347c54e447b452581673f1ab859aedb051e1454 SHA512 9f6ca2bf4fc5df43091c2d41b9c54d26d9b1682ba618895d82106c61e3ea3281065d3f0f50675f95d2db7846277144c57b3c4aab8e4d84b9536ef44ee89b5984
+DIST atty-0.2.14.crate 5470 BLAKE2B 2db856a9e898a430258f059aeaf7c844a153293e8856d90ac81f7d91a888c89198768ad5cb09303c23241fe85c560a55148fa56a303651a82b0edb895616bfab SHA512 d7b6c4b9a0f898d91ddbc41a5ee45bbf45d1d269508c8cc87ee3e3990500e41e0ec387afb1f3bc7db55bedac396dd86c6509f4bf9e5148d809c3802edcc5e1d9
+DIST autocfg-1.1.0.crate 13272 BLAKE2B 7724055c337d562103f191f4e36cab469e578f0c51cc24d33624dea155d108a07578703766341fd6a4cc1ef52acda406e7dba1650d59115f18261281e5b40203 SHA512 df972c09abbdc0b6cb6bb55b1e29c7fed706ece38a62613d9e275bac46a19574a7f96f0152cccb0239efea04ee90083a146b58b15307696c4c81878cd12de28f
+DIST autocfg-1.2.0.crate 14808 BLAKE2B 122327d6ffd32e08dc9fbdb4dcf69128b19d56280f9d934311b946741003b40571cdd1f3ef54b2be02c8dc505aea11c962b244d33a92206bf4ee8f6b2b9da432 SHA512 66cbfd13e33b36284cf4c74c8d654f93adcc45893d127d9aaa4c1d183e47336096e72d74e7c17dd481fb7a98931ab6cfec7e4d4165cfb491861d4e3ffe2416fc
+DIST autocfg-1.4.0.crate 17712 BLAKE2B 7f7300439899be03d001dd32b7e797bc4b9a58103081b6f7353c4b5897813cedf870b3fb1fa25d320a75326b334b44d8287e8603de34fc560d0b567143915cc6 SHA512 3b5e7c30bc73e105e4bfcab584c24fc4016db41fac9c356c6649fd841051704bbe8848e09546eb50d7c1f18ea8ce1cb72fbc268a620d5c609b3472114b5be73c
+DIST backtrace-0.3.71.crate 86553 BLAKE2B 15ed93574fb9e8e28d5ad901bb1f94013b5fec7a79aa96d17f13f6f11a02d29a274ec14ce51a9f515574839aa41232e5aaf6e6fa3ad9c0483591055bd0a78c8a SHA512 5d9307757349e860fb4cab7e9ba1c9d0f1faf49ebcd935ba879b85fed2a9812786c7458abb59a742842a0796fc29ce9921cf575792402486ecdbd9a2568cdd89
+DIST backtrace-0.3.74.crate 88516 BLAKE2B 594b537f3860560bc790d04d72a91ea25bbf5f2494b9c43377129a8021c02d9c16471a223e518889775a816c45513b14bf097c453846b62302a58b59753a5fcb SHA512 00cb2be0626f0bf6ec8b8f525bb129d3ac74c386c5e46ee0f343edb78c863222521f8132876057a5a1facacf40792dea51f2f20e986b35f3a85bca3dcf5c1520
+DIST bindgen-0.65.1.crate 213479 BLAKE2B 91f143d6d3ca37990ff01a9f11ba43fc7808210f47143419abd2de1d4b38a4855a806476b5607aa140de77b83db1649e318f6f904338c621cb300a53a00b1b01 SHA512 f3fab122b02abe8eca4438edb220eae0066a43f6ff4459aedca6c6261e769bdbdd6c820e5b29ddbc5b5cdf8ec0bdac1a4bc374fae2772117958e7c40bc22e8f2
+DIST bitflags-1.3.2.crate 23021 BLAKE2B eb990bb27b2bdeb66fd7212ce582cb36e1c616debbac85df642d0c82b25439e6bf9b1e811fac76b59e58ea3c1bbea6170d03a61e8f9a395e4334a0e2e2987eda SHA512 3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62
+DIST bitflags-2.5.0.crate 43821 BLAKE2B 2d2a78b0a19dcb39580e6f73ed6c468b0626043010b34661084944c83561fe49db24bee1ab57fd692d57617be6506d529e095aea27b753a77e26d0b1ebf7ed78 SHA512 75d7a89e53e5e7582591932bc430e6a1db7ed0f914ded6dbcf957125be52975598df7fee14ef816f66544432ef0505f0a081f3794d17138ec429e283fe14fcf9
+DIST bitflags-2.8.0.crate 47482 BLAKE2B cfa5dac5bb9fda57a5887773399d2507e83ed30fb0c5a332c48905f912c9b8d3c5e6493a9626a73459cb67d63973efff719ab4153a14e774ff4a632c96872ca2 SHA512 f1bc02c858432b0e1fc3b10f239c5886e51d620d55a75521bdf35c8e8f6b6cf8db97e90e08eb2e96715a2c5b28858af305eb266f1ce0c90f9d3945d6d9bdda8b
+DIST bumpalo-3.11.1.crate 81207 BLAKE2B ba76008fb5a975aca12b6f893779e18dd353a22a42cbbeecd5870622a7cbc0cd7e37036af600c570b8a55f26ea8d07f44a9aa1a8373d977b6f75bd4276730292 SHA512 70e90bee1fa4e783ff5a3b18f192b9347bafab7daaa907e74913a415a66c29acfb073fcfb46150801aa7649ab0d2ec8a610de239551565dd167bac72ab13a9bc
+DIST bumpalo-3.15.4.crate 85028 BLAKE2B 9ec98f430fef4e9b59e61d413b3703430f91bc818f3294aea7416cf8a35e0606357bb5b4d1edebe590f07fb614f832da16016c8530ff39ca853aff1d1369cc60 SHA512 59ca9f8e6b74bdd95b9b4ad1bff3bf4be46dacedeb1eea6196a65dfb0ca7b60e86ab6c25d0f91dae3caecd17ab73c48f953be0bc24bdc0ceaaf4c1726b9ffdc8
+DIST bumpalo-3.17.0.crate 91975 BLAKE2B b0aca1d64373425384eddcdf8d60dc977058a3d1570451de944ce48aacdb984e73a29ab64fb5b23413582d57a8e32ad8155f6a1479eb00f804afe9d8a9d9e163 SHA512 b2acfb463aa705b9c6a9555858b84f565234110988c880cdb761ab8dc87892ee5d22e65fa935d2cfef9d58869fec0ab64d810b26bf122fdd89b454b6ce65ea1f
+DIST byteorder-1.4.3.crate 22512 BLAKE2B d39c546ba7346df315297fc53da4bfc77ecb1f38567ddb788549ee31cae2719a8bc0b7d1f1705abb3cff033aa57af004987d90748f5a31765273b3223a011c0d SHA512 8c8000eb8ecf40351c9ce36a3a8acd7a02f81786d1b11aab85adfeffa0f2267ed74df29b2ca5d1d38128484d1d3cad2b673aa0d0441dcd0620dfd3934bb888fa
+DIST byteorder-1.5.0.crate 23288 BLAKE2B 7f85a7948406844070a2c8202e0bd52f73b3dfc7c666a97046128044eb9352195afb80e2bf894c0742ad109e4473339de1365d09591de70dfec6c8c02a8e1453 SHA512 96caf981177f6ded9f27f025922cb94eb0cd9de5303bd91680099912d922092e77b7361efa70011e84f1595e443193e4f1b354443b9980c123f6ae573b236f7f
+DIST cc-1.0.78.crate 61375 BLAKE2B fd4765cf5ae0dc7018bc6b56298cd0fa9bf6fe23545e845670d98ce73baee55354e77c6d87cf047f10b074f3d742deca8b5631a250c69b347b4a1fc653965d43 SHA512 b85bec4c75cb1d1e252419052e9dd22b6892e54ea36195ff483a04f785b5b103e82b30b778459fd45324ffeb2463aa4f5696baeff2779c25ffe9f65eb99ae893
+DIST cc-1.0.90.crate 73954 BLAKE2B 840417889519dec96a745c49ecbc8b0d3da9b37a4b6b0165ee8983c07b8150061690b34409381365ae4c70c5780923d19cddce29d5fbc370eb6b6fff29121436 SHA512 349f3c3f8208632f8754cc05d70976eb14f3f13a14d59413994c656efc36bb32b7310adc7d5f3a6745f15e0aaa88334644c9aba8d29fb961215d74bec605307e
+DIST cc-1.2.15.crate 103196 BLAKE2B 860665bb58cea2b353c4fcc860a20a0947d05b2e5ab694b96ddb1e132aa32e49d4362884c973590cfb9d6004de55894713ffc90ea3e367e0c34040d08ec0b6a7 SHA512 c8671cc57192cca08601b596b53efd7d37e11ca29c542b2eef2d311f4a902de0cf4c99ee29a1564ea4aca318b7ae4a590035ba7b52b2bcde5c42ff6dbd525b2d
+DIST cexpr-0.6.0.crate 17966 BLAKE2B cb46f066eb1f4dbac00ec86dc3e562db7ee8ea5ff17d16a60004fa020405e455b8aeb3d001f669cb33d1b62525bfd04ec657ffca4ed44a83af4a5e75b2c820e3 SHA512 766bff7ca7f9bf0885aee6f014bcfc084e7fdfcd567a49443d5340acfe8f257db109de17b24588504fc35c53f2d4303e2d22da21f73669125cfca984950cf886
+DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff
+DIST chrono-0.4.23.crate 187259 BLAKE2B b4a7cfb8d1921d396c9e2bf350e6c61d04480a78c170d153e525ff581e8298936583744b6c59769774fdb8ad433269d01ad792f967da96e6c19d33460de937f9 SHA512 697a78ee83eaf38d83011bdf2086b3149b830d3d270e8414828b98ed2426063df43ac6eb4324f2dd694662afb86e6e4f005dee6116dfdd97adaebedefffd43fa
+DIST chrono-0.4.37.crate 234441 BLAKE2B d1c10bcdf33324f1dbe9a79cd8c5a70b8223ca289753446aef778c93bf18863714ab2ade88f1e67432d1451b0d408065325a7d8dd3578211a0e39caae733ceee SHA512 46d77f291c7c60a25d0c06ebbd89935ef3ae1b736d504b8faf39aad8210a9fc68b45b5afb024763979f666308750b1a662afdabc36c59974567cadadfc17fcbf
+DIST chrono-0.4.40.crate 229824 BLAKE2B adf06e469c3294ce5899d602c42e6d25d63c7e8518530b365e926e402488eff6dd6f00abbaa4bcb693d4d2f406e8d2c71f2067ab09c2ce96867a09268231faa9 SHA512 345542dba10aff787c0bbe17e0ad1be7b279fe2b58763aca289ecd2e79ee1c518f9bd007ca3d89080191f272611776bc368cce9b25206b96bdbd710201cd0f3f
+DIST clang-sys-1.4.0.crate 38679 BLAKE2B d15bdae2142ed26b4f6bd037bd2062e8c4b7b87fc5b749b872a95ff1952d000066c255aa0984e5f9c4a5c88066db4a20cfd048db4ba5a59b331d5ffa5e9a281d SHA512 062189bb0a341e2e85de4987f4b564c1fc69e4005c9c42cfedb61dee5f48db9126a8114d1d97be1b9c21b8c885243751232fbe8cf532e1d2be593308fe45216a
+DIST clang-sys-1.7.0.crate 42088 BLAKE2B d1ed314a910c1b676eb780fc1c96f5ac391217ec135480d0a91b11d6f447ad06484b48966ae99115e35d921a506caf6aa7ffbc4ed86aa64367dca321678cfd7d SHA512 e544984d5bd76824ea2093f43f98b59a99e1ca8a5de40e49164b870ed4a91a530f3492faf0678190b91e74aa5d122bdbb32c649998d0ce24912dfb0b83ed6b81
+DIST clang-sys-1.8.1.crate 44009 BLAKE2B 9173de6dfbd3ef9d5d1fdc559700cd3a52f95cd77302063a97e8cf311a35825825e030b47f252c857853663ae8a16709e1f7bd0c608d67c2a74eb36ed588e778 SHA512 a68c426c20110fddb8bba07d6631517b0528fad45802e5a34a22561d7e6dad82dc5001387019a03f275e9a671b09ee0a06b6e86793c4fb4ec655700bb0f5e125
+DIST codespan-reporting-0.11.1.crate 48963 BLAKE2B 39deb717a853ffbe3585e20a67fd7a75b62e2d796a66b5004876501fd7476acde9f126804f2ef6220ebab66821a3ccf058d544d689a2705eae44285f34b510cb SHA512 0869789f5c50d3523d3ee16a8fe64756498a13704efbe82bb0845eaa87c7b6b1d075b3b6b80567cd9fce6cb09c5179e9c07e485fd17ce56c8139ade0f8bc6844
+DIST colorchoice-1.0.3.crate 7923 BLAKE2B 7055fe61677143f0d4445ed5f6be2cbc284c155aa6ceac04df6f3fa2563a225e440ba708bf40e298ad09775ab7c7e1842b5f6dd78422b06dbd1250908e3227ee SHA512 fc26696189d3935d5510a1237504339c1f354d03ffd3b4e830b7080335aa778bc72787ac5fa9a67a731b9bde2788da778d497f2ef97ec68bdec5145fedf4cd14
+DIST core-foundation-0.10.0.crate 27023 BLAKE2B ba4b8e42aca4df30627eae9e8ce8ee9f4b512d51141338d284f9b897ee944619d7f63b0bd9318263eb5f5c1436ca0fad8a208c8005620779865c4f4e653d1fbd SHA512 771a34b79519c5a51e3490589672ecf3eb019d4eb28db9d19c88bc116632dea96ebb2cd04e251e94dddd0876cb8a7f07ec65aa5143f7f8aaf1661caae052a94f
+DIST core-foundation-0.9.3.crate 27059 BLAKE2B d94fec51b1b1055c285609f4bba45c5169a8cc775e251eac7fbf0da7ef894e1be9ca9f4236b82b67be0610bdf811366e0c6fd3cdb671a1e83c49717e2c5b2d03 SHA512 de07967c4f5e2d2e730b6f21984c228dad2cb2f55187f13074a2200f4ce9f906763ee818267a9c67ea560229db7363473b230670a6dbd224fc335f32ba03d072
+DIST core-foundation-0.9.4.crate 27743 BLAKE2B 5b695e671cc833170bc6bad436b2d0d8d386ffb8181bfcf2e92a1d93cee67c3ba1768cf57064fb91b0897c6aec1be7db40b5bd256a052c1bdaf872ec19f6e15e SHA512 82d0878a1b9e3d56b3666fb5a78f92c6f7806d01665c242c06a640bd6b1fd36260211e92dc05e1a16d1430622bfdd650aabb0b5bd8e5592f74abdcf412448e33
+DIST core-foundation-sys-0.6.2.crate 16204 BLAKE2B 32766d4b23a2b108777c57b2115cc718a0cdb42fcd2e3973a0adf944d326e0796a6953756c42140eb4e6e96a2609bfb41f84a54c59b4b840d7213f3c5dd4234e SHA512 bfbe4e77a5e2644952c66a2afd21058a07583d3a1776c34dbfc316d159289073d92b8672eaab2f39fa46c48cd7f22d88f0354f02b3208482d700473a807ebf07
+DIST core-foundation-sys-0.8.3.crate 17519 BLAKE2B 4ac3d9ab16753dd995abe82f158d460d0d22184ab55d260e73b20305cffe4e03427dabfe0c8be968b6c3ecd348be2e17154ded7c9bbd5a95334ff266fe83bbf7 SHA512 a3ba3184cef65dafe8318c4db7e59eb2749dcde7b2370ad20272b0735ded0032daf2de3fd0cf55eb48448a335f5b81e8e745f2a647f9a43bb85946ce714bfd82
+DIST core-foundation-sys-0.8.6.crate 37629 BLAKE2B 683d5a84b6a3816317f87359532a8339f08bb4043f1d70a8588636eb5dbe6ebb3843e2a12d9a7e5fd1637a912c52a5aefbb8d44796330b09593e7adefd3babd8 SHA512 24a8958cb16b081862a9000affb0147b8b3be1a664b834c3dbddbff03e709de3f4060ff4800e5a35453f4392ccf33168e8b864be71b17be38cb264a39b915100
+DIST core-foundation-sys-0.8.7.crate 37712 BLAKE2B 0e1dd99a5bbb0fe92f55181a37426f6e86445cb20e355f553b3162c88ccc075644461731a0cdcd93dcca65b6cef1de62b409afbd73ba3070a199ab8e7422dcfa SHA512 17492d5314db03abdb3b1998bf0c396ec8ed0f83bc978ae22d6026afdc86c50b58cbac073b3a0d97b92da7e98be11302faf1249d24313494bc058add4f4cb63a
+DIST core-graphics-0.22.3.crate 29514 BLAKE2B 6e89281ea95f323c60d1948aa2ebc808bd886e4f5f6bea8dc6c79bf8e290480cde7e54bdd4368f2976a5169948538a8b65233eadd619e279eb9c2c866426e9cc SHA512 94f0c5d55aeebfe6e6e8b335f6789e4f980dcfc2206c44b888d984747fea0f67e43df26acf8cc0d418cafa81ad1435ab584af05657c613b656bab4ede80b4557
+DIST core-graphics-0.23.1.crate 30714 BLAKE2B 291e5cc4cfcf1a6507dc0e4dbeb304fb445530c60d7bef79dbaa53524233fc453d1ee977e7ed43513319e1d5641e756749f43b536535fee730308322190462e8 SHA512 2b0e2c00900d4a9e09c718197692ab2aa0d009a43fc03a30075eb33ed7648f6ef640bc2d827fd9cf17f752b810eaecb77107096aeb1daa0348b3b7e17ae47fe4
+DIST core-graphics-0.24.0.crate 31332 BLAKE2B 572eabb70211df9ff50f3b9b2bb757dc41b61c12390489c18ecbb899007525ac092903860622763346c6623bf412a553a4da76e3a9a0e899d965100cabad83a9 SHA512 f347601e9b853b503cd08e633b87767d13ca9e104d1ffb02a07ee8b1de05136e74c897aba5ff788586e0113b5b2208ed8b8010f8b96392ad9ed3cb2a56011985
+DIST core-graphics-types-0.1.1.crate 2530 BLAKE2B 2340e9e0147a904e5b439b3e9db53937347420d901f17677e952779680f5294955f4578273989237adbf374b13dc24d6f6efa293575ac1a449bae2bb6ce37a7d SHA512 bacfd01ad05b21851c0cf84cdf9516f63c542d51c2ee8fe2692c557a474ac0859c4ff6f0c35df68956c0389c5974ce09647a744632fcdb2faa13fc7d13cdb52a
+DIST core-graphics-types-0.1.3.crate 7063 BLAKE2B a2bb17838745a28a59e85d884ea60069c33f548d41f98548956eaca4178409c74556039a5a731a9c1e9f26de8c69d45f458a90a3f7b358065202b660c62431eb SHA512 e56b96662fcb892b73bae3292478a9ba4c7e92f5967b6438546f229fce115b09f997734c40f8f776be6ede2c6512e837632eacc8ec15b5c3311f9f24fd22a397
+DIST core-graphics-types-0.2.0.crate 7098 BLAKE2B f00ddda48802ad0e4911b2f3e1e4267837fb306ebf32bd7701534766b625988c6d8cb69dab4a3e7b0bfee1eb5fc02c6f05dc60d511e0879f8d7049160d79cd1c SHA512 2674dcae97efbc52281fb0f8461489ae5932abff40ae18f1aa41f7865b450ffcba9b4710a2a4137835cc7b9475fbb6392330b6c0c296c9a84f3dab197f605e08
+DIST cxx-1.0.86.crate 589122 BLAKE2B 22a18d62d7e2a4793b659d1ec330c7e5068715560f5a098946f1a59e8c76243cbfbcea42d5a9e68e81ea9f26949ab9d12997d7594832e8b670caa07f220d6087 SHA512 927fbc7ab0eae8c4a87c974ae0cf5a34dd291ca869f1476bb23cc7afca25e131f5f0417a3b901d424d25c870f2fc9bee5500169074ce3a040e08340c3a526e09
+DIST cxx-build-1.0.86.crate 84425 BLAKE2B 91a7181e795bcec54bf707f97f2f1e54ea4b53106675a06163920424781da4285cea381ad4bcf01304766fe4db494213b63f047da8595030e43eebf6d7e9e229 SHA512 0be6e1e0b2655dcb8995168394baf6a68be26f405d4797328251e7c53ba31de14c8e68a8eb83b9b3b3a0e10fe28a989de5fc97e783572982ebb5af28152851b9
+DIST cxxbridge-flags-1.0.86.crate 5251 BLAKE2B d614de85cbb6b2eed683295a64b9401496277da847577a876e9102735a5121619c8af8eb33a77aad15a80397161f3dd9a2a3f5b2d5afb91172211008819c0beb SHA512 1b2364c9651c4782fc7b05e55fb98873a48d9695bbba73c6d735113e25ebc6993bb9e945e954ff27d183b15949aa807a13c96683ec66bbfd822c7716c1ca18bf
+DIST cxxbridge-macro-1.0.86.crate 59474 BLAKE2B ac92736b9aab76dcd8cc63c65b8f143001dd1ee357bda5c4bd83ece5e02ddf95b84e99279267dff152e9689e77dbb6e37b3ad8aac04a83abc7d78e9c9d8cef72 SHA512 9fa823bd4a72408316ac6ba40020d07199c48d8ec635c515ad29f2c6700215a6f58b2e380a40122e2e8f0630db1cad3fdda3e6b3b249447450977b76f4804aa6
+DIST dbus-0.9.7.crate 104206 BLAKE2B f08f72170fbf9af3e525c20f4f11de64368e4a5d010571bc2ed9985c13353d99466f7e98a39ac949787ee9f4d10845d6940d9dbeaf1fae2122d49eeefa5306b1 SHA512 c1557d8be0c5c5623ec6a3928de310c80eef2cdf976d9fcbcc00f08a532af5b8d530f8ee1eba4de12f2df0ff7cf4d21323dfad76be82eeee2f386173991681e5
+DIST ddc-0.2.2.crate 8739 BLAKE2B 7ea6234f7473e4fb7a15339aa336d14b679ad988dee93e89cb319e6795f8445ae921782bef8b7bade373c98d51b5625f20e2649ffcc1a27cb6a282cf385d5bab SHA512 5264edc0f45e278953290700888eba2c93e6b6ec51f5adb609e30ed13342acb975be24b8a7e02e786f467c6eb10db52e4eaf2dd3924219d85f2c2a83552e2569
+DIST ddc-hi-0.4.1.crate 8635 BLAKE2B 70093391bc9dd585f7f4801c9ed488c38482869b992fd929b4b9a6f8f463dba7fb457c412e92a4dbd80838a10f8e56a696bf78b4971a63a5c18621864cc35ae5 SHA512 86bf21dc7fdb0a023c896221a6c53d69bed2132cd4c8fea2a0037abfaae371f2cd8b7d6ac2e6c07685615b78a8b2eeeb567df7a9760b9a114607bf46acbf4295
+DIST ddc-i2c-0.2.1.crate 7471 BLAKE2B eda541907ebfae04963f74821e3eaf19074d56c985f09927dedf5cdfaa7f789d9f59758f221ec1463595a80b3a1fbbcb000cf9675cac26f052075e3b96001a64 SHA512 9c3864f404dc7748fced206080eb274a4e733f2195802115b6f17bd4a11cc08c3e8cfbe45b1c8c35fda094903e3ff2df46f1571618b5c9827ed5e8db8c418e7c
+DIST ddc-i2c-0.2.2.crate 7042 BLAKE2B 7ddbef328fe309188944919d3c644c81e7338bfa3c95fcfcd6207deb4ec8ddb2c6acb1a2e04d27eeca5d060fbee97027572e65afbd1ad39fe009615f271fd8a6 SHA512 6bf593532e980824a77e95ecc71c79752f65831ad5669af5ee8d45c1400d9daef9e63e1b57e8c3986d32cb5701eb7e11045e89ccae56d6ceb40a184443ca6dba
+DIST ddc-macos-0.2.0.crate 8474 BLAKE2B f2f42d462daee708054005d2d19c9e12ffc562c24d3420f3e07c0b41aacefabfd19e6ab6a3bd18d25603a13fbd19debeabeec0bb3c5e442e19455b46d7af115e SHA512 6299abfb784e48599a9077c8c1315a20471ad01b58b2055a7f558d06976ca624bf7b68985778616ec369f8863ef118346920f77dbd43be5471c405c118497b54
+DIST ddc-macos-0.2.1.crate 11104 BLAKE2B 8ad46025630d3a3592afbd7edd5a8e65ab065852f98deb1a165a667d298f5ff7aa3435d6c834d4b7aac5fdac874575047fa69f692965624c1d900b4ddbccba72 SHA512 faced6bbb26c3b052792f0d3d8dceb166994c190f2270e9deeb78a43a4210a6ed2a6482c1a030346b1692911c843b7a49b4229bf808f7b7a1adc26fbfccd539e
+DIST ddc-macos-0.2.2.crate 13298 BLAKE2B 7a63c87d3a6fab83d63e378e924da64b27c08475432ac446149d71f66330e6f638c67b74d6bd0cbd36921a8f32d2cdda0aa6af364ae87bb16a59590089c449ff SHA512 38b0da71e5334bd3bee203762c967f5b5d44b736ce42b688fba2dfbcb968618c554d10f490d50a95a62e558b37dc361ffe04d4a339f79baf8088a77d3d97cc78
+DIST ddc-winapi-0.2.0.crate 6958 BLAKE2B 483eb57d5b47260587717af6460674d29b08d39ff423a0c75df80d89b9f034169b2f048ea7eb3db53b9a9542b5880e869bb2fd031bb5d8fc6c078de2972ad6fc SHA512 881a2895e41fbef85f3d5cd8a3bc55b1f34af405460d5c8dae065c866a1b77126597953d75d343f8ae35baa0cec7b7670c7c2bd18bcc49db21a218c531cc5507
+DIST ddc-winapi-0.2.1.crate 5378 BLAKE2B ec241bd7beff0d35ef508b86c09ff75fabdc036612c7a0eb754f06022fcb25c14ad767a5738f6ff8bc5924e961c84a14a3bbcefdece4bfc0e67c8efb643f3126 SHA512 02b12780993fba3a7317ac2611b2276bab756426ca9ed76cb72419356b18f37b79c8da0875347d3d92249a5d0f829fadf7c67b36b7c8280f2af2bc41f8a2d7f5
+DIST ddc-winapi-0.2.2.crate 5377 BLAKE2B b12a163ad2147642cc5304976616a4721b996ac91e9f821144eeaeefdb5cea432101cd8b3433cb3f20e0300a584c75262a64153e805c8d7b648cb9c087533929 SHA512 54e90b09b023e4c748886c41fd2855b7be8024d9e633fac8e3a4d330d8e3eb363dc9d57a05fa5fec6225092d4905c0fe2e8141c63131de0b231cc2f293391abd
+DIST difflib-0.4.0.crate 7638 BLAKE2B 57c703de0d467c997bcbedc4d6577569b3d72c612d3ccd929025a98f4bf8f72f2a0d43f3cd3bc616676c2569aed176b3c1362cfa868a4bb1197e05fe4dbce32f SHA512 fcb57859424fea6958a4407061c421599fbca111357b1fe72faa65d8fb0b74425c993a24484e8414f475fa146cd8368c4f82e1ceb4e8dd9f95741149345b37a9
+DIST dirs-4.0.0.crate 12503 BLAKE2B 02c0b9b68d09ca713e365410c72d761de5adb87a0fc5176c4f980050198cc05078fa67b43a8af1b16e80e7edf41a428dbe55807463bab59f3fade09b53d7399e SHA512 be582e5045f1916fb6b918c8e8c5907b4b663534025e4227ea4828e2aa9fe7fbcb3c48f1f0d08d163ba684aa4404076ac210e7f14766a09b9ed89a2825121b3b
+DIST dirs-sys-0.3.7.crate 10597 BLAKE2B bbeadbfe15d9b92e4057cb600f1957e066e295e0208e1645ee49fa76c55c45e273ae5b87337eeb398dd3ef3adf0a5584087b8fc0fb780aa23c6d9392029d6581 SHA512 e630964e4c452950a475c10a490b49b2979dd7dfda48172b905cc789153ae4a0ba2d7d91f690705cbfff23737c4b4a339eb0c49e922efd7d68a92fe6368a929f
+DIST dlib-0.5.0.crate 5788 BLAKE2B 0c1bafa05ace4a51fa7f5d8db9cc46773c1da9948e6a3f7e531c60953e554798d562546b50ddbfdbc266da8cbb988c59d57a95e7c3ad6e6d84f9b4888180f264 SHA512 1f828bc845570d8d6a6fb6c4f9bacd7d4f50bf800a68fbce2e0b8f8bf1eeee7e7260fc95fc49a14a3f7e2a4264368c80d8328d408b2a6544f4f796c48a4fbf76
+DIST dlib-0.5.2.crate 5806 BLAKE2B 2a8be2d76c44c95d5b1b9a5439a99a75daa703a341980d8af1c050d6096d45fb748f0acee7f7de2f9433f97ec19faec9e028f57c8149229eecb1827a1ef8eb60 SHA512 4a8f1c09007ecce1d7c829899aafb90081fe4fd89cfac3550638018760e24f63985e3060c4056b55bf58cf4622b1b31595e1c524a75b1b4354b8f3c35fc267ae
+DIST downcast-0.11.0.crate 5976 BLAKE2B 4ca0e66dbd8dbc86920d4184de8b37ab41954cb1560c7727334c990b97ad9544b098f7ce50759d10cac8b9cb955893805aed3bac5849c8b44a965e24d2ac7653 SHA512 11b037a09829e3e93eabff69f02b608725e6e348a191b1b6c8bb044b8d820a6ebf46eaea2f8bf5eb1c156f20d3e97be9b581e1b5fccebbfe76d94157d6bccd53
+DIST downcast-rs-1.2.0.crate 11670 BLAKE2B 7d44d708c1ac068a02ea5d72dd3caa8a7f6d18b7ee653d520600acc9c52365824f5b8d3c68143d1d13aa438a18b16ff9975e15131cac7ec48b2d995184673d37 SHA512 b80b72f30b42c5e6b2bd33287f2dd22be5673b2fa5c1a8c75c5de224fc7eca46a55f2fce63c02d225dfbc94ac3462b4b2fec53d63331c70da6307ebcdcc6cb14
+DIST downcast-rs-1.2.1.crate 11821 BLAKE2B e8a78afcd8d2f17c9505973359e2151d59b233e1757b4c7019047f148b1c8a4f28dc3a0d6eff6cc7f4a7ed986bf592ccf0481dc112768a9751475e1b0dbe27f2 SHA512 f37804c1b1e2cb0ecf2460fd6ab274c843c43e94aa7dfbf4e3c53529cca9b5624c4ea5ab5ceaafd72481165c7335f3cd1f846ae43deaabd18f363572825a5f86
+DIST drm-fourcc-2.2.0.crate 12192 BLAKE2B 6965483100ef886aebf0f8ba068ff07d56cf67b6920dba8fc8f6ac552c60624885b9e8ae39014132b6acb149849f58baf5d7e1ef9fce53acaa8531e05348cbfb SHA512 a63d4ee86a3e0940682516377ad857e5d96bba19338f18072fd3a9ba99a77700d932cfc00212ec26eda560bcdfb2e3a85cc22d55f99aa9f53d017f17782fcd4a
+DIST dtoa-0.4.8.crate 16175 BLAKE2B 5fff15e66c2edeb9eb9da89c66389b3a9bbb891d75afc3bb7da4dcbe9cad9e50af318cc8cc01cc7e56730763e8ea8ceb33b9447d1a7fa52a8d0f0d2060a97522 SHA512 fe1701ba2c40988b92f5f4ef78a8c81718b140ff8ca2d04023b09a89440e6ddb53ef36d1ebd9dd3e948428b361ed6611bd24ec1a31b5010c220c555e1f0bf6b8
+DIST edid-0.3.0.crate 5557 BLAKE2B 50782f7485037c3fac60cc22564cb744e7c44dcebd98af80a123dd5bf905c76145be378f549f600c2fd3101b20693701b6c8be63f22fdfea03185ff9773f1c0d SHA512 c62cc27e4cea369bc093b6d29bac83334d594befdcdf2c3932fdccc978ebf2fdea8b6c96c6f8009593a26410ed33d1b448d08c1f0030640f11c2171e9efcd5e8
+DIST either-1.10.0.crate 18334 BLAKE2B ac5d81e0822132846e29f8959671b14ac6047330d54020ea7d4ad790ef985ecb4ddcb96ec7e327b1a66b9c89d37b112dae33c9ac35232c136f60ad9baab7d5a2 SHA512 2de38a37b7f3e61effa89648acadbf220eacfda1ca7c82fb77484e45577769b724f7dbaa297e73e3d355d6b1bd5109373c3e96e4c1a13a918176162b33ea2432
+DIST either-1.14.0.crate 19890 BLAKE2B 61b6ea3bdb4ba9688d23a603628506d6ef4eb58d185d5b53c7180d732ddc2da14e024468dd4fc95e8c3af4b45194c7b32cf9423c49fd89f7fb6d6fa89a326bb3 SHA512 58c47de71cbc9c0397d8f87df51da0c6cf54e1e45de993fbc555befabbf83aba8642a757752e0d91fc6de88b01ac7aab07c04c183876a99306a520f99bb0a24f
+DIST either-1.8.1.crate 16027 BLAKE2B 2fad54b5f20bb8540fff5959ca7b2f9021c814ee610895d770f7081b12ebe2c93ce754c462df9d81824d479ca75e07f4a9e398c07a655f4abe2740b9c9de9c62 SHA512 5e4da301a605e0bc1ee3a269fe449aef044df05b5e833940c7f79bed61bbff4fc248e9c82b45dab92b2688d578ada000b271aaf67f2f4f7c82b35f05663cfe7e
+DIST env_filter-0.1.3.crate 15191 BLAKE2B 95fa27602c10e819ef09b8f4935dcc3204104f7c5a0227e5fd33cc51fd77f70cdab3d822670d216321f263643d1f5220f5849002ad857925d4170b1b56cd3fd7 SHA512 94db29f1639636655e05ab02611cf14d5c2c8778be6eddddf0b6b8c21f364a71909a2ecc3acf3f4062d5d3c79a6316e9ef30b2fe042f617108af8431e198d344
+DIST env_logger-0.11.6.crate 31105 BLAKE2B 536f7b02bc6bd4f186061d55d2c5fb0d57aa91adc73d0c2521e0136573283147d5d336228fa7b64306daec9f488a2a83c83b96f06d648f45c3b52d04699b15d9 SHA512 1ec41e4c4eee4ea6bea38d40e739b1f324ef236fc786553fd77c6bacf6303f13d35c1626d3408a18346d42ebf5c896869deba133ef34b8cccf3729957c72de0e
+DIST env_logger-0.9.3.crate 33291 BLAKE2B ab0f0f85771bbdc6c7709f7cd4c86d9eaf436b073ce614f9297f60e95b6c9e6141d8810d1dccc575893c796358ab65ba56a281630ab75350e8f421167e5d9c52 SHA512 a3ee86e77d980c2eefe4be32d75422aa0f9a60a43fd11bafaa3c9e556584cf65c36976a6aa650f87426edfd82de0cbb919e0906cdba6db8b486b4dd4b2583bbe
+DIST equivalent-1.0.1.crate 6615 BLAKE2B 302d78069d9df05e78b53f0488a9e4eb98fa2bc1e21893dc8a0acf2234347ba7c4df4b9d6b380ae77d8ffb1074b9c790460fe2dae47318aa1c4fe4208244540a SHA512 b2bc60e804c1b02c461dcefcfd60fc37145af710d183ebe65f9a4d63f2b2072d23193f98dc550a9213c7fdc6a2a837af23b04a89294ebbb681a4aaf5d5031140
+DIST equivalent-1.0.2.crate 7419 BLAKE2B 7ce4fb7b911961cd4ccfb48323eea4952110a069789c6bd177a63391c270df861afadd00c07db7b22768f0864f320e429e0200c433284f528336e2f81d071eff SHA512 8e0e2dc070794a85b276e93f9e4a65d3bbb8587b33fda211c34479a0b88504c913d8bef9e84d7996254aeabe1efe4ff1ef6259ff4fe3f9ccb90dd90070b3e4d4
+DIST errno-0.3.10.crate 11824 BLAKE2B f9976b538868daba3cd2d47ff2fdcda16b4a436ca767f865f23d1139e7f232aba263dd4aa38d573442c762999c8a8beab8a4a8c10649d21b49090fa65ced1ec7 SHA512 fa4b9a368f254cd90c6f69f6883af4c579829a6da6f31481a1b527ac9602c8ffcb5e9518cdc32c39b5589c151a20e75a7300c8a907d178346185ecc6e8749f3f
+DIST errno-0.3.8.crate 10645 BLAKE2B 4a7af10845f11b3d8f177a75a692be468e8ef0ee53fb84a4d212335f1499456b6739a59af260894b5c3853d3bf21ef3490d1e3a613305561203ca334a636c3b3 SHA512 29753c421c6f929760cd7565f8171696e4f70e677654a7507253f4fc495edbcf214ace27be46bdfe5c1a0d782f4b688f591476e56f4a1096471cb353c643328d
+DIST float-cmp-0.9.0.crate 10102 BLAKE2B 46bce5f7e838a947bbbdd22b085435e795b67fd23479780f65bf1586a70e7a35f04f9af086be98bff24e2583eeac7c9688727a2ddbd1ce978526dc01abf67dfd SHA512 f8dad12ecf8a278769054fd78794999dae8dedbcfde5e77bdf6cea12fdeaadeeb2f1f3ca62df9aadc1bc3f61457236c4854d6d6923ad6d03ae7f23af600572e8
+DIST foreign-types-0.3.2.crate 7504 BLAKE2B 520818b702d990d296ecd31a8646850202509ccfa18edd0e1b260289619a6c351e758f317ec0824bd76eccb209b6f087057c25f1bd01a47897715013dd834867 SHA512 bf27b8243ed482c202d120383374f19ff09422535e24b9c1aebccc66529bf300ca17b8bbc76d67f98ac092e614497afe3add9dc68aa69c93074df05762f91232
+DIST foreign-types-0.5.0.crate 7824 BLAKE2B 01a5111a11e48462914f9877d3228008590093633e957883fdafd3a7017e144c14fbbe713bb8b0061ebae78d20a49978191ce416a4e28317b67ec69e38acb879 SHA512 d07c92cf99c99419a3ebe05ba9154e396ab88116f46af736ffdd958c8e47741bca5d9f478f6719d5361360e844375968c1cbf6ac40995d47128a5e5fda3f6c82
+DIST foreign-types-macros-0.2.3.crate 7635 BLAKE2B ee89f576f2d892209c0f344dcab9dd85a671c976c8034b33dc984b93a5c872ff0353311657fa1dafc499243e55d3293a7bfc532ba55894a719a50ddaa6957589 SHA512 c3965e058d15159f789a8ab1597770ff6325e8ac9e6914c98450225ce27af849698646d53326e07b13eb3a9730452d926b73fd76e5a1fbd8ae4a6083bdce3367
+DIST foreign-types-shared-0.1.1.crate 5672 BLAKE2B d2e42e04b6657e7a69fe0bd20c672176629c743e49a55fd007bb30e289710b70045d445ae9cae0eeaa747ee708c90e8abd9b5fc39bad8ec0666befe1b696d4f1 SHA512 bafdb2143e136fb0818e2ffd90b5c862b7181647d6568947d4e4531012bbf7a57b597221ec7056c1b562dfc0c3b5dead26d1a4111ebc15e7863737a873518a4a
+DIST foreign-types-shared-0.3.1.crate 6006 BLAKE2B 27c26518e0de0a298df2996da4959727dcc6a21bb4efa6c28869a9affe7ee3b427d1bae25ed6928477d07959bd143d5d4fa27325f8f5a5cb0ddd3cdb9e5314df SHA512 c68da34b55230941d6655f6a52d5dcb8ee02149f25c25a5ef782402f9a18b33047905f28b70183a5f45b45977c011a5320cf7283b7901c76ede4d82082ca4c9e
+DIST fragile-2.0.0.crate 14668 BLAKE2B 2e589b312d7409a1a550a676303b9b2adf2e28b0d4cd02c7fb22b48a88d1f88a04e55c4405078e2c43b13ccada890a33bcacfe179abd12236c23f219d275c4df SHA512 a48fee7c13ad800142a9ef1f355b2200b904ad9bf97b3601e310bad2b6ad90ea235b9704964c54be1d9c415c9c95fbc5f49e8ba5d7c6ee3488573f3404912608
+DIST futures-core-0.3.25.crate 14623 BLAKE2B efc97e52dd0aeee34402018897a276a68cf94bf13fe37b4c0e4d971cc2dbc8cdf54d0744f0846049ff75192c0fcba906b3556f000fa8657f89a54d9356f8f578 SHA512 3b3c758c493255024df26a763023a5d403fcf1a9fd105b08c518bdd5891ada4fddfcbfc8cde6101157a209ab6d1555831bfeb49372b17e902b4fdd8a83cded4b
+DIST futures-core-0.3.30.crate 14071 BLAKE2B 76a9fa5aedd0d4ae8dd9db9639839b6b342125759c1b9f9bbf58aacb4ecca316ff1f24ff8f3c15f559ffbf974e4c2cd02a5418cb4c4d7612dac8449c8234eeb8 SHA512 3c7259ddacbe02e47a84178b75e5f13523bd0c8f8bc0b2375f7ecca60b7075695ee0a5cc4e1c1de26665cf250271173be803661e2f2f53e2a3b96380a8efe7c4
+DIST futures-core-0.3.31.crate 14318 BLAKE2B 613d16e4f18547e45ed0dd56a7b908306393e479c379ff64f358844eacb1f8d37008ffbbfe6b1a4ed184e501ee9214db149d9cca31651b7d353ab4a99c8f5ee1 SHA512 d2f4c2476c4f480f724a880ee16566fcdd545579d3cacd2f16745812eed9ac4a7a88d59d4a38b163ef466c6f6b612b9cb06308a09d52256506a8a90e358db935
+DIST getrandom-0.2.8.crate 30553 BLAKE2B 30211bc6a8ceb5ba765cbf068405cfc08842b2521c5850647971f4cb4bc9a5b0a9195ccfbc1461de019eeb7744ee69f934922ff21677259d7b815800516df4dc SHA512 cd7aea29f79a33a0de2a52a0a82f2b57ea8f27908ccfe00a5f42248766df88b225023603ec56d6fc634ef9c1eb67ad0135c90d4c695f6f659db0767e7fda44c5
+DIST gimli-0.28.1.crate 270497 BLAKE2B 4089e0f871295d464e548610ab5f0c2fd863825416109cf58ca827e482897f00eab23b795295758f1e3af16167b52c77c91df6f707f1f445984a6c4bcd68c6ef SHA512 695e46471fc07813dc4a47744458729b097f6efbfceeb57eb3db4165654e99bebb98dde2d73230b90bb5dd7c0ca0c6e77c7c3dc6f2abf70058b830a2fb386d25
+DIST gimli-0.31.1.crate 279515 BLAKE2B c8924ce351af5b8f96ef757a189f7a9be14533c024d496c62037cd4eda790b3f6282cd3013ba82ecc83082acab1b60ea80b83e0fd5f8eeb381fd7f9df88ce0ee SHA512 b9c8c11547dc7420fe936b9f32a4f5ccf3bb68d1d9f39dedffd40d631360f6e032e719d858668826f1099b8a262e8096aa7ae1f6d7d3d7aaf47934d832715949
+DIST glob-0.3.1.crate 18880 BLAKE2B dc89b3a664e810264dd7a01ad892e865ce35b504bfe5dba12d7ea8084da7de84feaa94c2208f1a1eefed90297e552636ad61ccebf6fc8cb4d01f27d605ad0a09 SHA512 29368160138bcb7ea5660f9f30c5711cfca8bc8ba836bbade3fbe8c424e7b4118daf27cffa677962e37e36f025fd2bb5a9c2aea865b0ff155cace455dfbb658b
+DIST glob-0.3.2.crate 22359 BLAKE2B 564b72e2738cce5311aee12d8d6147631cb571f7b96d8d3823098d3dd449bcc23ffed5a6584f8979402bef95536b0e73fe9772f273295a0079782b9f7d88d19f SHA512 d15389441e337e3fab9c30102fe7b4b1b3e68d8cbb5d14162d2fd7e7d01a9812b2d6d6d2a24a60116418be41e2075e70becd6994c13b34365d512521e8debb02
+DIST hashbrown-0.12.3.crate 102968 BLAKE2B 492072f27eaec45abd2c5d7405c614c0c6a8221425e901bb6174bfa1688ee524408a618650126d6c683b7285b9bf0a21dcdbff7347e4d8f97bf7111defa1b7e5 SHA512 b3700fcd659a21a6b9b3777c18b37a83bf25542b4e8f2b963779a122f5d22e1742c064cfc03e649583e7dd5c6e90ca8407f8c51a0e8755f6a108682853022f76
+DIST hashbrown-0.14.3.crate 141425 BLAKE2B 23c63a99c6c6b7a6b9b9e8bbbc7f1e342e1eb9d7582fc9eb408d3eec50c99f34502d450170bcfef4da7f2b1e743e1d1619875ec879e4753dffcb84f3c10dc3b2 SHA512 4d344e5c89ce58e04668b80ef10e4e110a3a5daf4d610c52d980577795d0e2050c7d0b151d8ba97128117665e27b92ab0300f85b88bd6e1de943c62d49249356
+DIST hashbrown-0.15.2.crate 138478 BLAKE2B 453888ce68b10cd6e93d787986603fceb29b83fe2dc417e7e57316b9e0060d0bba51ec7fb71d46a038662c99f60deac8237a8f349297208d1d223bcc13f0d0ea SHA512 d6fc0613623f9313533dfcab1240e97f652f78f05baa21419f7edb2eff030c4a2c5f426d3eaae747923cffdd8aa9cc2648340e5fc229395b5eacc6fae087c8cd
+DIST hermit-abi-0.1.19.crate 9979 BLAKE2B 801e8052b85341cca388ada9db4b06bb1bd7b64474185b2ad06c0256b9e597639bd3dd4ba0053ea010f922e53969a4ab47b90d451fd9b94c8f2324055d151ea1 SHA512 1c877fcd562b15d2de9c151fd6c5f3ea4bf48abcb799e6139a180ffad5d64b632f0000d5707bbd92ff23a0e5f349157b9e0f5be8b50f03680b0fa47315dbb78a
+DIST home-0.5.11.crate 9926 BLAKE2B d9c0d3660aa7784f3a26f3930a5ee35dd50cd15b7e252d930240ff9bcb70fdb0169f78c02b5fd82318af8c398d7139be18d2e9675a1b85c7845c90266945da1f SHA512 cd107c4cee793b6db8b29157c3aa2629b5ef1b9fe129fd903fe414faadfa06a881a1b685f1c66fa5aa1deefd3013a210603c952bfa4bf02d5d1f90f75ba9ff18
+DIST home-0.5.9.crate 8760 BLAKE2B 02277a6d0e54a88e62a50ceb5b50b08cd5dc1ca5ddc17a799db0f49a17fee8560df53f616ae22cd16020ae2a89ce7c6ec22e5e2c0d513405bc2859a6e3ec61f9 SHA512 3f1f7b619f1a47694cda92321a11d66ebbb2dc0b0c33446a7a4b886f547ee88231b61c038de04bb82acd50e617f19b5085893b8401206d32cd54502033e04bf1
+DIST humantime-2.1.0.crate 16749 BLAKE2B e2ae8325b037fb175b9200cc5c1944ce579056c6662cce307beb6701894552362a25e371aad65f8fb9384945b48815ca74bb8b544a32e0a5845b7edd30b918c9 SHA512 3bf29ddd1391d82897c22baa0ff3ed58ef6d6959859f1f8ed54d324caba5b6fb4422e56790511ce82f902cd11467f93c8ab7fc7b0e0bdb719308a4d0a446ae0c
+DIST i2c-0.1.0.crate 6393 BLAKE2B ef2d5e3be7e8e3343eb9cc4de1c7603992679eeafb5e60438aab31ada25a9627b7d1aae3831cb137eb8051b9b350064062082b29b4aa9032d6e690ee2ec0b128 SHA512 7dea1ee00b39bb7e36d36aa88fb3c25cb0f955573c3031c495a4d8b8565c6252d20ef55a3096a50bd27373ac714825d62988a57f652b29be5eca04666a1f1d86
+DIST i2c-linux-0.1.2.crate 9142 BLAKE2B ef20d75879e5961d061242d9ff6b49a18c416dd9c02d10d17ad9c99dc6a4765da3f58173a06901850d16094bec2124ee304691c132aab21fb6ef247fe4e631a4 SHA512 803543d7c3ea7a5b9dd5659846fcc602751affef9e6db6b18e7519d657eaf0e32d68fd6defed28826befce710b5ce80eed84657dac33571f2c74c176bd771c96
+DIST i2c-linux-sys-0.2.1.crate 6672 BLAKE2B d70083424d9f3477e5f7909664e58c0f1e3ee89b1cb361fbf26c750a3487146fd63c6e232275ea33494fc972579c07bee45e3adc5bf3db9cc0bb48922552e994 SHA512 40784c151094244cfd8f48f279757255f145d6a337cb8ad19cceea5b154249aa3ec2b66c770bdd147862c6ca3c323751ad1ee8fa73a7ab575b799405a29bfee8
+DIST iana-time-zone-0.1.53.crate 20176 BLAKE2B 842c3c2a9f5b753363668af5162edb6f2734a51fa6c6fc8bafc3981f5f287451258f5ab31d5ea6c2a1df75934233849bba8dde4ee5aa9fcc456fbafa93d8b51b SHA512 a3f899fe9ebc7501bd22e75b2df34c3b26ad5a53afbff4fa552672d0185d8a291736c48ac2fa76dab36a6621e689b5584a2d7bd0334055994bb21077765aa7cb
+DIST iana-time-zone-0.1.60.crate 27074 BLAKE2B 6f534056e220e2f721fc7c7f3ed24152eea7f07d1f4cb3609ca734ade32a2d6b18fd0164ed831170cdff192cbe48653b2c4eb0903fb6f157292b3b5bf47299bb SHA512 5619b994d3277f56e65322a7903e4c5e03928a87bdb72831cbef88788aaf5573b8460abc0a4d5488c5df7052bb978531d973dd66002b0ec4a3af468928c9b722
+DIST iana-time-zone-0.1.61.crate 27685 BLAKE2B 2091f0bdbfae3f63ff846e27136d9779a2d65f85cef899ea3ab0ff7c987329e6a584cf49c57de566f08e0277bd4981ac3db30ea0cec6a6757ed50d96e2c6583f SHA512 d16c67f435606334042c3a286350db46ff3409f142c0782509b136150b4069aafff0dc5c2ecfb7519dd8d105b9a2e6649df2a7bec33ee3966dc94034c9d5a1c4
+DIST iana-time-zone-haiku-0.1.1.crate 7200 BLAKE2B 9e748694423cadd6edebc1daef2aa4126904f5597202874d68066a15580cade77f48f1e6f2a77e17c7de0fae5204ef1262ad5b6f30bd95f4faec77748aa2ae0a SHA512 daa7570aaf5a07c990b07fdc2153b63d947598ed35aa9c35c4773772a6c67997143b120a18ff4c7c13474d296e81a92975ebf5b9aa9d204c1820e9629cb2e369
+DIST iana-time-zone-haiku-0.1.2.crate 7185 BLAKE2B 37fa14b589ff092377b9271c414d4e584c5a531f13f70ac48df26df3cc03353db635b4630ba192fc65b800cce11823e91b91f03dfad85e4bed55aa18398156cb SHA512 448224ecafa935472ff6f0aab7cb71f9dabdbe71569c4b94fcc65baea925ef48841577687c9a31106a1826c2105e8dd73c748e9d27fd002648e5b0ce838af6b2
+DIST indexmap-1.9.2.crate 54627 BLAKE2B dbfa551d33305db06b59d07c1b4bf8d4596a67ff1caa03062d07f6d78b4604ac0533d1c1fe3c371702dd7e65a012bfb960d79c76db37e264d0b44be576969285 SHA512 946c54881a347892dfcb55648a2b881d3a4d113424b8c76d8957980a834895318d11336dc438a04601916cca787420708ad7e271f965c38bfeae511ec1dedf85
+DIST indexmap-2.2.6.crate 82420 BLAKE2B fac5cf6339dc3c0a40b100035a5c874cc7b2efeafeb31c51488d25156e392dc9db86a497e76eead351d2126f69d060422faa9c55d73407a0de9f5be18d234123 SHA512 53211c4a9003d751feb6dcdf1a76495764cbf32d24bbfe2be7023946622ef4f2b07a6de57109e5d24ee01892f4b2be0e0692e10cd31fd39c4ffdff4d37abe9ea
+DIST indexmap-2.7.1.crate 88644 BLAKE2B eab47b5a8322ea4ea038884e70a67dbfa40293eb71c125d0ccf117af9153c19268c5fd9efd7f0be4a773a04bef961bac90ab3269ad42b565e5ce6db5a6d49daf SHA512 225703f74a734da1ad464895192f07c83068b36129f69a9e87608134f250d3a19b95fdb21dcda6c44cb0204bc4ad69bfbba24d94c83b439000ab4b9ffec74abe
+DIST inotify-0.10.0.crate 22971 BLAKE2B 76c1e9699c5679cc2741f7ce2afb711b1ef8d01b64da288bf0917e05ddf6c491d4a769ff743b1d36bf09551288bc65ce22ea96bb479e9414528c952f8911475f SHA512 93cfbe723d8f3e7b0967c49273b83c2c3e61e5026eda21a25177aef721ae08c61954b2fe15a7d1a576f64dbc14ea82f098034d541e1b7d043070af7bab78befb
+DIST inotify-0.10.2.crate 26200 BLAKE2B 8080cace302b0e5aca8ed4188126992fed5b5b4f3624d0e5de70dfb426583428890513faae2fa32c31afbe1051aea03acb7a7f22d0720a24569f020a2a5ec940 SHA512 79692a043787daa67284f9b94892a09a2bebb12feaa5be2e1bcfa213b710af5499a4fb62b837d45793efdc19ed1eee00a014a7a620b5bfc9a594fe0571e96929
+DIST inotify-0.11.0.crate 26241 BLAKE2B 9639f8436325544f58fd4db540752826892d943ae52d94ac60652a66fedcb95863076721716f79b3ec27b924b71bbf058b4db7e047c0432b696ca33d24b098bc SHA512 bf1e133e0c3e9e4c31121b24163e5050a76408540235b9b0e9a9644871cc55aa922ccc48799f2f766a3c869ec7f9a1b2275cd8a19f33c47508dd7d061361158c
+DIST inotify-sys-0.1.5.crate 6965 BLAKE2B d70124656ce3e6f5ea3f430e8e7100d0691003161234b40542ca86c407ecaac1785f3eca98e9fd2914dababbc3f47a0855c99c9f19245d1f2cd5312739c802af SHA512 dae749f32c533b0c9f99963d97a77dcbfcacf173ec8fd7a02f275804f9925e867b4dfdf6be52c3c3c3de136d64e6e7d6b30a3bf804a01608cf974b0cc2e346da
+DIST io-kit-sys-0.1.0.crate 33069 BLAKE2B 8e2be9089465766d186063269cd0a87a845c88dedd28b2eb770773a6da4b940bd5554d7be07e7716ef8cb8a5e03f6d402836b77d18264fdc8f1d94d30f619352 SHA512 dcd49b78f56e5ee2b00c36467706b823ea19c1ebffc1e3d784c14cd23d5ec8dde699854d43ecef7bd9ad48cb13df72942fc9b4f098fafff84e602b6ae7153924
+DIST io-kit-sys-0.4.1.crate 39052 BLAKE2B 4e5ef7c37b27cd9fa2f53beb2618ce3fb1fbb7c94ae5fdf4d53992b5671da55d2893b84456a622e2a96c6a0cf01aae1492ebdfd4820bb52c0e93ebeb0d93de2d SHA512 fc9bb9b47483c3dce0adb233faa2b47ac9303786771d97e3ff5836c81c04754406cf9ebe5fef32cb879dee5ff3f10d6a81a21a423dd34f3ae1178d94fb151163
+DIST is_terminal_polyfill-1.70.1.crate 7492 BLAKE2B fa663f858ab8e5fd56202d731b572bfdd4ab0e8262100424e27360a9ffd2820182bc57d6718a305ef82d04c3798111841c0d9f9dcfe219765c0f63edb560dc1e SHA512 4730fa09401cb4e69c92b38b2b43afd74699c61f5bd7b37605efbc0c08ca7a1318d43e4a844e46e0f84f83f42432f01e33771be2b18eb5977702ab9f894837e1
+DIST itertools-0.10.5.crate 115354 BLAKE2B f24734bdfedf1dba48554e39b43669efcd4a43656eeb2c511096060daeaf049e1ad3eab232e757057750ce94aabad9fc8a0cf29a997edc6c4b167301c3443391 SHA512 d03c3cfba9841776913bbb6daad0c8945830c155f32ae4b48872e0f937c75a443f0ac9a0355f43b359ff75232f38b15f4f6d446b4be30b00b4209cf66ef770c3
+DIST itertools-0.14.0.crate 152715 BLAKE2B 3c075b735a6ae4b66980b1f7ca0ccf4237286b140268ea179e4ac01b1349105da227f03ea9ea721d3e762c3cf8b736cc48b6902148eae73addd864b9c79aa219 SHA512 bb168e21281ef3e43f9c93a079fc1938d79b6db2366fe17e26a90f7ce6fa55df73e54a06334cdb2a7b208b0a64473b5af9de76827a9ecb49378a5f9073d2e645
+DIST itoa-1.0.11.crate 10563 BLAKE2B 94da07e0f7f2535d0b1491b3a3c64905274b315ffd35ec8e9a3e36e26cd7211733b462eefb5208963e388345f65be9694804c344a6132b2b595b0bc716c0b328 SHA512 7e22dffac34c9c9f432daef395e0ec710ed658164bc9cd9fc6445c9f984c912a10bac556214a026bcddbe27a3197b35b0c87d6709fd605062637d086b2d20311
+DIST itoa-1.0.14.crate 11210 BLAKE2B b2d33dc384757963eab3ae7d80bb672d828a549967986e3af8c70fe71a0ad46c4a278da2db4dfccef99e804e6cd4934067e97c0697a33ac3302cafbc46eeb416 SHA512 ea2d38df373652ddacccd11e610dfdad4e3ae7f0d476514e6ac58092733c817bd834e8cd88c3bc4178dd5a646ba628ae626195e0aa407e8534ae3c2a7b049987
+DIST itoa-1.0.5.crate 10622 BLAKE2B 0d08db487ee791a252389e40e08e47a649d9eb90faad16bfbdfdfde46366082d2e3561fb8a62da80b122e7771052c50a0483e9618260d094820e20748d99882e SHA512 b90841e3a016a9a68cb090e4bf78959bbadecb3391cba71e0deeb5ac2723379ccd3251ec18a0bd055fba7cb6e71608ab1d7db990ad4d03cf2fd1289bd5834540
+DIST js-sys-0.3.60.crate 79257 BLAKE2B 714facdab00d567d074de4a25b69487400c23194d0f58ca784159483f9e02289acadce084b1514d8816cc9e0597800de82a5298b071b7df19a24df93541f23c1 SHA512 543dfd444539fad27bafcbbf112366f53d4ccf4bc63f8bb17820d818c3e1804656697ed6268a793f383ddf6b6227f7e9b3a11fb6fbb24e10732fdbd971801665
+DIST js-sys-0.3.69.crate 81083 BLAKE2B 529c94cd2289883b3b43a848d47d8ae025ad0909548a38ba93ebc684ed3edafab16842b922da6c8b6be5ba39c36a1c05057dd3dd93fc8936d5dac372937ab8f6 SHA512 506722e6dc13484828a4147d974822ff9d103d9e7db58a48181b0957770d9fc43b97605ced105c5b680d8b2cda5fa1705f605707611cb48ed8a45a96d5f196b9
+DIST js-sys-0.3.77.crate 55538 BLAKE2B 8a4c04a8e93bf5dab63784a24320a314cc5cb629df788e116c452857b8c049c6bf357f3bf8f35086eaa81bc2d7f0954001addfd0577d845844871ee138e81bc6 SHA512 d9370ed6ea892bd51ea181630ca661c348f82d575381aa4c8b529113dfcab6687f4d19bceecad7e1b28ebaca74d405862150a5b5ee2d5d55efdaf98eed1ab255
+DIST lazy_static-1.4.0.crate 10443 BLAKE2B 25b2e61bbac48f0dcbc79c81d7bf01f2403d8269ecb6be3ea6147bd00f7a588df15a91f44dfc18ada19b21faa71de4637c7d493a8628cbecd0e547d74e616a23 SHA512 e124c0521ec7c950f3c4a066821918da7a9c6e711115d98009ae7c351928fdddead852e7596fea5937a9c30e4e4ce8eee7099b20248b5d6e3b2494b6a6d88cb8
+DIST lazy_static-1.5.0.crate 14025 BLAKE2B df29e0e3d1c061815bdd608b41074436024dc407d454f32517705ab04b2fe06075e310086c5e4961df0b4885e91021589d0bca2c1cbe6f0aeffa3ff1b3fd4637 SHA512 6d2f9887cd7f34f019644e42f02f2bf0111accd73aeaa60973ba0b039b6774670debece1ea9a6978e923208ef5d3ab7326473ee3560c078817f0f7ab8ed0f65f
+DIST lazycell-1.3.0.crate 12502 BLAKE2B dca2d3f46823a52dcf87b7d6103fc4f1f83bc5247ce361946ac2d9df239fb43ce4b418104503698dff0242480cd014996e77da4ae0a88f3cedbce4eb9d3c9ef8 SHA512 f9d627afc28b61e9687a3f72260eb013401fd64057647641ff2e763770d7380ab1d2d8cbb4a3c8818d53d504c618a3b46aaf701f72f4d7b25d226042824c2f8d
+DIST libc-0.2.141.crate 671145 BLAKE2B c0e37825ac3fba376e942a0e2c2aeefcab384b24c50a453d1948376cecb3f953d59735e37aef8a9ca7ae707fc6b4818823fae7330f213bf084e5460a82dd3ed5 SHA512 29d81f440d62fa1c9f7983c38138994e61f4897761a50a4f14abce1ced85a8994c6f0cc0ce86f77113b74495e36ddbebae6627f0b94c44621620a395a6723cdd
+DIST libc-0.2.153.crate 740614 BLAKE2B 523a41bc8cff4ebcba0edbbe9e6a2286ec7cb3ba5e90ca5926c972b68e4b34188bc077d20c22376238c3cd91b7455898a95c505ace4ededea88cc496edb4c5a7 SHA512 3f99e3a192974fffdc053ef21e9ad5fb54b7cdbd4755df176704a95dba38047138ccab76763e89c6b565f37f98fd549fe368749f84f6d1638b3209cb07eae9b4
+DIST libc-0.2.170.crate 760076 BLAKE2B 5deb440e04b0614cf5ec5a379d66b0f05f6f3eec1268742eb9052081408ec5da5f5185e63de59f3751506541321c618fd623d7b46b1892d360b86b6e250a4c4c SHA512 b716f1a76b208c5b84692fa3084c14dbfdb4a92b86c0e01215de04dc34c6e581e5f1c4561994c65a828838d5fa232efe93c3935faf5f83c8af127a5996f1f9d3
+DIST libdbus-sys-0.2.5.crate 1557017 BLAKE2B 4528c792d727e71141ee2fb2bc7080b101df650121487c420c7c6f3602d2ac987deed7ad49bab850619128f258c1f3a94364f7658b83fed16167944c4ed12c88 SHA512 94ce1de7e1f1727e923b2042aed6652f9d0e68f27388c186c37f7aa2195fd71cb3c92a2bee7e8628c95f36ba2d2a38d25d9804900bf55eb13af31f790bca2847
+DIST libloading-0.7.4.crate 27580 BLAKE2B 491faef2659270b10bb88ac46e0453f747f35e78d7f28b7d6d9151177b4c7a7aec0a1efdf702eda0988c31e9dafff2990eba4e6a9b0b695c535ea9086ccf36e7 SHA512 34439d9eca68bac8fcbe2bc94a70e07550e7e95d713ab74ed60ba6736ec807fd9c9135c178d436fbeb39afb074b2a9b05775d953340845c088f5f8712f5f56a1
+DIST libloading-0.8.3.crate 28480 BLAKE2B b8588be0e7034e94c808490adb8ee6e81c29e962aec436a0d8f8c7617b3ba9177887ce59b95b2f0af00ab030bc77b73e0a889d8a77b84deb437245211a969c94 SHA512 af8fa5fe2428fa98177d6adfc01bcd6e701b0d77ac18c95b8b8d5abb3a6376f16241ccc71b9fe100782c73c843ca53c9bad465545d8bb7def52320dad0eecef9
+DIST libloading-0.8.6.crate 28922 BLAKE2B cd9d7c2652bc4b0220e1c29cbfbca41f44d12d76c4dab3d025c21e5d317407ab656a88add0db95f1086934a424f55b4b413f33cb2a52cdcadde7641f9c5b3fc3 SHA512 f49ab79244d4b54c2f181bd9d7506fe5df9824a09446924dc429636e08ed7bcd6f5d2afaf8a0c862982e2c2c5832370b118266d36f36bc7b7522668bd598fc81
+DIST libudev-sys-0.1.4.crate 6177 BLAKE2B c513b5cd68fc60a7a33ba281e4fc4f9a5896946aeb1fe31abb8af22d279c39c3d781fd34109f98fd010fe8aa817b9d91726887f0ee8bf0f66a3bf313b01c9ff3 SHA512 185bd84a729a5dda6fb274584c7a731652418da9435d844870a9d09662918c9230287f4ad002273599d0a3e9709a36ae06d59a6686dfba978fb7cd1c51bbc2c7
+DIST link-cplusplus-1.0.8.crate 7674 BLAKE2B cbb93184d9deadd4912f6e03dfb7bb9d37f01b6d8d47dc9744724c848f297adb9cafb1599c2bbaffbff336f883e9a24c3cb4f11745ec4716a9a2c8cfa05f6305 SHA512 690afe063eb9726faa03443bfd01789a559aa10ded4bb3714ef7b13095005c817ad019fcc62b5f7b286c974a81e387ca3342d238e60ed7ab237c3628383a661e
+DIST linked-hash-map-0.5.6.crate 15049 BLAKE2B 0f30e388633c60433dcbee353507f1c6857bd210f0b61a4d166a9b95067bdadaebe49d5fca4fa6ce13072e26037c6f75d46cc30cf8dc3c9cfcb3f33b33630093 SHA512 031a87645381c96beff33572e4bac1a9877e52fd2f99d39918fbede17d72291b35e2eb69e07edec20c3058554c35cc38fe85b8f175c2a3c69366136fcc71f707
+DIST linux-raw-sys-0.4.13.crate 1493855 BLAKE2B 1298a038276e2424eda9873c642fb43d864b343b03b7962446122d2dbea94d58d9fb2b93e890769e6fe4092378755413ed6afba81ce56fd61e512146e44148a3 SHA512 3918da6b667a08ef8a51aa0b087129e2dc5ab101669cbba7690fc98ae2659a36861bf9410a3b87d18522a7549d43ac169b995ea192d3073f7249305a809cac62
+DIST linux-raw-sys-0.4.15.crate 2150898 BLAKE2B d1936eb74377d9bfddccef3830b56eb716c38ea3cb7e13b73325dfd00f9fc0df74bae49e4214dd7f27c257403b8b12cd1ef332d53336279d13f7e9497caf4135 SHA512 b5c39181fb6b901abddd8b2e7b449142e2e5691cddadb8e6b74ddc3b53076b1d410522cfa45af68dd18befd24ff12313c2494cf2cb0cf142e2228bfe42014309
+DIST log-0.4.17.crate 38028 BLAKE2B b46be3719fc0a53e50b1f342762e188587e9f1ceb692c72473ce2663edfb8253742d30024e68c1444780ab7fc0e2d5b0601b8ea7228dc3405a9342a57548e605 SHA512 2477d88db42b1d92c30708d88823212e236f613b3465e85eb425f83f8d16fadfaf0352f06c2999a1852102edd2f6ffb10ecb539d8a3b6c48f552a25622ccffa2
+DIST log-0.4.21.crate 43442 BLAKE2B 8429b3270794d3e2c7f7d5b58bd4fa1abb9d4807ab3a1ac980ac81c11d9544635003d8cf2e608c2c0094865459108a2879f280278e121df68d09bc1561d604ba SHA512 0becc1a06b6e7048cff6c0bb8df49a16ac4772133c00239e9e9459c0811e7715c500f440cf1a9aef8d7ad74f57434559ca9b55917f588b8e476cf36eb6d4e10b
+DIST log-0.4.26.crate 47022 BLAKE2B 529ce84cc92d1258327e148e1fff16cf4cba1d53f311353a15814856ad12d48f654aac5d4c6356a45439858a2f1938bdb7df582a1d62bf75b9380f2cf784caf0 SHA512 d85f3cb8bf90893d59b3174785295616d719c8d2078c04fa3e131c3f3cf84b73c75b932348df70b7eab2aedf261b27e6544f051696eb5c287fb461d1ee699ec1
+DIST mach-0.2.3.crate 18940 BLAKE2B 457f29cdbb3837a02f790c01078e59b72c6f961f4266709e0e2c7c8d77ca9a29ec39e398a7aa4feee482b101af6f7a6161244281a1a8515faec9e98dc3ccd29c SHA512 7dc2ae20b109c8314e757648d758140c325c735431ae0fffd2c6e0095cfc7a1760fdeb45628eb8a1af6caabf7a939234759603b8c89cd84b80570a832346103e
+DIST mach-0.3.2.crate 19611 BLAKE2B 683aba7d140a3697933835efe4e2e5a6a107f0a6122ce4533bd9079c0de4346dd1a817abeca4372a44a85406a424af9deff87496e79359df4c8d9ff89daab7e9 SHA512 73622b37915f3445a57cbac5eb378bfee61f5a2383c0dd8bd7c29b5e46447405ebaeb706f3a3274e5afe37b0506afaf1511836cb8897d9d480a3abd41f18fa26
+DIST mach2-0.4.2.crate 21889 BLAKE2B 137db92691ea6647ca19257abf90402344cc3a8508fe6f8760a02fbe6f56d5341a025fd9e5ef92ea355feff9f36ed6926bf70c79edc17977b65e935ad5f36959 SHA512 5338254f5b9833d41957715898ab4bc52585f99bc8f8fef3ebe526ea36d8a5cbd191aa07a218ebb6f71b7487418223e4279977294b4a6494aee8d01f34cf447b
+DIST mccs-0.1.0.crate 6193 BLAKE2B 7dd938ca802d13336784f427f7196b77a182baf014dc1d154cbe0ecd42eb938cb73d419b5df544264f4f412f1a532cea72baf2971c7f9fbacecd13b9f7c6449b SHA512 eca82d43589b79ecc21638c93771d4bce539fcca777e8860248820dcc351f1484939a05877bf68335d8b7d86c398b93c3d8f044be9c2b59c6944097f9df5ddad
+DIST mccs-0.1.3.crate 4578 BLAKE2B 59f1191b3557606e89f83641e97d28309d099b523f175984d8d93bbabda2bf61f69b9eb762629abc5b6eeca7a21be53a54e5d3a675e46f1384436b9ed2314ab3 SHA512 2377d49f041ce1e050d70fc0a39d39c0027d441b88a371a7da37b5d78ae515303c5c427ef0adfa4b7ac8d9b549e23de8fbfd07ea448ac1c390eb3eb6fdad39e3
+DIST mccs-caps-0.1.0.crate 4903 BLAKE2B b123d62024aa35a63093a930572f5663e92033d67339fc049a7ada656370bc3c3e3f36db591ed6114f7d3e67ff863029d3588fce6d7c3fad94fab436cdc0594c SHA512 9b578f5ea4d0475e63e6b66591fd8d98d562bee948b7e098b94beb7e934e594a0dbcba5c67994c84e3f620bd05e3b37f7d8490f44d33ee3d2bcfecdc2799a8b0
+DIST mccs-caps-0.1.3.crate 6535 BLAKE2B 15b0c6f9d7314919b8edb73bce15d6963e952f22d0f3c67e3285e310871f1dd47b38fb11f8af8421ef3d24e34ccf04378a88912445ca73ae72e94e0689e6e6f6 SHA512 2dda9346d787416b405c5a2b1f7f406124a7faaba91aedcf82103e9f65b93a68b7afe6281e17065ea20ab73538ec3eac64c50f1e602afcc35705434a67c59382
+DIST mccs-db-0.1.2.crate 6892 BLAKE2B 6d61418797804dd953f1f78d7210d77cfd55aefd925368cb0ca40ccd09b30782f0cc1ca8005c77a2c6280b86853d0823686b448dee2f3823df08884c37295d5a SHA512 632985890d8c4ab82e9c89e1273ba0008d80f51941b4ce075ae285175c2347cdd428306ae90fd83424047a1f1b3674257072b35572e1dfd4f6e86cd191ded85c
+DIST mccs-db-0.1.3.crate 8632 BLAKE2B 9766377aab9da79fe095d9a3e82e7f884605e3fc73a2ae20b2ee8495738da13df8ea6c046aea178bcd6f2d59bb2ee46c3e30f598caca8685fd0eb311155039d3 SHA512 cf10e232e5be77b12a18b4a09da8c5cfbaa9b632cdb1b45daaa3a78f9e9f423ec0da198c5483723265472ac85ddde38a786739c645a843b81eadfb5dc86fa514
+DIST memchr-1.0.2.crate 8639 BLAKE2B 3177eb1792892c0a74c5a7696ba6a4543fd5fabbea60d77e9b55e9d7eed365f3ed1b6dce44911246b52b8ad9a05e51679f42f9ffd4e6bbdbb5d01b5155eef280 SHA512 322b70bb881bcc2f9046f2daac5d939fd581370fee82b7e0500e27738d1d91e11c3f65fbf4576e0d987043cd08e5cd2b39a5ecf66d0ba7d95f48b6fee502bc24
+DIST memchr-2.5.0.crate 65812 BLAKE2B 57966413a1f933dcb2d2d4ccb29c247070f65a83299b2a9f5aa83f5a48a5c5f1c4c7c632fa63bd19f9508e9291e7258db2f16e2813a56fd84e0856f70f1e67ab SHA512 444a163b484c233e78c0e2e4d51f01ce2da93d7d29f516a95e4b0866b20bdfd3f34137653abed53eb70387991ee3e2b5937d8d4360a85bbcb50a93005a75defa
+DIST memchr-2.7.2.crate 96220 BLAKE2B 2399064b6db21838d4aa0b25ed0bf04940ee3820741658cc6bf62e5ade08f41320df743ff13f99b2781da7b844e18deb1cfe25fe570f0e93f98ff03ca5d442e3 SHA512 cadcb4239c7f3aaab042592c5186770a225621e32f8583052fd3dbebb4a6d9b99be28f589b39b5ca36cb2d56fb3709e7d4ba91838ebb882e28e51280c02bbc40
+DIST memchr-2.7.4.crate 96670 BLAKE2B da38114beca670467c3e1fbf4e415af6f22d52e3223715d52e181babb89b872b46511563985bcc16d7ff4e82f812c6e83ad904b0fe2501b14445119dfa8240e6 SHA512 8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2
+DIST memoffset-0.6.5.crate 7686 BLAKE2B 9a797388702389076c426052c3d54dc62802d5db8bc5c9c83990429f2ffaec4fab4c7dd3f09cd0704d1ea555e87976563bb43408ba54b5e66ce7e406d4604009 SHA512 11bdd9185b99dfee8e659e051b09ee301c7142a372a8117864745a5085c015436d2efbb1478192886f09cbc562529e209d2e3325d94938a64bc75b1d91d2bf3f
+DIST minimal-lexical-0.2.1.crate 94841 BLAKE2B e6b8919b80d938d0b98d60d4f5f29ce43d77ebfcf8b18bde08909141915c6ef4f0d07a543538d4f3ba8527a9f55926d4a8e83473248469d087e80b274d701d61 SHA512 385fab51884bdcc7b0f2728a219ab164d0dc8efe42160b918f2c09f79ecf853fb12bda006d11e649f097bae1499dcd41ddf2a8784ee7d178cf2c28059e46078c
+DIST miniz_oxide-0.7.2.crate 55731 BLAKE2B e3cbf5983025bee879b8a735fa2912db8975cb60f0499498a73ce4375e7d452c9ed62d4b0b6f6a4fa591aab55e5d7ff20033baa007fd6c839b9d74b31142c0b1 SHA512 2f8f09d7afdb9d78bfc80a228ded85a215fea05e577e907921f1808f84aae30ab118048d7b53295f11aeb5de70ab6cbdec892f3a2417bedf6f53a4576d095432
+DIST miniz_oxide-0.8.5.crate 62237 BLAKE2B 6afb3df5938ce0427fa8f61b0962b04ebb8baf76f304dc9c1b6d89b685be89c4bcc241a3cc54fbaff73a4607e58803bb6eb1689c817ac1302476db7a01d12abe SHA512 a82e36fdec6d77876c00bc4d03f2d8d90be898091a7c2f474e1b0c21142df2f362d5bcde407ec6bb48be982b22e2bc7fb23572c8aacb2b063ac20149b4564251
+DIST mio-0.8.11.crate 102983 BLAKE2B 913a8e0e4843b3b19cce3eeaaff0a0024eaf1bdb4784a710e54ee95b6631edbd763e37669ec7d269e45157907663dd2eb6c9279db850fa47ef4c1eee867ea24a SHA512 9a2806ea78b0637d0cf92448abcd50bc5d09bd80da0f37752c847bc98d014baae7a5cc4d929de98be6283c76d82ccab1f1467aa6ab583a4e782d97d5592b0bb1
+DIST mio-0.8.5.crate 93993 BLAKE2B 6c20d66c3b5753234c0ab0461642b63e84383128db775c6e01d50bade5a69081f7da1626f87244c2c45c2451690e8cdca02e2d1ca20f279ba6f8401fb006c7cc SHA512 e92bbc1d06ad8d4311d76f878d514d0c91e47de2c511c54bb53096ad689012c3d1ffeec18e2de05a5f66c03ad83150cd45d31edd203e9b9522ece13be00bcede
+DIST mio-1.0.3.crate 103703 BLAKE2B 0d2360e4ef45f37104208a31e9aa467d6db041dfeb97403a010a36e1e1427f51d97f8408948c75c0084e6c118f058267bfe87d36e7911cb37366f2b1ac6eb693 SHA512 2142edc7e9378fc3437110c85ba2cee9c9683e87034cd44275d2c389645979db53fbbc29fec304f1d8c8f0464ae17d2a5db1aa9215d696fa0282f5069700b1e2
+DIST mockall-0.11.4.crate 22374 BLAKE2B b300d9d74e6877f461539bb29afadd73b9439b81db4656f2a89bace2bb1ea0e15761aadf9cb3c0b3f8723e266e27dceac37477e2a54ed9b9d273a6bd896d32fd SHA512 71534e5c106cdb45da678370d81748831be6792a83f7b7a1082249cb6936eecf097ec88ca99d0c5029e15bb8b3923801e8779253b3e7e526e2d760a5fb01782c
+DIST mockall-0.13.1.crate 22825 BLAKE2B 8365cc35cfd590b6fb86f4d14d52652975d855c6d06750a58794f3e1d0818bb79e815d6b1966bbff1fa13e512d960f48f660fe591333a04df413d81a8e1b390e SHA512 8ed8c2d5adf26eda8bfa9fc3cdff43d1ec95a5696258c33fcc5241c9846a73975cd0394707491440f4b827e0d8bc3d14df5c825fc6c7cf9f79312316c01aa834
+DIST mockall_derive-0.11.4.crate 44096 BLAKE2B 336fdf8ff3d6e8218bb77c20e7fa6fc6360022b107abf5edb41fa6dc198a72576bd267cfeb59c9eefa0c6eccc1a56f4fb9ea22d3b6011af80061e5d0e4a27293 SHA512 a4aa214feb36b4e844d2b0b3d74c3733ed25085cf65dbe22b6387ac12c8b15517396ff4b875461732865f408582d2ffd3e0c190d438213c3cbcaba669608e735
+DIST mockall_derive-0.13.1.crate 47822 BLAKE2B 17d9ae282e165550168eb568df0ccc5512d7479e18fbfe02829803efd81b53dee1f660ed00b88a213575c65ba5d24944c44a530776708e63c57834c2c728c59d SHA512 3e1eab7f9dd2e0b40d41cef0311f0c360f42236988182c28db2199044c1d3b712ec4ead7cc5e6a89fc33df286e34eebc00a4bae6a02b4e8fedfac2158fccc993
+DIST nix-0.24.3.crate 266843 BLAKE2B 1eb1667a60d07c4541a0cb0cf0bed2c7c5256411028becdb229febd0f6215e8e176d3bf691f3bad2fc64841209bf364ff8345a3e92afb2bf8d3705fd734c8ef5 SHA512 6ecda3a14ce00002265e46a066b443cd3c092a306e25d9206b74ae31b8468fd5105b597ff1e7097588bbb6ef5e52fa48ebad908303b61db53361b525f44c13ad
+DIST nom-3.2.1.crate 104073 BLAKE2B 0aadea9d5b79fb0b34ace1c1c410119c954982810d928a033ebc280a824da6af61035bd1b31fe5f610812b9ebdcc02839ad5e863148aa01733b5c8472335d70e SHA512 2baf05e568c426eaa1560569538e0f08706e40333a797374bd3f897bcadfcf239c6dc9eaabb99e9ac72d8b79e46f12ade8b5d88b04ce10ef24e8b21513392c77
+DIST nom-7.1.3.crate 117570 BLAKE2B 5643b67990b7305e101b16b8cd27c447e162a7adc6d0dfac00920b0cb50fea98c9d4edca63c34f6845cba05f8d0acb407cf3045cf64a4cb28e53c8b6bc9090cf SHA512 1ffce08dde299bc0e0367ad59c7b6a83e23decfa11115ee076ab91ec53cdd9ef37e4c2103c96eff23a7b6b8b5c3f67c83ce1917928c7d4c6462083bdfa0c9cad
+DIST normalize-line-endings-0.3.0.crate 5737 BLAKE2B 935b2d20ccd37ca7469641a37aa0ae9b6872715d6ee88d568d0ee16fb76416cb1a0c585cff861825de8cef11d864b1dc1b350911c28d64e071d8fb444bbdf740 SHA512 f8e2a6e333b0e8972febe8b9cf058c8d899c384fd177e0b6ef1c5f94e0fa18192963970cb1a2ba80e3135a8cca66cdae6796e4d84ac6b325bb369575bdfc6eea
+DIST num-integer-0.1.45.crate 22529 BLAKE2B 4da3e801f71ba8f92c692497e200bfc8d32183c94eaad91260683b09f4697c03175fec7cff5a9ff3782d5db5d514d74f22f7a61a102c0f0d2e67a7a4b4f29222 SHA512 731bdc09c3af7f9d8b171041f2957aa60facef93b06886000d8ba60d410aabbbee358d700bf31b2588b2e077464f290f24a0b712df7bb7f12972675b6c9bd735
+DIST num-traits-0.2.15.crate 49262 BLAKE2B 942ab170b2acce1cb40e6847f766bf810a79edd293d34f3a27864f464c16fe2b99fb13171ba429cc6d584248de879434beaadf1b231a4001b0e8389ed6c1be04 SHA512 5228498af0f15daeac3c9210f3e6e71cfaaeb30beea81dd37f8eb06b9592c8bf3226a47597cd8592ad4c513964a9a40f1ab2c33102ef3dfe3800d22c8d4528e8
+DIST num-traits-0.2.18.crate 51930 BLAKE2B 6c40e155d7a52267a7183d8030ef34245492d33f103cc24551b10da3eaa18e3db485062ff87057dc23e6b55e381e5c5d2a2633aaf6f4763c06677a0a0c524f02 SHA512 e395ad9f3b21b0dd1d3a94cefe0d68a42d1b1d429ddb2823696f9cd75042568a635d93d133ddb9497ed357e5b3be5caddb8e4a4af87b65882bbdc60b05c74ebc
+DIST num-traits-0.2.19.crate 51631 BLAKE2B 78637360cbf32d172510a62bd9442708af9730c0296a2bb4ebd200c08facd49bc31bf8ddd58967e0df7273a938832b620265d9f8f4d26ad16049bf6dac1cb4e5 SHA512 180018a5eceb45085e4e8d103ff21bb4d5079cea874c42a0ad4c76c99d275d434bbc1cc289f0cdec172866daa89dbfe0871410b2cc3407233fe1129786905956
+DIST nvapi-0.1.4.crate 17881 BLAKE2B 6ff26a8e483914806abe53675cd9d39c92965a9720b3eada6ae297f6bf7f264e7f1e02451135d79f35eb27134fe81e5e186341794b2b7e077f2e1df49ce1ee2e SHA512 58eb0fca33301192eb72b25c112f3295dfac573db70c353d0cdccb11a500e0c7efa7bef935fb154f0757cd4f6abfd43b4d3b78c4b1d2b5be23004fbcdfa7f548
+DIST nvapi-sys-0.1.3.crate 39054 BLAKE2B da6427dd4ff3b212ca79be852989415edce8aa615efd5167ecddec08e54f7100025103fce4caae64b22fb9e28ffd879bca85705179d176af126230997cc46b54 SHA512 fea9ce6d6368afd283a47461940fa16d74657f22f7d20ec2e81cae81243fa1493e4f40558109f42e34714b5d59e6dc540505ccf28a36f6cfc0b70b9be82469ce
+DIST object-0.32.2.crate 286994 BLAKE2B b9085200fe0107ab0f8ddd5c5ac82bc681dc6266c6503e4a803ae4dbdec775ae84ca4a736754b770d858ebb058342af45d485d4c9a41f57966ca1466de40a4c5 SHA512 5d03d998f06dc592c3be141f7163bd72a0e73396f95d22ef1e0ffbfc66489bf727a6f6fb813a32739609b619b8e34a471974b2231dcfa23df8bff52007c25a96
+DIST object-0.36.7.crate 329938 BLAKE2B 0b02cf2f44e99002909b38125edada1a259feae59fd0e5ef52001755b6878cac710c87c60fbafdbe405281e039f68572ea3d8093d16128899090fd70df7f2fa8 SHA512 dd69172349ecf51fd2351d32cc4453760ca1d15e854a1cf5ed99112032901a54b4645b24163b946deed11f81d3e3035e1a5afd8bff20f335dbd05eceab073478
+DIST once_cell-1.17.0.crate 32736 BLAKE2B 767fc8f362ce5ed7a9eafceb2f0764a2a1c7f4070e22d1e6e2498b3c841c5f761e77fb66a34b899a75d48f1563f6b9b73b90aa9431055d4e0269c47a1b043c1f SHA512 291d87380c0ea17fb3ffc9fdff8620d2ff55601c06ef65b2f0c54254fecd5b488645c6e94c6026b82071893f4d420491ff712399a782e14efa1e323e5c299c46
+DIST once_cell-1.19.0.crate 33046 BLAKE2B c14b374eaf4ac0f60acc2e02f7bba270a0e8e0a6978d749cd3cb0ab3eb26907e4fbea70dd5132982f90290381ed18ff8a87fd530f1415fabffac864f157ea380 SHA512 4154876afd34a699ee650d1a8a1c5ee5a25f0ebd9388b8bef2564e33629fae68f113d7507488c68abbe7ea1acf9bbc41813cbbf3ef3e464e3f3b9cc7a51d870c
+DIST once_cell-1.20.3.crate 33456 BLAKE2B b16081751a1b6649d0235fe9cef3fd0a9023d4f6980521933e4a411282458050ca27c1a8aa01d5237d424fa279219b5713da21d8900eccc3100d19c37d24b7a2 SHA512 3ede903f232d6ced73aa74c6b2e2ec306012517eac684db253913df4656515d087d1aff9f437a58fdeecb77cedf8a5960d6772d72bf1f1f19f1ce3fe54bc72dd
+DIST peeking_take_while-0.1.2.crate 6697 BLAKE2B 31571604d00872900abcb677a483da93654de523bbdb0331c326dc9a3e531f246e571bebcb983e79dc46e33ed6dd32b978be509841ec0d9f1e7209c06289c22a SHA512 7bf8721987c3e2e1986683dd897746592a909382f02b840b777effec7d8b0a864c1a83b03c73d555e359f22c423168a54b75448a7e7b996b739527ce8c88b721
+DIST pin-project-lite-0.2.14.crate 28817 BLAKE2B 8e9875967059faff399fbffff82cf8835982c46ea8df942acf50b038e3f500e04d3d8cde39da5a71ebcc38b869553f8c49830e484d1109b353247a4cfdeda89e SHA512 f90a6b9f5ab8701718f72677a4f3597c1b9f32e5fa53198b47a94696227ea37815997599abaa6058b217c5b32a94602582c6b13fdb66e2d683bc98921de95293
+DIST pin-project-lite-0.2.16.crate 30504 BLAKE2B efd0b426fcc6ea8852bce499fac61f9755a11c6a2999cbec514f093ba7b3f94b1f2d437ee9abb243e31f3838ac1c74491a212851d7798eb249e209b35e015332 SHA512 971adfe54cfed304647fd944c1c915e78b37eaf0de3a582fb984a5e91f1b7d4db2cf0f53a9a64b64427062d4b41c0a36baddef782411a76ae3be0f8ca45f0718
+DIST pin-project-lite-0.2.9.crate 27713 BLAKE2B d6985b5add432fb6287d1b0c9fb0cc91a195f82c5a748a9ea430e4ba884717ec7b16d730b5ea62de5b2bfead1771da2d115b3776e12e605f70f2538f374a28fa SHA512 cef0b77233adca712db1183f780732ea577cf1b27c2643de221d54c837c75ce749f907e24a967be7474812c7682cba613a3fc5d553a9578a1b80569da0e562e4
+DIST pkg-config-0.3.26.crate 18662 BLAKE2B 2ad92dfdc8ac0414b12a61dd30ea4ac5f142bbb55d0555ecfa3a53e750367e1b11766a693ef11f8cbe5a2ddb978327632458b2bcf75be7aa8f973262033349ee SHA512 509c4d1494cccc20de6a62d9d037c63ff77ebee8d907747c57ba0926d177b08fcac0231ccdda14511b453deb0b76ddd10f8fbdf63ff94257d72a12a889546435
+DIST pkg-config-0.3.30.crate 20613 BLAKE2B e14dd544612f74b038bc7d279d629034237946c261e3e97621d6ac910a12f4fa4e75932dbd5d3339e62325d0ccf33002b07f04b0523f93d2bd3b1a919841ba66 SHA512 e4bce232e1e1cbb17d1c08c3de4dd12613f5a5238f831c2a765b6ede9b494e647d2416a7d9a0c926104e24066dd1b38df8df98a6c55d62f25060f80eb33d064d
+DIST pkg-config-0.3.31.crate 20880 BLAKE2B ab7676e810751f89639b60ae70bdebe1d57edc76319f83077c3680049a701a26e72e8cc485fe77cdc4346fe3571d32c59e7384c8c86fef17e00d7d81df5daf43 SHA512 ac3e8062ee8831a4e4fc717b5247dc7f113da7bf6d64ec95cbca7875959a2afa1497bf81d9dfc27206b5fb10027a2509d51dd9ca1c10139d7b4c78128864fdf4
+DIST predicates-2.1.5.crate 24165 BLAKE2B a0eb1aa0f26d51140155b8b5e7141a253e298ac2197e59c7023ecc693d68cba01d645792c57467741ee074891438fba2f1439c79a4cef27f3d02eaec8f1d0b10 SHA512 d4b555d7f57ccec5788a957d4a3e130f5549a9333a47654baaef098bb284c64bd5c662677ba7e659b4563b3d0146914f1235e0caa2274af8787d9777141f4dd4
+DIST predicates-3.1.3.crate 24063 BLAKE2B f57d4d19128107107b436bcce2be5efcb2a17cb18952221bbcb63691f5bb0fa3932a50e721dcfbd959d27b34084a6a9931378bc55c3c23a6668fa6a552e72abf SHA512 0da703faeb708e3f9eb9bb8803dd8cf6a493b02d38b9b617fd1eed7ccb870ae96c5be6cfe63b7ea8855cb2a019a7ea59799faf2bd78fb490d62e640d1a7de1e2
+DIST predicates-core-1.0.5.crate 7773 BLAKE2B 6214146a1aa53c127dc4c0ed1bda847c1be41e88f833a6c5095fbdb37abbba9f1726095f3e168a0ce3bded5b458e73a73c1dc467ecc2a31c7b3716b01bd00858 SHA512 d94481797f2fa307391aed01d5276db04663ceac54150f922c8fdc046c3b1417cd93d767843df95985e69e0ba1202a0df82ea1820f9c67b15a91f2feb2e3e7d0
+DIST predicates-core-1.0.6.crate 8084 BLAKE2B 337cbb155bc2859c5a8b891c21d352e998cd1eaaf606cf46c003c9c499a42f12268b071e7a4cca65d50cdfdfd4267f023076e078a0a3eb401ad836755d65298e SHA512 afeb1de4275c76bb1c5950f42bce2f83a21ab217ec60130336286cb48b15f36bf2a1ca346bd652c10a65a1f9e3310d16b23b8333a3e0f7e20fe874c3f728e702
+DIST predicates-core-1.0.9.crate 8618 BLAKE2B e5ff73c0756f4cd91ff5d2fdd7dfd33e300dae34731933c11798d7ad2e07d9500dbb7828e7473a055c55b5ffa8a761f02a9d04ef313e544e477e4cb94159576b SHA512 618db56d417f44f5575159265f245fbb62399951824730546df735dd9bc9dba2200f58c0a7c7830040bf27954bb48e01fddb5fe0f4d4890d5e172cb1c586735b
+DIST predicates-tree-1.0.12.crate 8392 BLAKE2B 4b124a7b718d2942f5624d410fb8c59c06e90ec5b576fdfe20542dd00da64fe6a5fbacadcde3c3a6f19b8ef99efd862b08be08e08691e858a4b3d7bd72a4cf71 SHA512 f5f6d7d0cba4ca7176a26d9adea5ded46f1a3361f9b6ceaa7dcf468ce616912cf3b764b8250f39a42a24eac71fb94e0d4d822c89361aae02472cf761ba55dfaa
+DIST predicates-tree-1.0.7.crate 8145 BLAKE2B c36af3d8c2c378833515f955970733ca6d71fd7b317f9310e451e32ab6e68d6fed2455b38558b0a9f889126a331301eb631821562fae6e4fea3abe1caa9d7a67 SHA512 0e66884edaa68e5339cae5461beab273d10b0acf9162827b26d6860cdcbaa10cee0412e6bb8191dad84f59d12e01a0684646b66b793b2c9c183244c96c05b6b4
+DIST predicates-tree-1.0.9.crate 7960 BLAKE2B b758c52dcdd0ea237ce25f0a092200604765bc83c5edcaea646c6b1db49431296b61aebddea3b325e62f0ba9bbd5edba7ec92fd031cb597e7e8d642b966b401a SHA512 1fd5d9a84ca8fdd1b3c4759d5e6fb16e3d8fe8b0dfe5afbd16bb509c8558b0750705fff47701c95f7a8df1a222f639116a1b9ba4d89775bf03b06daf34f249a3
+DIST prettyplease-0.2.17.crate 57713 BLAKE2B 22cd81941d7ac701ec90b0d24946c4f6c12ae48e90500c58a95e8b04e1b3515872110ffdb9af18c322d0465fdeb4e75c4e57ba987b6e7d904115edc91b6f9e88 SHA512 8d67996d928b7ff6415f067d7bd20c5230f459f4e7f6e2a852427b19b91567e5c2c5bba33c1e51de8bef550a6430ac548156dc0fb5a2550715580b50334ad565
+DIST prettyplease-0.2.29.crate 71628 BLAKE2B 190ed6096cc60ad74b80b3f88550bc3c1a6e5c439d1f7fbf84372acf63fcb72a612a9dcee07f2e8f81fad64ebfd33893b3187b2932ee8eda36b70ff73f5fec6f SHA512 749137bff46daf6142ba076471ffd866e586b0a2c74155ea306be01755715aa70fdfb7baf1487e2285910966af008da047197d4755c49d489762c6780d2a0fc4
+DIST prettyplease-0.2.9.crate 56487 BLAKE2B bae9627f4620e78a91e70fde4245d5d318a33f23a81bdee87a0ec4eae62ee918aee76f9855b55778688571d6f2da84b8f73b4c46a3c5ebc75e2f27f5dc6cfc65 SHA512 e16f17b7759fe02af7c31e09ee2825c49546c515a544f13ed19323e35f45f831ca685e083b0b94cc7181f74e16a27cf53d6df856246d95e499b6bdee67a4975a
+DIST proc-macro2-1.0.62.crate 44879 BLAKE2B b44d18618c0f0943868917e4fd4294449c8101b49d2640474fc776f5e43e204e5ceee110f501f1010e6bf5ebf6ff596220bef4b1ebdff7453cd227ea2c6217e5 SHA512 8a15c0ad15bb2275f9d120452930956c9bb3d930a5d11a07786314dbe53af6a1768d15522b38bc3e2f57ad342bd361a39a2b6e12c110047da57b6401dbdcb503
+DIST proc-macro2-1.0.79.crate 47200 BLAKE2B fff8e514d618b8ef60d6a4ca7610607641cb25701fc5e8452e0db5f942a3c38c724acbbfb0474823fe0f4864df07958c1524383e7640105266608f1d5a741368 SHA512 8bfa6fc1022556cbabe0050a37b93c5ef1056ebda9d3dd368e705a7c695df9dfb5cd5adc18ad1eadf7338631ad1d5ed6f63f0adff3616429ef8c50a930b1838f
+DIST proc-macro2-1.0.93.crate 52388 BLAKE2B dae4493215b88f68cc485bc0ae80f0a48ebad68e0260839b1c367832d1ab778197bf040647b3fe36cfe9d5f7a496e05cd71b5914f531eb129c2d458d5f0be896 SHA512 1ae650e390e4f1b18d05f42d2ffcd025cabf72568a326cd85496c722600108b0aa0ab0161b39fcc931b8b302427f678650e703f4db57aa1a60f1751db881dc6c
+DIST quick-xml-0.37.2.crate 188017 BLAKE2B 03cd30cc755fc7bbd3f8d4f1f75f796cad5c8343c3b1d3de3311f4f64bff35297788dd364bc0808832619f1f9b603febe4286a6bceaa318c4a0b76f1c74d6331 SHA512 f9535c555422476597fda5d2df393f910338dcb78c9ace63f2cff7ccb15161c96828eda2e32ce68ff3466cfe7a60c07e2e6d4897b6921ceb5bfb1c747c9fb70f
+DIST quote-1.0.28.crate 28382 BLAKE2B 9fb16c3bb2a7fec3d8138ffec1f58277061f4a643c9051e1f6525f9e347ed9de41a3797eb3140a6dd828526eb4114c1f7ca562151dc933f338d64b175ed35d9f SHA512 846d718153f78cbae6dc714caa9413a5d5964bcc5e032f5c6c5356c62c33bf22635955ebdff0dede69ba1c9657387e65d61de7c537f6f56f8060721dfa52d735
+DIST quote-1.0.35.crate 28136 BLAKE2B 81424245e1e2b94459df68bb3a9a866c6a364102b5e1d010ede9c5f8278f8406d7b651957d091c5914e936b494b0f6e9a6a1dd8b7d35cd7d7100f86dee4ec12e SHA512 f5314fb6af17cf36c228e1970c569c29ec248954a450a5f90ba9e2896d04f74904c9cec5a1f74325f2489295a94491eee4ce8fb461e22cd4b34e53f1f881efd2
+DIST quote-1.0.38.crate 31252 BLAKE2B a3836efbe5c21dec70c684002b47b8fc7cef643c82ee903b537a48bc0707a28106c4b33d98e60ff81e04c7520f7404b1dc4d49446e8d91dded517e476c36e1c2 SHA512 530c47c5e6372b508bf5b2b88a138408a7afa5ef52c47280ed20eccf39f8e97dfc1e0a18c1bd5472efcdc49a7a1e69566333a0a1b4c0b4f0e11e6a7a85bfe8af
+DIST redox_syscall-0.2.16.crate 24012 BLAKE2B 9497a52044458b1435ea16e86ee072e379b6b11ee31602ea72d6b6072a4a99426f409c2e58108a4e9c36dc193fa49c83951e71f4fd4e158eafff18c594dc01ad SHA512 63b5d876baaf99f5cf737679bc6ac7a9e3d8a41aa93f5c59416ce7e3841e2513bff678773553cfe62fb452707f82acc384ea63aec932a31bf94679cd1caddd27
+DIST redox_users-0.4.3.crate 15353 BLAKE2B 5e3b4e902566620cee8856c092cac193366ddcd2f5aef787b1d485353a0da11486ae1359dc60f3c87a198cb68f93ef99ac7551cc2315412b93b10ffb10540633 SHA512 0d3366e23cf93e1b0e025a29025eaebfcd1145bd158e2663b94fd952dc2d8a25566819e3a03c4136ca16a6408d37396e2ead0814c3f0c2bb10334dfd0b838fda
+DIST regex-1.10.4.crate 253191 BLAKE2B 08bdb925efbea1ee9f885a89ec6b4692e39d7b17039f788e5b3c1dbfb7847d4f53b67f0c61e4085af7ef4901e67e33ea94948668bf706fef19b4102a06ef0447 SHA512 88ef121a51759f418d5dc01607a6e02651bd00343dae92962c02a80f30343d3f079a0375457780ce46bf205ca38f279b03989154638199fe2fcede10554bf21b
+DIST regex-1.11.1.crate 254170 BLAKE2B 5cf41012fc2ba8a006c0eb4a922cbbf1614bf300be361c9e2d98956a9a5e9b140e37bea09132fab7bfb633d4439158723624bcf45e8c619c4061b399253c1b82 SHA512 d065f6dc405771518260425f39a5eaaf8cab62e78c91ceed3b3994a9a121674d2484cadaaf816bdad89c87a40550d57b66a3d9de6618a7119a658301ce7e67d8
+DIST regex-1.7.3.crate 239886 BLAKE2B 8d9413178b626b09243e18a1c5e0336cd41e05659128d4026bd551df0c34b9e141e36c3134f3b22200b18828ef89082a08515047159afb4f4960e5fa840fd54b SHA512 f7e8dbcfaa10c2443b9a6dfa514edf0e149d33f1a135e4a828adf97dbb0f1af5a4b58a2bad75ea8cbecb9641f499b30ed06b8ba60c7eaba79409ca18ede85e4f
+DIST regex-automata-0.4.6.crate 617565 BLAKE2B 8f1e2a3cc1d2d50478776281d2bf10164ef441dcf7127994f4a0341ec40588ec8dc1c07fdf9f670da9e61a7753551500b80314df130370b61d2c03c2b2e3135a SHA512 b288e1facae2612f73d3de3fe9fd1af13d337107004f990263abe6277b31b948478ad9c2b807dcafa73fa565e48bdf2113139f5ca67eb73165b7d29e2ee5c9f1
+DIST regex-automata-0.4.9.crate 618525 BLAKE2B ee3fc41c8c445be4c1aa3e5b19a3e61efd641b1a24e7a1ed55f837c1fba9c816272cb4645c13232b66b170bc7c413802928beb22e3891500141ad4ede65b60b0 SHA512 40bde0ec91cc27bc0c3fa237a37ecee5a1f023dbe006a999c5888f8f578ee2c4c64d9edfe1827546cea8e92ca3c10f8b4d494d81f3d0422b40d90bca9cf598d2
+DIST regex-syntax-0.6.29.crate 299752 BLAKE2B 2408ebfe5f0dd6578c33f18e8ea9a0a7a84388420c5b67adcaedde477f3f67fb3e39ba9fab1f6892c7ae7fff754c4aca51314601529cabc6a8fc43af38a11f88 SHA512 28a58950d15df1f0ac4ff4185c05b535e8f5bf0b75f79fad24e40e17a02570d1c9bd9cfc919eed8756a1069bc489c5fdccfd04f6b8266c83e3412b7b4bdc262e
+DIST regex-syntax-0.8.3.crate 347497 BLAKE2B 9ac2f63098ffa3fff51fe2bc0bcf9ef164cf9389a909a3f0cb668d2598e7ca65d573e47d571ee2e6bba3a1a96ef7c298b8d681e1ef89c8c53b7d590e0e22839b SHA512 925f7bcc50d94c65d34fcc770c6e58dd5b8a045541c0109e77b8efe842eef4c110087ac9c0f86c7c3022ed013abbc5c0a187d796dce292ad5361a0cdf7153d76
+DIST regex-syntax-0.8.5.crate 357541 BLAKE2B fc6d125f7a8574c37d81c75cbfd447cbcff736f2d9991b19814ffc1a414ebc5b76e84fb8fd36c983b38e8e391d165cdd9047832b0d9100f0e1ba7085484b7db5 SHA512 549d8d130fea9ec0d5806126f57f31d433f50e9328c5532ad417c44bb5488ec0d20acb0983dbe54dabaa0b453cbea4533cf7baac7144df119e8f78dfe55c5ab8
+DIST resize-slice-0.1.3.crate 4620 BLAKE2B 12a005db60d52638399a2fb0193051c1144b3b06157d1195d15a629fc87e0aa843335d3ea115ca8b49f658632a6e0e374d18da1e7b57910d0f65e03bb67f57b3 SHA512 bb93940430e0e924400ea490591e96a1a043d59d675076e2f21cc77291d049a862b569dc792b86fbf7bb82c06654d226cffe0566487f12d38077759356b967d5
+DIST rustc-demangle-0.1.23.crate 28970 BLAKE2B 611d2e41a8a9799db2f8bcb8fc8fefcda361d055a417d2bfaaf2dedcce9d6f388c69d905a28c65e6691b4d408d7922ccdc97ce524c87c3cccb8467e314bc87b9 SHA512 8cd29800254b1305ad50f1fc008838c52d9659f97a51a68e9f2bd6d0a60126f3ebdd1c79760f96445b3bf998d0773526ddf663b174acca81babdc0b423247247
+DIST rustc-demangle-0.1.24.crate 29047 BLAKE2B 8248b014eedb26cdc0b748544ba91b9aae9c992a6f93b4d3ac256b78f691d572f8885a3575492ea556698a241d2759743968293079ca02bb6a5f318b0ed66dd4 SHA512 eb897c35300b87766e6105917a907fca1c5b1f7691fc03c6c1aaf38075ac883a73d1eb54a245d13ba59c7b0f0333d6543e23fc1b1c542fbbd5c750a84660b9e8
+DIST rustc-hash-1.1.0.crate 9331 BLAKE2B 16ac56622897f47a06b661fb59a196b08d48e782ab87549c8bd5c6fe92f374c9bfd44dcb36588512bd9b6125c2fd79a12d648aaa308fd9694bcca3a7c1b49ac9 SHA512 84e673ea9b046f7b989d47f2c4505557fbd5de991e6fc9f56a03605d40e0b4ba5427cd566954890153cc033ccbec6c984306634571935bfe0d4cdfbe56f39544
+DIST rustix-0.38.32.crate 376999 BLAKE2B 681ea50f5405b3a749a26a481995d3a85800378067734bb857e32e5d3764687b0da4b3749d227174440e432b374ae9ada154a8288e4353ca2ff1b851698477f4 SHA512 8f028b4df785aa78fc798f3e053d0a4fb9b3c552a47f66f52f1666f4c1324441be6581ed643c4ef0f56d92e1a078c6d3b45be183fc3df0ed1fc89de0d610cad6
+DIST rustix-0.38.44.crate 379347 BLAKE2B 780efaa7c9e7fb78782c552345ead692e4dc87a6e68fe9c972097ed4ef9066b54633c565d4f1b4752e08a1ceceef15ed5d8c11286c7cf17d971648ac5f9d399f SHA512 b7e66a27c9188eff307aa9912852706f686864852a97af0696ac5fc5dccdf2e4d22a69266fa74ac71aa123e2831f24b898b7ee9121850d65cfb56e12bd647d8f
+DIST rustversion-1.0.19.crate 20616 BLAKE2B 025944fe053ef928f26affb890ef6a563b0e63cf6acc0ce7bd4ff104541f819bbda48ebb59fd8a677e44ca1ea21f4a18c209adf2004c9ad79604dfbeca43b5fb SHA512 45b959aea8155ee47c51aa1d87c6c344b5f4b20199a2646ca30bdabe1c2458b014be91fe0c48c29c2261ad9e5de6df7eef7ddead1682e584d4a906c17984baab
+DIST ryu-1.0.12.crate 47070 BLAKE2B 02b0eec6bf266b7c482aea15ff83de4bf3cd6f607f8cd6f17f1c3ffc60cc64b62b15738907b4069f5816dd81669ed4f5b00c4bbc8705abaebe3a0846f56e8e29 SHA512 070f0b2b52e47cc9a6d8f003439d257c27aec15ffb030a92481ac22d5052436156e25127ea3ea7986cc514d2a7a924f9328710d743c216d7b1379beacae79829
+DIST ryu-1.0.17.crate 47537 BLAKE2B 28408e17a4322f1afb6f21bc8d7328c39d07186de4d464f8e9bd63a69757cb4af61b46e558075e14836f310f020ac824d5ffa616fc0a5ffba59b9df0bb66ffc4 SHA512 6dad725c4fb2d3a33ea30107b63cb702eed56bd2f3c16a72265f648f5aaefcd3d5a7b919b1d037af926cc6311bc68ba58c4e0483da2b2e2135c6a7c2d6601af4
+DIST ryu-1.0.19.crate 48770 BLAKE2B 588ca156238ff7285edc90d62c41991f6ec6b732656ef874c4bd5723350d2db19eeae844fa8998123a26b34a7feba0ad897731d73cb4daa88a24a3587b860dbd SHA512 b80d07d609237e13ce1f8cbef5b16738308c540800c7ec18387aec876fb2204029754f20f1f273a0ea07f54dfbaa4595fd0a90044d09f124c1c99e46f1005a99
+DIST scoped-tls-1.0.1.crate 8202 BLAKE2B 20be49f0546691bcff3f0fc257345e432e200836a60b297ff3fe698699ef6a2fe8a5dc6977902a08f7dc63c578aa27607dae0f1889b849c257c59c48a458e1ed SHA512 342f43d53edd33ea3e2197faf5dce37bfbeb0b20b6f0febad4dc6244c3185df127b2c10488e95561260a0ef968f32707460f2d0d23667cebece19b167c0a0c25
+DIST scratch-1.0.3.crate 8198 BLAKE2B 804af80d09da85a88221c7aed7740a25a327bece99eeda0d7adceb3e5111917b70fb4a4e4e39c83b041d57baad2e3582e877356d58386e05ccd65e0a5334f86d SHA512 8fb3c0d36adbcd915e3adad108e35665ddd6e5622b252833349f89448a620bac6eaf1c212ffc172ec015e5af46e5637901c3442083b17ed29a2bdd9c0c48d595
+DIST serde-1.0.152.crate 77091 BLAKE2B 89c01ce359042ebe6b1b64ea710580886f965a98e1d6085c58a75269a9b43401e2cace080c4c93ee51982855fb7e2f09fdefe9bd237bbf30c5537f3a4258283b SHA512 b47bd58fdc1a81d96cc0c9d14c8b19153b6689e893851975b1d7c7010c4448750e7fa09056dd4f13ed475a4aea2a3950952ff528832976919a6e78504a37bea7
+DIST serde-1.0.197.crate 77087 BLAKE2B 4a4e04ededf5fefaabfcc4e17457db823239e8eeee7631a905ed47800ca10d26a93632e3a9d1b784b83f84168d0d649cfa2e6f5f1e68ab15a68e837cd5b6c699 SHA512 69e42825fce6a0a5d109979785daceacfd6afc5641e202fe83da32e2b1f968416557cce97fa014839e873e65f85c27494c8f8e20e6e9e4fbedf20d0291880410
+DIST serde-1.0.218.crate 78968 BLAKE2B af7f366a1aaaeb9b5f6f22e7398a30ea486aa3391ccab9a11435d45f7eba10796ce671556b771dbfd8b914563949c54b4a4f14fe447a549e879636339fa8f128 SHA512 35ffd8556287fa270beb90539c1641912d8fb233c53c4017f1f65a483b2dc340385458b9a869b7142b4d514bcc87c25e69c9370b3867e463be887bdebd19ead8
+DIST serde_derive-1.0.152.crate 55586 BLAKE2B f133c6cdb87d435ea0c05144e685047fec22b93df7c61df4aa139358c2732326c98d0f62fda629da0f648aaacfc9d6f312813940238f45b359546dd435e7a516 SHA512 2f4dffb5671b4758f0b7dc0939f6b5cfe3b3ba02a53c62c75b5a0ec89d2db26bdd95f3e269d1fd4b07ec921bc0ca5f0741c26fdfcd25bd6532ac698c6c701e91
+DIST serde_derive-1.0.197.crate 55771 BLAKE2B 73708908b6d1e104af4c63b498bd25c5a728e07e22afdf92f15754c0f17636efe44c0560c1f0df1b9a30708e8e8894a62f1ea57c234b6dd861cb9c8dc044eb4b SHA512 669376e248b76a5ee8b9c93fd9fe6d35372e7267fbabc14730539ef28a94e405ee5e9c2cc2846897d59d6153742cdc6799f9e2c87f20b9dad119bd3a86c28994
+DIST serde_derive-1.0.218.crate 57782 BLAKE2B b2244847b41f1aa396352bcea886d6a28d13ede23ae6ceb813143849cc107b3fe0cf054687d9f35bbb9db4e95c619422d9710532fcfffff291280cbe3649a433 SHA512 e89c076b0aa22ad74010f5b6a60397b9b78b59ca50a9660b29ceb1fd608cab820c47e787e450da306062c0cea1ade7142a7d4626a77aa0ae486096c130442cde
+DIST serde_spanned-0.6.5.crate 8349 BLAKE2B f4f8f798ae3a02c0d5178aa12a94bd1bc08fef88b6a81d782ba07ba36fb0d89927ecf621087faf376b6e53de12f6a96e0880ce0cd01ecc31c5dab7dadc6f3ff4 SHA512 bffe2398629ae5a5a5bb6d5fc2fa0f4b94d02c96e25d1be2fb9ad95d8ca2fa9bfdeb3af11049ee9c050e497f3beca108f03020f88f6de29b208063c3898af354
+DIST serde_spanned-0.6.8.crate 9330 BLAKE2B 630bb2cabd74e8d9736e315ac57c4d2c5c4f72264aab35ecc8e0040cb4186885722051a9f7b8a9006fd121fe58428cbb151e5cf541e7de30b6528c84e968f7ac SHA512 2343a2fda35ff57ed8ff7d8eeadd651821fce7e22f91c2d5797c6af7db9e009b7d637382f6f390c17911912865a5aea1ce87a86fbe36f4b6aeccb065a4c8942d
+DIST serde_yaml-0.7.5.crate 32510 BLAKE2B f3e498335e3189602db0f78faae6c5fd784493f883efca019961954fb62dd1d7b69bd420cd8e1b85723a38d0f072c0ddcc8fc3d2efe981eae851e502c6eb4d42 SHA512 57172284afdf330414c071e481b8a09e02b13faa6bf882a0f91e4026fd3086acdb25126c1c9f07de910da4cb37fa6f806f05bc1bf754d75311cdce7371953258
+DIST serde_yaml-0.9.16.crate 63845 BLAKE2B 3ba71314ca095ea8a9d268d5c61bafbb1f1190aef4666a8ead81a86ae696a802ec504347c8f5df0dd62f43b2916bf838f04ca64ca442fe0745e07b0dc9a3c569 SHA512 b250bd654ebfa0c7a795e9242f72d3511887e1875d82d94df0f497ca4d6bcce037e38ec96f8011ec528c4cec5cd2d54077a920133a6686922ea4fcd61cffaa3e
+DIST serde_yaml-0.9.34+deprecated.crate 65290 BLAKE2B 1c1f8c7dd1a7952948596d8c727fb6fd36426c7b80ddaba2e6065db7551757e6fb170c77373ba9784f6b32de9f8aec94f90e1c85df98b9ac1f75a7cc8e5da174 SHA512 64329436d18bc3b1a0737afff7c8727f7e04c71b2bf6022f597a45f0860fa3a678eac688f61f0bf7a7846f98809f427c9907625e1d00c8691c383043c1cffaca
+DIST shlex-1.1.0.crate 5199 BLAKE2B 325536bab9c9707566a099a161e7bc8448c7369cd9d7b2f144ed71543d551038ef1fd764376491e8076ccdcc928b5c4e177764a68584267a91386b8d542264c3 SHA512 e51892298dd79dc7cf04d7e6f0a03e4850a57b15cd75e6e3b56e2a0b15d4cb85ee8afcc14e3727d193c8b91baec8c2864a9c800834ee4d18a1be584f17591752
+DIST shlex-1.3.0.crate 18713 BLAKE2B 18800c364d3a628f1a3125097ea82fe6286550c2997235df0bf8483a3906aacabc81308cb239887d46ba2f457cc6f8acd5aca78316707eea5098cd5666aea67d SHA512 5c8cedbe666a14b8a0874defb9208146ce64579cde52ed483e4a794cac5dde6a24bf8d684404edff582f842e1fd4fa3fbeddbe074f191e4ec4aa517aa456fe8a
+DIST smallvec-1.10.0.crate 31564 BLAKE2B e3e46a0781d3a7892a739b001592d462d0704f010363984c439e3fe4f75aecb9720648aa1e9bcc56bb3be848dd40cee578212439f78f07a807c9441c3c3e0147 SHA512 a09110184582dcc01d7a0d3fa8f74c17bf726935126d3654667b8e9c4bc43ad16ccfd8fa94feae7d9b31913aa7ee030fe5936e4b44a36302b6ce5fe37372a7ae
+DIST smallvec-1.13.2.crate 35216 BLAKE2B 31a268aad595c06cdb078577a97b089dbea156a0df307a3e6aaaf4861bd9a680c5b11921da9dbdb1bcfe17d58c0cbede1ffe6bba3aef59b384fb1b9703c62d27 SHA512 a97c758b668e40ad9eb572e65feeae4954e09200a04ab92e26a13b48894381cd3a3d2571070c4b7a5e181182e1ede9688f990650342ec69ecfe1a264d234c679
+DIST smallvec-1.14.0.crate 35561 BLAKE2B aa8ee61800a6d13eda5acb4e9dc03543160849479a96a72c50ab38013b23e9593a665773b455a09777038edd436d7a35b501f6d4a0e16ff49544be60345a1e50 SHA512 90de38f208f551cdbf4980fda2314dee57d4e2bbf769a01c47bc849189e9243474932052faa92fe0ca59ecc9c5d1ed84091ef87f724343d38ebbbf710ba232be
+DIST socket2-0.4.7.crate 44619 BLAKE2B 9bf2560812db2c91498d12274e02d17c279efe5817d882faabc465de71b1cb8045f6eab3c8e6031f6fd18e0e77913f42daab07f01e8d83bfa5ea44cc6966466f SHA512 44487f2de30cd327cad1af31ad36aaaa0bf10c33b5c23b024ada8d7e41d064fb2adbc9edb14aa8aa1eba679d8530c373c7187fc68d9709ae736a5c1a2cf37088
+DIST socket2-0.5.6.crate 55270 BLAKE2B 10eb32486b9a2908e05ab24620ad7a79243e59c2c2db5a7793f87f32765745b21746423d5b3896ef37d3dc9e76410fba97826cc64cafb7dd45adb485900c2282 SHA512 10f14ce7bcb9fabac56f98bd34ccd6368dcf4ca245ba2df80fe0f1157e177056eeffc6fcfb1d1fea6e89c0eaafb99d8056fbd10101031d3ccabb98950ec563dc
+DIST socket2-0.5.8.crate 56309 BLAKE2B 309e5a0e46d0b9debbbd6049a138e56b82df4fc0e9d1115745ed935eb40c81b004ad748844f641934e13b5b88773db5cc4a57fc9e61dc82b5322fa0232110864 SHA512 b7d03608a3d4cf3e2d1539b5a375412effcc96279e8f57668fa8cf67b3f0a3a6b611ea5e2e72f282460582954acbb5364320611f7798a11ec9e4833e53830b60
+DIST syn-1.0.109.crate 237611 BLAKE2B e827445d00c79a8eeb91eacde472f1987addd6ce9e1df95d7abf6446a77ff4173a8006845f3ae71c1da47193cfb72e0ead9a6d6bad2573be12c17e90735d9ad9 SHA512 12816b9e8cf984024b2fbce9f0ae14cf94d4d2c06f08cc54fb793ce78770bb4cc1288eb7df0ba5e8e937756e1e8e295c53fe07a0c5dde1ea8ddba03b6203b37d
+DIST syn-2.0.22.crate 241001 BLAKE2B 24e610d357b5f20fd72397fbb3d437c0620fedd6976d27cda3673ff8fb52fed4a934f2fdc863ecff99694b21e85df28f25b1c58185f2e5cbb15a14787b0d1e33 SHA512 9cbe85a1dbb283f78cb73fa2c98ef46f4879c8742643afee7d30e100c62a7ce285a69154c1b5246ed96b05718493f08443f243f308e1d44c6e120637d54e2a62
+DIST syn-2.0.57.crate 254911 BLAKE2B 76fd87dd0aebb85b81bf50c56e65f01342b92778ebaf3475b7654c9bbcf4dbfed147d3d63f25cb073bdfcd0318826903dd68ee5c8227ff1e8b742ae6ec66bf25 SHA512 270b86ceb1a9eda6db5b3d7fcbf998d5e8f243b6285f59e593dd6a6495b8829f0b81428d6ffd4e8eb9f021ef747ec5b60c3358c626158e3333f3bd44e84b797d
+DIST syn-2.0.98.crate 297807 BLAKE2B b17e2bb4f151fba26debb722bda8e8677dcc4f57f0e88bec214f8b06e9b15c48731ca3f63d1453a44f34845c9895b3519008ce6cfb69746486324d7a8e0e0c20 SHA512 792dc70249d55face151b5481b0ebabbd3d290de78cff8b5dad8bee08e5a932ee22e54ca5fc5980e0b218197d19822c3672e02eb92ca74c8ac1328081d4d2cbf
+DIST termcolor-1.2.0.crate 17917 BLAKE2B 5ca7802b0bd29495bcd2deaddcdb4c3ff964073a373eaf39964a24ed91a48c5c33e192d676099e2837064df3149fdd73aba7d241e9aeaad9887bf1bcae9d38f0 SHA512 cf1896523353390b2f90b2a8bf30f47da5fc7c2daa635bd0cd8059bdc73feb243e46e4279562fe45d5726f2840833b1e967c7de19ffc0c853592d9f86c0c1be7
+DIST termcolor-1.4.1.crate 18773 BLAKE2B 34676efbde8e242415857d6d40a287ae3459678d8222f5144faefb8c84d635686f640e79588d98635c8f25b7628ec6663a01b16e1e462705b5cba7e8b8e61f44 SHA512 b66aad157c4fa2985f764321d157dfb1f0325fd633811870db7919b5579bf7bc19fefe99e1c706cdfa67504c37dc2ca3d283e11d1bb516edcfaf1eb7747a778a
+DIST termtree-0.4.0.crate 4449 BLAKE2B 28f19620d7fb190c6eadf9bf6c313d1cfc1d6e1395fa2f235e7c54e44a73bd0633bdb2c7eb24ef2e763aee4eb3f10c943028a349be30b0c85d4178d7811a9ad8 SHA512 d1b5fca80dd15f506804e565816417ce03cd37e7b0f5bb5b2e21b5baaa66dee0196a3dd820eb392620403d28b018ca15404219399b5a975d80614979d710f2d0
+DIST termtree-0.4.1.crate 4557 BLAKE2B d4300b0e6e908c519a0a76f5e08167f4467f428b2926e7739614cef5d3e294dfac15ae8576f7011a852745713c16da93346660ff96520a2bb90a4dd4c23d889c SHA512 ddbe0d3ddd79b182732359f47958ca32aa351d10b1e7d5f6456700b851aa2b5314ce005e1fd120a248b676f219fbd68039cefc071d92c5b5477d053bb6e29062
+DIST termtree-0.5.1.crate 8498 BLAKE2B ebe1face80741908e28d3fbf828bd0a7a70bb317f4532fe38ac9b6adae898a7032f751718a39300ecca8c7bf0ea6cca028c02c93c7ce7a645d67656318e90172 SHA512 43d92132cef6d352c6c0190ce4a688d7cffb61ee86dbc6b49ba1f4c404661f9b329331198063d913ae52b2d4c69e6a2d9f5cd62886894c468093abd8604f0125
+DIST thiserror-1.0.38.crate 18947 BLAKE2B fb81df34dba2958395ae360cbb14e2708e5a3cfa5cd0bd03c58f29c146d8afd8595a7ca1b30f1ed2a75ba140a55ba450fd4fd040aa1a1dccb0baf393b0e98d60 SHA512 95b8ca682b579834a04058f03ed0c994ccef426d75e0fcc28ee47151d343da25e8fe31f8157744d942aa54652115f477fc6037f91c581dbc127b829cc96476ce
+DIST thiserror-1.0.58.crate 21025 BLAKE2B 2915ed6ab691fe94e97a834ce5874d37a388c3240499889cff633ee6c67d46a2ca88098ba40c225ca0e2e3c1ac7bdcfafcfde3dcefc50867e299dc49505d6fc0 SHA512 3cba2d1f4965bc56bac8fc70540d8cd442ab6b8c7d25d328bde7f4cc108535d83c75f293316d730bbd86eb247400b6e35107d610c7caf47f43a28b1f52fed578
+DIST thiserror-1.0.69.crate 22198 BLAKE2B fdd8ca8c8ca78702377d0bf7b253440519018275b105db980d63229d0d44aa5c39a703e14aa6fe453c779b3c864d8044009dfef893d2a5294950f067656d7a80 SHA512 ef50d2867d965da1dfb29d26faf6de273b5fadf78f95313f6caf44d68bfc610b9bd4b7544200b05bb0861231cfc84e961007f8db83c7905244c492037fd31899
+DIST thiserror-impl-1.0.38.crate 15429 BLAKE2B 96202c256e970fe23f07b461d71430889e36d9f0e83608d001c6feb4e86f4a34047ce93617b27f89c6e2a5d6ad8702b9f64ac7e59bfee221677261fdfcb06e69 SHA512 628aa28404a181b384ac6a11a433829a5481d97face5bc1704349414f36e93440738122fca716fdf878719870d10e0cf8d495df6b1d40913e985c2824cbc3aba
+DIST thiserror-impl-1.0.58.crate 15645 BLAKE2B 9c6f643a582666ee4eb43330340888e7141f0dd89d927e3345268c3eaca02fa42b018514ef38b3db3ff9722b25ebdd43c36b11ecfc7bcb36950ce2c204ff78e1 SHA512 9bbc623f54c71595e48b33bdb3e4f12eb2e48074b15ebe400d6faab43410b363e5af94df071aaa324c59dc6958173e3c301fd51b216969f095e19cb98a27292b
+DIST thiserror-impl-1.0.69.crate 18365 BLAKE2B 51663251ea6ec99c59aec35fe73c5f9760809d6b6b7eaa8ecbc8f6939acdc4d0ebc11f9034d9204dde7bd689d5e8303ae0be86e298745e9ef96825bf73453a08 SHA512 579eb796c8885feb01d27638862823acd96c79440655bb444c3445ac00121852603396ce7439aed617c0a0ac69f62102167fde5845411c906997574a46d6d9e3
+DIST time-0.1.45.crate 28911 BLAKE2B d43e2431752881f6885d572017f461b304d07ee5ef0d8b4898e62b47c8154268839c3bf69b141159090cfc0d90bd0113d6084fe99ea1f2b1e20668528ce21112 SHA512 e643fb8649f3efdaa1b0b6abc6a140d55ac550a55cad99d0cce9415dc51e155fb1ea240953eeaba5dc47ec73c49ab7f2962af79c693436289de0eb3ff60985ee
+DIST tokio-1.24.1.crate 625490 BLAKE2B e83d992e08392136016d832a92a69cef0dcd19e2c66d87a21fb4f49fccd6ac973af70e60dd4487546762f2489bf2e2d3e0a02fee219505c94d0a69c90c0de803 SHA512 6b423a36ab8eb27ad05eb059833da5399c9d3e0a9e90c1d2b8263538764ac839d5fb61b2b515e9ebd1692b7defe84e0321e0b552091e488f1ec5b5e0117787c2
+DIST tokio-1.37.0.crate 764297 BLAKE2B 725f3b62c52ae962623df84c690db7c54438581b8d2108dda76f05bfabdf1688f2de8b4fed2ab0db5c04c7659af8d95a7e19702654a12fd498d85a1d030c7a45 SHA512 fc3c070ed0c09e57205b76618a93b8b00f4d74c2ad89df3295254ec2a984f4fdfa9ed5472ff935e1644e89cf2abc44354742603c0e006f14861deab2b873cd85
+DIST tokio-1.43.0.crate 817422 BLAKE2B 86d7b3c0488ac3a31e76a6846568c2c565d08ddafe265eeb28303bb2d57506afbd10a75490c834ee76d57dc45ccf7329a693fa3aa01fd7033e13495d82f74d9b SHA512 8a2681829afc3ffa6446eaff7463d52aa3351598639ef5d9af0633dc5425e7ff222a7e661f519c3383377cb46b40969ae8c38bedc77a9da92a871ba7d1c18a63
+DIST toml-0.7.8.crate 49671 BLAKE2B 47988292efa682f34b5295ee15524d9603d7884a0ebdc50aff93823bc9bb565569097b6aa0c622976cb23688aff73e41c0a19b0ab72ca55676cc86d7ae3db693 SHA512 84479acfa305aa682ed6ba655208c245d442d61028c422fefd6174371ec214e88912c257a3e2527e14646b655b18d55ac2d5482b0b4fd8cc2a9f66575ff1c84b
+DIST toml-0.8.20.crate 51095 BLAKE2B 8e46bf5b667fa650883fba759efd1cc524fa758eaf1b9124f73121127cc72c0ebefaf64edaba6d249d7a9d0d81f75295d335f68e4e88d20949aba538a2aa71a5 SHA512 c842705270baea3e62e3b0535485f15af87e9a1b26dafb7945e1918e9fd59654b83316ace4ff837d84739d2dd1fddfafabc7d7b0c3ea1dcb9a07433a8cce72f1
+DIST toml-7db18be32494855199ed827ac389e161914bd20d.gh.tar.gz 202100 BLAKE2B 79eed1e7a0ab31db435e2e9f242e9e285182da1f744b7355d805e74832baa548bff0352c249ecbdcc2e0bb9763c91e925e1a472aa81ffc5ab67c5f6bf754af76 SHA512 c428ebaa090ea688943d40e463df2d2ea4352e2cd01be48ac33d91055cb43a9bbd94c1c51464fada2a4a5389065832d65927a5581090517dc9d61fc85f87599b
+DIST toml_datetime-0.6.5.crate 10910 BLAKE2B 93a21ab2784e96ee2e6b56c7b4f733f6ac4c68c1e7d7dac3fbd8aceedb3580e25b4a9c7d9c3f9b5ed152560353b3e80906e37824956dc4ea90bc6f039768f6cb SHA512 502bdedbcbd2ac9fbaa5f4b51f2e409af185f3633f01f8845de5e3b007f2400215ddeb82ac588bc915ed5a5f9d7251ccf93fe2a57cd40fca2927f4c0966357e6
+DIST toml_datetime-0.6.8.crate 12028 BLAKE2B 62113366771f22b437b2ed0d3bb2489ae9078cb589cfad2ad2e92c81ddbda48f689e5a573366eea4f54c2b3cbc6b37eaa8b442b6d935b631a992de4917268757 SHA512 d38b98db3b2d4eebd3001d88e2135b6fdbae63b200f7e900c6bb9c121dd3f170e557332bd26f237312c1cbef61666716b0cf550c2d730f86fa7cd9eb5f64a16f
+DIST toml_edit-0.19.15.crate 95324 BLAKE2B f989f96d571693ff81572af6c05a6f51b673e478f22d20a6b166c45909902ac80280ea92ec5c3567327df90100a47fb7504845fc39bbcff6756af6c1a89e2221 SHA512 46d6bd2fea957392ae0ad7e687dad7743b76ee8e8ec76c80d6374ea294d3d09b6f73df0a82c821b9ee3b5268987a4136aa825034309f3cbc1947dbd1af1505dc
+DIST toml_edit-0.22.24.crate 106399 BLAKE2B 7a28b08a5eac9c9d43243173e1b87f763127d4685f07e4792cb7bdf3d871faafd183129eac29c6785718a48b7f8e8804a9a568ac7d0b6af26c5fdc53e37f1475 SHA512 67798e7ec7b2cdbe895b0edbb50f5fcb86a11acc674605a42795e15ee5ceb8d1a3cc1249c6a914b397574ee4bcb7ffd7417598f766c6f36215ab5f5761134319
+DIST udev-0.2.0.crate 10460 BLAKE2B c965b1a2da11117fee0d21a54ed27a7600a4f543e42670a6ce97bfb27890bf79a607307b127b43f33d5e528dc6d67d2addf572a68072abec35b70f67141aabe2 SHA512 c476d695ef98e02bab489b173af93cee5b69be7a5f7ac0adfe565ec4c02a9785c2ea423e7bb8f2e37da6c8a089d974bc0f0acd892a5cb94746c4b0f531c7fa93
+DIST unicode-ident-1.0.12.crate 42168 BLAKE2B 4cede03c08758ccd6bf53a0d0057d7542dfdd0c93d342e89f3b90460be85518a9fd24958d8b1da2b5a09b5ddbee8a4263982194158e171c2bba3e394d88d6dac SHA512 bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920
+DIST unicode-ident-1.0.17.crate 47704 BLAKE2B cafb0d9dbeabd44d45c73dfec9855d9cc8e41482ff75b7b1f4fc4423e2eeb2a5a04f7e3ce0f721fda6acf1e02f2bae77c6bb346b48bc26ab1972255b080c190d SHA512 1eaf422163126796f3181f8a3cee319ce0492e75c0c293def441872b39eba8282a95e058d0fd5dd39a8d6f3304d4ae13420a0eed901f71c157d5da99e08e1437
+DIST unicode-ident-1.0.8.crate 41962 BLAKE2B 3e3394a421460b0cdd56f96e1149b3816651ffd7064f9ec85c12050917d0b271eeee4bc3f6d3f0a3c1596635df3dac54bd610243d34e459743fe29b3b931a237 SHA512 8104999c6fff002c5aa109e2ca75ce3eaf772155d31dff87bcf39e3eb3da58b6cb543717be7b55acdb0cb1a4bd2a3d2e9c9974f7f75b6528668f5ef665ef4088
+DIST unicode-width-0.1.10.crate 18968 BLAKE2B 6174e307fd3ee290d0a5d1d31233baaa5315cdb73f19b8580718e9f9eb04cfd3aeaeb474af1e50c4b9fecc6fc777937dedc527c9dc9ed14ccf42af099e591f31 SHA512 9836a8d489d18ea1ecfe1957ed6d5da7dce825e138cd1848aef093fa8d2eb83fcf01eabb1a2446df4f5ede4e67316e9e81b5d58b59d4e8c5d67870e8fa5dca3b
+DIST uninitialized-0.0.2.crate 3617 BLAKE2B 84705de3c516681ef95e7233e46f8ed92c941bcbc845d9ece1046f341c5ddb09540dff2c4dd23b8a2df8479ff182b2768ada74f8fbeadce785db963be253993b SHA512 9f72527b6f16c4b79b421eb04467865fceeba0715e2b97c6b70aa6c41c44a70a1ec3e06e645c9712bde2f0fae971af77317bcb95757762dafb3998d107038157
+DIST unsafe-libyaml-0.2.11.crate 62101 BLAKE2B 7ba17f2c19d96fc8999448594ba67bfc0eceaff47a39e560f856d13229ad5e69a9c8ba8794ec814e6b7c3cb7d597b7c7a366c8e880f17c0efc6a03a5677d82bf SHA512 a42c95eaed1ae2e438d3ba19ccd92337327c34f6174a43db80e1f37c507154249c7510e93f81726890c6032c89fe21b1876582afb7fbb811e3931480c4727712
+DIST unsafe-libyaml-0.2.5.crate 61185 BLAKE2B 4a604b9e91259a0e5160159e2adaf0f5a597f4212491e1061b5767d53159ccaf807afb1139b3a18edc830cc46c7b2a5a856eadba09bde61d329190058e3befa8 SHA512 eb574f1e1b9cb671321d6b5823f47136b271194318a13d5a52cc2f05e4d1bd1c5b50c9ccd5f9c6f3c59d31751881d2d36b7d2904945838c099ea3602ea084cc6
+DIST utf8parse-0.2.2.crate 13499 BLAKE2B 095b5d219ab8ff04c06fd6303e03d913ae36a57845f0b2ca3217a40e31a54cb0fb5ecedbde165d28f5f60f1553d8252986d7098fa83befc84a7cb20bf3b76144 SHA512 f3dbf78fe924f1dc3cf9498b6e43fb10174699463f31091a7a8136d8f31ec84fc00e80e3d8551b7e86257e8b3573cfddb56fc0de797fdb2cde0e962a8f239266
+DIST v4l-0.14.0.crate 42222 BLAKE2B e75bea247241a9f9f794986b7f51584aa874e1e70e8645da333d24f6058eb98a248c3ef6adeb9f249bf43d8aeba67e36a2053a03968c2bc190fa22ff3090fc9a SHA512 f7cb552c0fdaaeb5b4fef15545782e0f7f95f30629deffc17c8e40ef35605e77ac96b124f5c4cd2b4e1ad94827352f48a12f76758583cdb3bbdfbad0933c6739
+DIST v4l-sys-0.3.0.crate 1233 BLAKE2B edfdfb6543bdbb4b90773f7a1cdd6bb8aa4fb62168d2333220dbf568fad60d75ee4fb3f3f5518c6cf9da2a791560a957dcb0b5ace2ae7368820049c948c5f6d2 SHA512 6edf4d129d29bf3b85824cf24b3d2b6a467777c922f359060f47e06ac4e8eb190df2950277200a96f2693a214b77a86d9af51c6ba59c4100ecb6bc15b918ae95
+DIST void-1.0.2.crate 2356 BLAKE2B 41578fb5507f94e7d135f9595cec107ed00a926f4968df8b59792d1676ba5b6980cd67310f820fc37a9c14ebe43a171833fa8dfc09eac5dd42f2ebe808632a83 SHA512 1cc7d282600dc0164d7e410aa895d5dc99de1174991549c6733c94cc2027026517f66797751d737869eae58c560fa26edbf43f36b3015eb2fd99828fe40e0aa1
+DIST wasi-0.10.0+wasi-snapshot-preview1.crate 26964 BLAKE2B 525db01649a5981ee82ad80a1a4bab9baffd235262452675619f36a1b454017a74593c53c129f8c30b865994bbe30ef19cebaad9d245ccf54b9b07ef70d5d8ec SHA512 88e2da617f50d9ebfb1e0c5857321fb86b5ee88ae8a8d199d3cc092e0f39688a2cb68503f7c6bb09dd6bc50a9a03597a1eb2e032150fbd0d0b8afa02ad771c88
+DIST wasi-0.11.0+wasi-snapshot-preview1.crate 28131 BLAKE2B fe501889f25d65e2d032f885cc50c4f8bf7dd70fd5cbc438de349838370d8699e9627b0a4fc76030ea9fe6d508f41d0c9928a875fdbc47e73bfb17241cf7b155 SHA512 043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f
+DIST wasm-bindgen-0.2.100.crate 48288 BLAKE2B 8fc4f71c7d6cef15f131a9bdbb50e3eaf9f3894a5b6c1d73876824efb731b46e8c3449947893103f23bc15cad228a1b8bcccd45ada20df53b3f3dde6e419c184 SHA512 2a8ea7ec669efe10f5701dc3b2bf496e33afa70c31dbc65fda5191c9c28ddde54fa38bb168a41b0319a4ff0bb5ccd897ce51ccd7e523e647b3544fb390f8a4e3
+DIST wasm-bindgen-0.2.83.crate 169618 BLAKE2B f6158596c80a0385bee0a05bd9cf0b3beee83a7958efb40244956b4fec2c83baa1a1b4605eb604f313db3508a7911c78f645acbb19f6fc93eef27e9f7f0ac109 SHA512 ec93d1334417d0329e113d5f2da7f16c0f1209d71e5cbd21a2dc9278d877e70ca2327ff7863b40505504883ed51d6bf20dda98c22ef44011a47c604a7b44e82d
+DIST wasm-bindgen-0.2.92.crate 184119 BLAKE2B ca256c686bb3854492bad6afe3cd27dab314561a1ea2e0205579820066b462bacdb2cc01075fb420bd20eb33b03a648ce1ff46feee04d8759ea8aa990ff8232a SHA512 6e46501276c0d4befbf930c816d6ae6c3764e3b5ce0ef4aafa627a6ea371f1a056ecc15970a817e9e9bf51c0a2ffa57df427d758b2d367beb6a474d75b8939a5
+DIST wasm-bindgen-backend-0.2.100.crate 32111 BLAKE2B 6bbbef709753e22230176121388a95fdb8f4dd32e0755dce5bf6c1127c54a236af292f319d14b5cd97bdb310fee65288e8f404921b83693e287164cf9d589a2e SHA512 a2ee30c1185644f989af6be34e93149a791c05125de24c0ff91c320f683f6f5d939fe42b8ca09d629096388a39256469f8b96a6e35722ccfdbe8d978c9a51770
+DIST wasm-bindgen-backend-0.2.83.crate 25620 BLAKE2B 3cbba20a2f5344c0ed2791de7b04ee294746606289ba83a9c139b53b56edf31eab8d3b3802cec309d5395e2404bbd75b7fab5d748a9961b36906fabeb0e66493 SHA512 dd1b65733e4d0a198d61a5287bb75db3e03ef738d2c2dcd3ce3e873c27d41c90cfcbb775ad40b2a546190db8d7213e5866f8e3f9913c28fe4b43a49054bfea44
+DIST wasm-bindgen-backend-0.2.92.crate 28348 BLAKE2B 425497aa7a023b70549c55d5a15dfed80877c5503863b186c0a9d11b29551c4606c1cd5961c7dfdeee2eab5662952ad7ad215513e93abe727a33f84b30bd181e SHA512 22e4f5848d62bd1fd55f4f054ea1293e223b3cd6f916bde2523eec10388e733623492c3a3246d61831e696dffdec5d000b95e9aa1217be6e38dd6459872166aa
+DIST wasm-bindgen-macro-0.2.100.crate 9663 BLAKE2B b8a3fc6b3571f8caf106a9e9f3d9cc48b86096d714c5d0208f03d44d47003b3b26441b5cd68bcd49a8c05758bc1b984e460fb62ab439ff2d68c72766ce20358f SHA512 a1942f838eff5fd54406b573d81fe18f262df48a19535245b1a46cb31db2a022746e861d72e5286c632969d15d416655460d3865309c4947cd3d7965dead5c42
+DIST wasm-bindgen-macro-0.2.83.crate 12075 BLAKE2B 3b358ba7c2a3563840f54f11170cde78044a8f087659daa7c784fa252f5dd4b7f6200eba425d95b568e50fd43c04c32a509994ddaf5248120feaa67586402150 SHA512 eb83e06f998e858cf25494c1d171984269e72db798147d4d1d8aeeb25ea7a35c5986b882011e131968621742ceecff976430856b4e8b7d7fd7f1237767cf01b4
+DIST wasm-bindgen-macro-0.2.92.crate 13835 BLAKE2B 1f2202fdaeb78c32813eaf08b2fbd7aa9c469228386df71b8ffd81a46374e39a7104b79991f702505f9b7e97957fda8574517fbb03e3f9e93098c4d6e1e46be3 SHA512 78d2ddac88a9ca3ca5eef8a7af81cdf2366187a67d844e69f65f6893d1949f9723ab5f2be762c2217a5c21aee2f3dbc2d5d55ef0c9cbf0dec0d52d67a6ba7462
+DIST wasm-bindgen-macro-support-0.2.100.crate 26243 BLAKE2B c18e35978b62dd2822ba8a4f6955cd5154b2a0d81b8e8032c2f8bda42c1c25f74a13f3e1c3a7bf47a823de2517a237e6a1aef18b189bf1f2b934123c58d1eb34 SHA512 0d03eaeda37c9c6ae06c0fa96e872b54780c4cf545b621c730dcc113dd59a8cb6333c5e3818f51365f71913b9669d8a870a06e70729722d03c07a49cff8a4fdf
+DIST wasm-bindgen-macro-support-0.2.83.crate 18530 BLAKE2B f305c9fc1f7bba5bee65a1c76fc2216c98aa306a072286e1ced048ab191f49e7e4436bf2f67d4c1fff558f59b2cef5e9b40e9e940268128ab1ebeb3c64696107 SHA512 804014c75ae5f8c1c7f0fad3f3209887fa346d74029e5f6e1830e44f7318719e65c4a643c71d87cf388f131fd370af40d536bbc15fc11c25b91cb785f56a908b
+DIST wasm-bindgen-macro-support-0.2.92.crate 20092 BLAKE2B 8e274a4053e7afc680740e811c3941478caf5342e2206e3d28cdea9f9514bedbfa4f2b6bc608817306a1c455dd7134b7e17f0f04499f6bfb5302f29b041ac7ae SHA512 92543d2aad0b25798ec20e68832b823610c2c01401088cd9cac1684a86ddd1b567b3e2712acb862060f9c645a0df509b01d9834fd3e13cdaab97960f66d8daa7
+DIST wasm-bindgen-shared-0.2.100.crate 8570 BLAKE2B 886fa72cae891d4c2311e12e28f0a7bde9bcaca893603afa3428a402726b3b2bcdb6cb7dca6fdf983bd8fac5f049f0543537f2161318769b43c7eebfc906df27 SHA512 3fca8ddd1c6b2f66f70f6608c9b341822603f1c0dd71d47d27c6be8fe3f2c88598619946627720734b48cf999cafd0c63a08af5db28ea78a1538d2165a5fba61
+DIST wasm-bindgen-shared-0.2.83.crate 7194 BLAKE2B 4dd1cffea1edc98dcd4993bf6fdde8100fe00d1e97322ce8bc0bdefd0c659047c8c726e5da27b59fd7a6621c1e5385c18204e834c6c6fd1fb9de52f95b40e40d SHA512 2bfc1a068fa41a9ecacce7bda494fc0485c57ccb102c1d76c87a42e00ad30b944b0cb788642e8339d050a0e831ce8306844a77292ab9f79ed765b65cdb4765e7
+DIST wasm-bindgen-shared-0.2.92.crate 7263 BLAKE2B e54895486b9a31cc4651b7bb042059cc84421708346c06a9764315ebd4f440a1077520c7d325d6889a690b2c06aa185d40cede2dc4d061b363594cbde20fac31 SHA512 70e3a22731ed8aec428433bf30500eb3f62e3b7f4f1be34d8bb3b6f34f99690fc85d49eb413caecab807064494cfec64242c6a42709dffd638046e370bf86e07
+DIST wayland-backend-0.3.8.crate 75317 BLAKE2B 687ad6f5f194401e50184665b637748b5e44efb44543d6453e27a0286b95639f3313b366e1ae0722220deb9e5a636b2d088c9a4f218b1190d6ce7cdf26ef467a SHA512 ee05295e3813eac5364f4408dbe9a580d4a9bfc8e87cc4f683d0e764eb9889f1d24101b9a032f3a5e09a0ef6d1d96af46b4fe62f288c4b6a4fcb59901be0aee1
+DIST wayland-client-0.29.5.crate 71041 BLAKE2B 8473069b5a575509a0a7d518ffe98786282b2e7d726690f8c782b5cc93d31f865d040efda8fdc9132cbe5b338fa9f8cde47d828273bf4d34cd57ffebd8e50b8d SHA512 07405d2749893743f9c6341dcc333203ceac22d96a9c2bddb0777b22fc7d54ecb3cec19f48d4fc60e372c9269f4f85f8aa94378d54f2400f3d41de9b439589a2
+DIST wayland-client-0.31.8.crate 64449 BLAKE2B 24e6991518619c65acf98efc9f28ceead5c76f8b006147c3305cb3c77c8bc856e538be14f7a3b598f0943e8bd6356b2065d3dd9d8607f917e5c28b46abddafc6 SHA512 586b70808a7bfc5f6cc61b0447424fe141107cee4fc561de412d2d50d72f06e12bde4838ec2765a3cfe4a73ebf8e2a79a2e8dc3054a791bf400496c1794ef4bb
+DIST wayland-commons-0.29.5.crate 20771 BLAKE2B 6f13e38ed1278a36bea0bfb1a051feb64edbe21e49a29d0b25490659c496bb287f549a88987f97d14c4d95c90e76ceb7ec8aa8fb597980893809a17fbcaa9225 SHA512 91d1ed58be31c47ae12d6ffe7cb475d9bf040b6aa3a2753bd0f5ab92407165e729f89f52f6972d9fef39aaf0e32a01bdb7e9fb76e04b827133255078abc98778
+DIST wayland-protocols-0.29.5.crate 140859 BLAKE2B 746bdb7e46529f5d33298067a190c2d35f4ceb1c2cb2995745c7728841eda7d8bc4a5ea4d2e9b6f4ee00c599bce9ee49f92e6203adfe27a865c11baabaf9f593 SHA512 d7c21cb1976b9ede6fc13ba3781e11dafab1009a2aeaf792e96ed1816569b9f7c061c6c57990b7274f12e61bb7730421578029749447d46ab6aacf0434422a8f
+DIST wayland-protocols-0.32.6.crate 187909 BLAKE2B 4f4eecbc7dbe93431ffb06494bb503fca314ee9a51b20859cd8423f9ca7d2828334a157873d273fc13aa7147f315b6d65048d358fce6f55bdbd6ec5eeac99b42 SHA512 7d85503df68717e733244bedd44fd0b30771b86f7b06102e1187b62e3b6ddb554b949e23d6f2cf38311c19df51f371b7ae149f452b684dce9586b8a34ff56fdd
+DIST wayland-protocols-wlr-0.3.6.crate 28621 BLAKE2B 499f71af871f4c68d9d2d062adec827ae392c932d24e05c7976a1dd429996ee64a5077ed3c5249cbe50eb54c46e9730bd08781e9206f92fa64f6aac62fcc0a54 SHA512 02ca21f7493d1dbde3de64ee9a30713bf378ba413a102194c29d28da3a33da3eac26070311d55b4401a60bd213581bf8917207ee2b9689c55da20683a9c7df69
+DIST wayland-scanner-0.29.5.crate 17248 BLAKE2B de239ef313e5c4fa4aaebfc4c7aea945634d0de2bb51eca04e81982c9f71933d0ee704696b787922702f60437a3fd55f6026375fc61017bedce6d750bdeafc4c SHA512 7c2ebee011db8714801a3b3af9552129a502f983fc1737a40a520d2a2de92cf003b9bef24f4b55e2e7ffa0c843fbb77096efeb20606b61e74c2c082fa55a2e6d
+DIST wayland-scanner-0.31.6.crate 36365 BLAKE2B 7968ef11a0b9db3281e4460c59a507fec5d8ec527e8cbb1d5546c13a4a40c7c3bb034fa598a3515c94e47c07a9124283b14aa4686f5ac1036b1294670d85d999 SHA512 77bbef3de1619625e5423c7fa7f3c6b6343b6a0dbdf6c6218ae31224a02dfe7fb100f2f5743b686e385dd246cb2f26b60ee2a3f0e42d1a4f6e2be6bf5a8ad503
+DIST wayland-sys-0.29.5.crate 7926 BLAKE2B bf09b522dc69b2a49493e769696196e18bfede5681120ceeee94b0cb3393ed8c4d0d3b1acc967d5231735cbc65d71d13394a25845e30a1ce40e6f8461647daca SHA512 ec99802c44e75840e029b771fcdfb57ba4f0e0f143b012f91eaf661ccedf4eb82122950fec25c6692f24c0f7c123e697e7cca890131f04bc8bb4b670485b2191
+DIST wayland-sys-0.31.6.crate 10049 BLAKE2B a1e8f8cd650985042b1adb44211e88ddaa00783c7b6a81357a9ecbd12f25a49ac14807514052f640530ab0e3131d28ba1c232015402e2691160bea4b90ba27d1 SHA512 377a03c625d8dfdce8d1d598215f962fd395364496bad46364df1a334343315595928dce7cff9929a80aae277b3f4bd1249f966e81b170b661fb1a3a1d871d1b
+DIST which-4.4.0.crate 10889 BLAKE2B 3118f923319f260d6574ee0fd28d641f858a1885c3082090f079ca64acd2a3dd996aafd84803f0f2ae2e58b87d5cadf63059d75e72ff836dbf3ebcf4cee82602 SHA512 8380e5ea79f7768c8b1479c2fbb6e6c8b232f3a8d43b6554b78a370f302fb396d53842678d760ce9fc720fe607cfb9da3e0da4180e4a6ecfef48119105555fd7
+DIST which-4.4.2.crate 15953 BLAKE2B 40ca22cd2f625cb035a1d919ed457a300b482c7751dcee4441974c53d56ce13f1f502535e1f7c0746a01981f4de2e2f761c3a255902d6353db1a4c3c62637448 SHA512 2d12aa1d4c2dbc140e39c8f15bd4ee1eeb8e8de71bcdf579479ef4be860fb0839eaf4cdb818addba242d50420f6e08acaf2bfc979a889e092c83644819246fd5
+DIST widestring-0.3.0.crate 18931 BLAKE2B 2c6553b27675f514996480cf21a9bb31ff5c710fbe9db1d7c57bd5b9f3fae40bae3b5087ac83e50030eecd9fd1c383265206c9433a8f801c1a148d14e64e36c2 SHA512 6a7cc987b2fcb9d1f6d45a2e5f5c7cf4604631e5e1cd7f247e1a80e07f568243d2fcf391029bf0ac100fd9a3ad1de443903b4bd4173295fca2e04eca56956401
+DIST widestring-1.0.2.crate 79706 BLAKE2B 64423d0c485d1596015e9fcee691222a2a69b85a1b13a91651c50c1e3c5ec61c5105232904c6239bb442a2b3f2e808379d802856b93bb62ec8779cbf3db77655 SHA512 cbebac37d87808e791d7839ad69e0b86af49b0e8a354a22e11797915c719937ed5b0cb638e5afc9d710cd1e073eaa9f7db76cd3ca1ec35a71b565f0b8f55407b
+DIST widestring-1.1.0.crate 85046 BLAKE2B 591f8ba6c3c45721d342fd4668805c19915d500b2b46b8e1e75a485ebc772db187acec791205415e5cbf288ee70299a5813a3185d933443d426eb61d7fc6003f SHA512 a4feb959e19d5238e89b0973f040b26849f896e7e9fd567d0e74fbb4972958a4dd76e74de5ea8d407b74cff28f20f9c80446488da6abdbee38aa87a94d683435
+DIST winapi-0.3.9.crate 1200382 BLAKE2B cb5799749ccd935ea2d7068d953cecf19f543d9db7dc16ad4584bb7005373ada34937a3ced7225544d8bc765da599911c7a3190efefb3a25b7c1bb7123b4f673 SHA512 ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97
+DIST winapi-i686-pc-windows-gnu-0.4.0.crate 2918815 BLAKE2B 4d357e4d30f9552972170d65b9a5358b69c46a3e772fe05efc22f3d4ffc1caeeaad7aacdc7abd503a7ad0545f8bd7d22bf351dcb6df76f812fa4d45c34d65df0 SHA512 a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2
+DIST winapi-util-0.1.5.crate 10164 BLAKE2B fc800aceae5249a858c806c3e969ef2545766099872d856ebee51c883d9acf1122278db9607d50ca53eac351502b700fd2463900932d342240f97f683d517963 SHA512 7baeb661f397c4693dfa001fdc774b323c51a7c55caad40f2de5112a1cefd1d6151e3df41fa4ee193460a5905917c83d2b1de5fa10b4bd014ad96690af95c0fd
+DIST winapi-util-0.1.6.crate 12234 BLAKE2B b8db8ec9d7ada5532a22a2d070320174c32ece1f48890e9b028708e194fe72a04287b11910dc2ddc7f9c9674a9d8d39449b3e100725e1f59e59e3047a7e3650b SHA512 b1c949f9bcd34c1949a9d3a7bde6ce62fcf3d2cb66df60af41fe67a9d1acb24e571cdd5ac721be9f1ee4b3af5ef5149b5724ad6e02b558e124ef2a4412d12db9
+DIST winapi-x86_64-pc-windows-gnu-0.4.0.crate 2947998 BLAKE2B 2ad1ea8b5fa07d544e910ccba043ae925269b76b26c9da356305b34b86741dd8b9aff0b9ffe3d562db4fcd7d7c46a11ce9e3168b782b1d89ae6881742b7ede82 SHA512 4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513
+DIST windows-core-0.52.0.crate 42154 BLAKE2B 9670bf02261b4ab2a24eff97dad11e305deac823cacfae286965b62b11bc035f19a55ca710eaa4359c8a4905433a94fe62a836b77ddd68f244ad6ac2c9657f58 SHA512 0c8f1c7e63c11bdcf1361150ecc83abbfba8da2c6d28523799bd286bf8aa1df61ffed19175e8cb3ef516a9afb6248b640c2101a2e0c09a99bfd7a18c6741bd36
+DIST windows-link-0.1.0.crate 6153 BLAKE2B 51b34d4e9eefc3d389a205f1cc654b142641c562b036775504fc923ea83702ef9d2bf8909ce439af7f76aabb486405b91c25861510a92c2f8aaf05944912a2ab SHA512 c7e7b6e67b8041534f8bbf36567fc627b54b46bb407743864fd34113e2f30b7ecf4aa6c04ec328ef1b3cdbebe13ce8f9a2c31520d51e1c32732bfce2a1ff015c
+DIST windows-sys-0.42.0.crate 3006791 BLAKE2B 7a0962364ecc416cf0ae7e49cce1298a12d819003e488f6e77aff1a52710f00378638b6a05db5557a031e1b75659587657971ddc63eaab35495133762f99a7b2 SHA512 b07b119688f3e3ad234d36979947f34e8e19988fb62101afbe18ec8afc9c8a4261128939df8bbb849d5c5982422cb4c50dbcba70f2bf401fbb7c605df1b2b354
+DIST windows-sys-0.48.0.crate 2628884 BLAKE2B 551e900de4f67187ef034b60df9fd0e0d8f82a3100ef28e1eabd543ac129d882dc86ffcc1714071aba09e4cb2ae2d2f07ace1a32b99fd989ce525cf05991edab SHA512 bdf534bcf3face31e9ebe11427a911a53f89f4ff5eaea8cccd094e139bfe14b2aec602b1cab1df774794d999477439d9adc6b627a8e33c20334fc348ba2c47ed
+DIST windows-sys-0.52.0.crate 2576877 BLAKE2B 69d6b560ccfc8f679e2678663ba606060d71fa28efa82c8aef8cceaa2c63b06f2052764d60163964f939649a26bbec6361ee4b094555e941fae92070db566980 SHA512 24ee0df246c2b456a4987a9124786a28acd358768cc7d1305bccd81bc5bb8822b81a03fb18d35174a520b911c6d9b685f81a34ab319fee13da3b985273584f03
+DIST windows-sys-0.59.0.crate 2387323 BLAKE2B 3110c8cd2bc005f8c95cd038a8d574af648dc19788fe4485f977376f92e36b911b1a542d669a07ae9cd4ea72a884ab01ec78b8a2b5587456eb202452d1d8fa0d SHA512 d35e009e979633a1f3c8468cd038bd5c8c0381405165ce03497decd7d9edaaac485d704487e4a61d9aaf4e4d011b4248408912df6a0044d50e8457259867e061
+DIST windows-targets-0.48.5.crate 6904 BLAKE2B 7396bb210f37bd51da86f39fca3425c8f6610721d5c4e94f9fafa0a8a8046303b3fcc6979146bcfaa32f4406d242a0455f6cbb220f84c6ff84650e755acf5223 SHA512 e079eeef255a046be7f8e6a31c14f7b230254ebcf05eed2944827bb3d2a0dc30940d87593cf544d5e7ef35f6312b99430efcfb01421d91b02bb9c4bef7d98709
+DIST windows-targets-0.52.4.crate 6310 BLAKE2B 0393bf3e7f8823edc455055e9977798bd6cdc1e523127cf840ee1b9e36febe40e01dcad9875a06aea283dd55443d02f643d42752103a5ec1de933285fe410b17 SHA512 4b2c26468df54b9801e6badd120dcffc15429fc78a614f45efa16d5fed1a36983198fbb621cc3beb4a4f9f0161ef8ddeca3a5c6a6ac48b5589681936f4d2bf50
+DIST windows-targets-0.52.6.crate 6403 BLAKE2B eb98d0a8daeed5fe76e7fa8edb2743e2a3e77dfb9c4ea68605a6ab10532cb7cfc43bc1cea0180869445bd940be762a40136500e26b84ca88b5e0c502004c7a4c SHA512 d6d2dbd96096c6c396dba141a9817e377c35877f3b2fe58b2553280c7cfcb1ed6ee75bd4d62c9b882662de67ddaf0c1049b91530d29c94dd709c230e08eb895f
+DIST windows_aarch64_gnullvm-0.42.1.crate 362795 BLAKE2B 722b45789bcd1d973803b327d44072fbf9c904d448e29ae9e56d2f9d1a3e9b64e06883e4bf5ebf141f1e924235858fd1472e07a744cc5b16a0a3a4fc8ec8f6d4 SHA512 51eb9fa7ea441a9fef590c12576a8bbef74932d40fafde8f9e3a28f2734ce5aee6dd5fa478fb3847443241c8c392bb4abbc6014c71260bf924431779f7184f73
+DIST windows_aarch64_gnullvm-0.48.5.crate 418492 BLAKE2B 5c6f7d73ad05740f0bac304ed1ef9b2ea63b0d6ca8f875552ae299a0b73b1557e8fe996f1c2b69be9f2df350c9288690f49ee62239a2896991364331d6c55462 SHA512 20158d31454488f6053d3ad7b97d7fc6eae6cf37e4ba0e50c28bd29b368505eed64199ae31104d5f97b66846be54e5ed25c0ad31ea850819205c573a31ac0996
+DIST windows_aarch64_gnullvm-0.52.4.crate 433373 BLAKE2B 5678cf2371e4c566b7ff0dd1fabcae92d12ce9f97670524c93fd8c34bf6b09d054e7de2f852302b8d994f52c81015b7cc8a74f529490c7bdd17a3b5d2c88a12e SHA512 dbb914a866873892a8cffecd4ed4977fe6c3fc48a58bb9f88655d86e7f8969cc27e6f5bb7d40eee41ae7d78f6f4be65d46650719321a7697c7b5b99a0f07a5dd
+DIST windows_aarch64_gnullvm-0.52.6.crate 435718 BLAKE2B 8b12ae02892cb69401329034bbca671d13bd268a112120b56b90504707cef89decfbd2560492844a9f0588fab62dc1476ab7e931126b939015d25a8cc91ca334 SHA512 f62b2d942bdb3a9353465b07d47b93de179bb706511aa497e4addd74cff95e689a9b633e7801ce786e73b5ae5f30b506b6faa199c5ab86eefdc1d94652df79c5
+DIST windows_aarch64_msvc-0.42.1.crate 664655 BLAKE2B f4a060b802016a6d77a8ea6ac44c35dfec384acef9c45f932e2b6aca9d3ac48ae031f99e5b58f270d6020b8796e9dd06f7e8ffa7cc5610ea3f69181c2be7adc8 SHA512 f6412bae4b041201ef94e5a159ce90fd6b09816350204d4f573c1afdfb0a6d62d7887fbc2e416b40ec1d4478db521be492edf4703d87482d6d0006a51b827538
+DIST windows_aarch64_msvc-0.48.5.crate 798483 BLAKE2B 60c466d6536426425a34b5ca20da97c8127ebeb4fb9b1363911165bada484f8913fcd50e90410b5661e0c27dbfe8f4eeaa62fb17d1f3566bfc82b6255e11619b SHA512 223f016c6f1a44dbc5c8a8428b39438f75380ea06951b7c26ed0877b19d79410c6fde5e4c7f2c839b6e76159131f39a1230e0e3a208dfc425ba9117e3665c4ff
+DIST windows_aarch64_msvc-0.52.4.crate 828055 BLAKE2B 3088f2f66fc91ad698906315eae7e6c0dd7da5414c28cfa25b24e138fc4a7da40535be09129cd37b8e331d8d6e8c41d0106fba1ef9e5b4ac561140653e9ded4d SHA512 dcc538d0a9c276e7ec415575ec1392bf476219348984d9567f56d5cc7af0f9beeac523a9a6651f763dd4f50f89535a3ea2275d5321ec022c2ee8814e4e84e95b
+DIST windows_aarch64_msvc-0.52.6.crate 832615 BLAKE2B adc8ff61b6dc96d39c92c7d4221ae6aa0575edfc016cfcd046067ca5d8fcfd56d10e8e227be1c038ce34684be22c7ccaf5f18cd5a7638d28fbff4ba15b48b90b SHA512 a3e21305ad0e6de38f5b5ed5d37ee5825b7521064163bcdf31d63341cd87983f54377865d2daf3bb480d2d0aa66d6f598fa09540ec1d71baea74569c86bd213b
+DIST windows_i686_gnu-0.42.1.crate 733428 BLAKE2B c1ca24973aca06b255d9317735cca7a13f7f69293da52dad41df43a5cdf48aac3d40d8b6765cf564905fb71cb548308d757f01167efe7a61da7bd2e2a7080f0a SHA512 61c3271b07df1d4585c875d27cf1686c8f595dcbb79626e8d15ff47228f7b7a4556d3d994566ccceee0d6795a4c76767f85f4579282fc9eed731e04c7e193a57
+DIST windows_i686_gnu-0.48.5.crate 844891 BLAKE2B fdc37cd74a4982056bf22fdb7b84e1c55dc838f3cb19ff3648730a77e673ef4ecc0380b3e4277bb8df2fcfa25f57b69014713d9e3ed27c28e19b25b3ea2ab774 SHA512 931ba5c1e4eb8ae73248e00d9611298d1c4b4b0dae719fdeb9243930cd420a103a7bc2738e0a4887c42c8f25728d6c5d64ad141dc092bc3f1d0f35dbe37d303a
+DIST windows_i686_gnu-0.52.4.crate 875736 BLAKE2B 31ee3017a6db246b0d5fc02e10cdb517a69ceac3dbbc9d41b4051f5dfa1196e4a46e7b3f5f90935560c03bb139b897e5dce69989a3698d9c88ebae923e24ef30 SHA512 9d57260744607eb63453040c532bf3693cf3d8d93c56543ee00aa66adf3a71919e72bdef7811f287167403ade893248f189b797a5d2dcb24ef4e6f3d915a88c6
+DIST windows_i686_gnu-0.52.6.crate 880402 BLAKE2B 5aab8ee07132eccb7695807eb44811beeb0657aadfb672c54e99b6ae39c067ba9b93e38fc69bb5b9b14a9759f263ccd5e301597d2727d83b31b49a409b6bd405 SHA512 a1f6b5dd23d17ec3567bc9d11a4be6f35e196eee21ca342e9b88dbaa6a5f7c46e439c834b77e724f32ac22c0d81573746b3b513a6c944a221b92b2c76fe98822
+DIST windows_i686_gnullvm-0.52.6.crate 475940 BLAKE2B fec4fda8bb2bf319a501a22372fa642ae682e4dee3235b258a028190ee73220bfc55b3142f06249bb4579b17e5fde662bb2b121aefe18544653350d7d0fe7d8e SHA512 95f13af855d530acc0b856214478d4b11b8dbab3f8f79dd223d0b009790c0e46d096fc1773e0277997deb2d5b96c704f17f23c7df11411524629f75415dec99f
+DIST windows_i686_msvc-0.42.1.crate 722583 BLAKE2B e03978daa0ac95d7bd9f594b28360dab647a1fe525f0ae4b44e6842d93c5674d9f202e8bbca99a0d30ecf7d138af0c48eec8e69e08bf285db51e32bcf83a2c54 SHA512 8afa4f92cb7bd96d4fdbefbd8e7bcaa37dee52224d5d8b950c5a537d3bb805bf9781097b8bd44d96e8b62b1290e3a3020557502fa3b357a53df6fea36b318932
+DIST windows_i686_msvc-0.48.5.crate 864300 BLAKE2B 3d3ea8be55e2d6ced0eeda18abe1dffb925a1a78f456d683e4450d9f2fd287ad2e8494d65b2b770c677a12b3a60d10f0435e16c61880e3867c3657fd44892442 SHA512 70e2fb4fdb006a4cbd43ab2c7e940b277a15fb1790dfa2d1fc1f1fd18bead4886f6dc046e44326603e4894d988578917b8932aba5d9a6a4cc8424911cad9dc7e
+DIST windows_i686_msvc-0.52.4.crate 895530 BLAKE2B 87ec4628472beec8697317662fd599a8ea0ba5a11a0cad6b23f2481f39b3a4e0546d37fade4d715ad06a4798cf7faa6435bafa1e5054105c064cb560468b6025 SHA512 0d5526b21bfb96ab352b5181dcf84ff31007ce338245a374b3b413805239359a689b1a21de56ae998cc13444e40867bc30c4200454b84ef9ffa7117318baef1e
+DIST windows_i686_msvc-0.52.6.crate 901163 BLAKE2B 99ed34e052db5ba77bab240ed5d38ce450be347a794d63ec39b719304c32722c9999b540ab40abe0216318900b7412970df99dfb36d1516a9517cae0c77d1bdc SHA512 ca97913ce202d73266cf55947b868bea7e964a4516b6a096a81aeab6a60ee73867171032ced35e3afccff741ddfb2def7468343b6eceb95253e4d4f349efbf96
+DIST windows_x86_64_gnu-0.42.1.crate 697614 BLAKE2B 3cef0a3da3ce142bbdf932dbb54eb6473070c5722c9ec791dc4077efe2d774d51f8b3d06b3321f8f21cc49764f44d54b3432ee7a0d9376925b422b197f5d557e SHA512 f4c16b587fe407dee1f39df029c52302a0fbd5f519816a8d974fe9c2f928043b14037c701c0f3c9cf2e5c765e82430fd4b71615fe63a66a88159f7b15506f892
+DIST windows_x86_64_gnu-0.48.5.crate 801619 BLAKE2B aa7e7e6a6ff9f9553ada3a0a39a9aa798e9d995a8eef36e0b6fdb2a0db93ddecee5548970575271fe43aec74797a420d0ee231d503b5bad1bd999059261e0e33 SHA512 1d6056fae430b3d042bdff3c6217c76be4b8b9f5dada9bad06beaac2db7d7ab9b0a82e44f498ec88e61afa73e99f56d84d445dc3847732b9ce5d947e08485f74
+DIST windows_x86_64_gnu-0.52.4.crate 831627 BLAKE2B 64d29f6e0837be822d89cc8aaea2514382d2c03b33deb5684df1d6b81573b3817add39d99f66181a762fae7c155e60a8c070affe43a0f2e247fb0c5ddcc7afd9 SHA512 96c673fb330af597fc3c71b53b9b66cacc9f3f64f05dc7cfe4a77447b7545280f065df22b7d91a6b7cf681a442d8b71c9d2dd128e76580664d8598c481cbb95e
+DIST windows_x86_64_gnu-0.52.6.crate 836363 BLAKE2B e2335829155cdbd4a55cc9f9babc237e14e32aab97f6f91afabcdf80d2aee37d6fb4b8669aaf433ff532c85dba59b3d366c7d41b61a2f29b96f960169c900687 SHA512 c4086bb0280042f2bef9b556283b67f8a5cacddd209e1c5fabec63decec6d4fd2d6a7071407973981b98ae0c0cf7034fc612f9e70dc6d3eed9acdec771ae31cb
+DIST windows_x86_64_gnullvm-0.42.1.crate 362788 BLAKE2B fff81e63b86ad04ce22ad3e05ec4cc02c0b791384c93bafb50832f6db9cb7fd9301ad3845339a08dd8cadac1d59f3e8dc9d5f56d7a987989dbfc16b9131af67b SHA512 8cc988b5995a4726bb7518b7fccff528274ad9b2b0160fe247eb240f9ced10db95afe7bff91bfc5a08ebd8237b6821e4a4abad1ff9da45022f1ce7e7586bcf05
+DIST windows_x86_64_gnullvm-0.48.5.crate 418486 BLAKE2B 12a2199d434617c1df1a839e9f435620ad64b40c579f6d0c3677553ad7a48e5765d12c266b04946402e15c92cff2e4ac4979ce2130750ef426e2672119680284 SHA512 c016d5b5e73832b61ff67929d92fa8c16e154656294357266ad29ce1f44db4ca2d2935dba31a6b571187dc838b1d22f1e3b41fefffd1d719a338439adf1646aa
+DIST windows_x86_64_gnullvm-0.52.4.crate 433358 BLAKE2B ffd55fba15ef713bd48caec5ed5f32936e05ac4897b721bd2b041229bc8c7beeca77ca018c3258dcdb09495629aa359d1dadaaf5112d38e7ea54670309d0ddf4 SHA512 f153d86b01e47f17ef08271b69becf7883bab92f96d40cdb1d74432f2bc6a7a65aa4ed931d8f6f4c2679e360bbd8d12037dc2a74a6a444fcaec5e4c784c54c74
+DIST windows_x86_64_gnullvm-0.52.6.crate 435707 BLAKE2B ab77dccd06328cdb00175f41cdbc120594050a9678b7f9820444391fb50aada3911a91ea00f3a6db2b4fa1820fd23bc9a007dfbe65ad41417c26ee1137ef9b96 SHA512 67681f5859e249c56b0183181811f6212cc7008d6471dad78aecc7ebe3d027686b19210b8aa9014c554410f69f913d21ce2aca928eea905eab779bea26464cbd
+DIST windows_x86_64_msvc-0.42.1.crate 664606 BLAKE2B 6c460cfa392aad0d11add200d652a42ee1a60052570527c4e85405f765255375729d4e26287f5246dcad65fa89ccadea23c5135171b311e6da5027e33149c547 SHA512 a651b1a34f101125f929c1d1f5e933691c7a5c19d0bb0c501fb6812236d2771805428e3bd5e05be7d72715595f5fc9e7978dd7934e5d92e9b78a41c2ece695b2
+DIST windows_x86_64_msvc-0.48.5.crate 798412 BLAKE2B 8abc0721e2fb337fe17c91d278947d36122d9045b839ba0cf3e690202d242265b676f23cc301da5f9d98c56ca4ecb76f7d6f072ee71bf986a1deca87020b90e5 SHA512 fa1c5cd14ca2ff0082e2504cf59d317dc4dc6f7138d35c12f95d4476a9c13d8b7f5537d0ee251eee7c99411ad31b22263171b7fbd391daa5d3ea3488ceaa61a0
+DIST windows_x86_64_msvc-0.52.4.crate 828019 BLAKE2B 08163b63d934114457cd64b1c372f8a0cfc1ebf48a2efb41d79031c58ea64e023acd32d2f5075b8b78536998188138562e584ece95f2021b4bc71087ac45f026 SHA512 0671fa3c0463c6d65b525ece8bc91eab2f75cb534de86ba2b1e854d4136fcb439717441881206dba7cfb602493bc24d2aefa96abf8977f5a0fe38d41eadc90f1
+DIST windows_x86_64_msvc-0.52.6.crate 832564 BLAKE2B 8e9a3044654c6de99a9153e7cacd575474e7a8a3d883c67b02132af5d3fc99d03cd5f7a4dd666a3947451d11218e6acc6eb5e2526f012481106cc13453839719 SHA512 21944cd8e3a481b514509e73ae3f62722fe7ed380d37ea0c25f8fbdeba79174dd52ff65d898838da5df4197894b74e00f45d47489418e978753b4e55c7e623e7
+DIST winnow-0.5.40.crate 159316 BLAKE2B aae5076d59b3459c901d918d8aaa97ba8bfcc993b8484344f52e45f1f37deb96d6cd3a1663a67f3c367be2b05d633286f270274c621bda9f3ab72b98bb652cc2 SHA512 525156f08514b0110697360be6e331a68d08f0cb65ee4ba3ac9d101dd2d42a8c89601e7409bdb5652c5b05145626506651010f58a854c47712065334c61ff39c
+DIST winnow-0.7.3.crate 171602 BLAKE2B 0a738c4de042153646245e97361472188ec6c325b07d6a929cbd17e5f0e48dfb46e9c7a6750bea06b66b0b39d4d05e7d4a29003c5957fa05e8919a25376149ba SHA512 dada8441d8054af75cb38084211d4241142da85886ca10c9334a274006eeaef95ea6fbccf727f783f8dd066b84216d6811c92afe09e79c137279f9289d9c6d37
+DIST wluma-4.3.0.gh.tar.gz 35467 BLAKE2B 3e1cdf68ac87767bb20f49c9c01e5c1373e636ae64c3570fc29fd5c57749e6211ebf43946b1410570af3d346ed5771d78a685160843b84af996d05893246720b SHA512 fa4d8eff098152c145ea9900954ec0ba17771176ce3702e6690d80c34393fa08801e8974da8c6494be40118bf47572cbdff74c4c4bc16870feec5f99be7ad426
+DIST wluma-4.4.0.gh.tar.gz 37088 BLAKE2B 6f11539f85077171eddd976ee8eaf646707c47b65b354f8ef806398a337ffdfe4b73db438694c1820f4f1560489d43bc73534dfce467bff785c2f46eeb291bdb SHA512 6311e8f71d530bd57d21f24694bf85eef84f567e41583c2635ad35ac5385bdba60c5526460c674d654696e61e07fecffdfc95e42fd3a536671e29c105f19f174
+DIST wluma-4.9.0.gh.tar.gz 46433 BLAKE2B 02b9a3493dc13b69fd94f0663fadb88da7deb813a0e2c4953fb017a3bb2a66d9fadf56516319bb0f355241767090af40c48a2522754840cd17bccbfbb90c8b1e SHA512 dee0da0ee764d22153da128271c084d19b8d2277c0df00c877079b454fd59f05bce48ca75f448d3eb95b71b3161906f49478278b71490b0eb0f30d39cd62e828
+DIST xdg-2.4.1.crate 14034 BLAKE2B 7fd98ef4e1534d13da125a78cb7425318f1f2f0c7e06a8c8045b2145c1696bf86daf820577aa9757af0deb11951315efd382091b1c73dd3853841388927c2b01 SHA512 23e69abbe79a0977900af37feb9f367a82d0ba4e69fc9421e356a5957920e316379355b1c6eeda1235feb3d028f738c41f520d28665f919e775b20240219e07e
+DIST xdg-2.5.2.crate 14394 BLAKE2B 9d7ad2681ba450b73c66aefd8602a1d32e13e0ec751a368188b61000a5efb3fac943f6e5d6875f409aff6eddff3b2ba22631f71dcda4ea44dac080d551053f4a SHA512 12c7f42d2afd63d8d196511fa069519a0c495fc2555c87c059b96b46d7e2a2c51c31836c48fb329806d312a45a2fd67b4243793aa91e2139e2aa3f05230b2edd
+DIST xml-rs-0.8.19.crate 54051 BLAKE2B 667358226fd5fa1829110ee9b587dae7d95fe1f010f8106f515af12435d3c49b0f9f3c09bb4ec4fa019f8e9b25575b3c5fc2dd5858b37b5bbca9bfa263df842a SHA512 a46796ed542a7396e760ee327ec191e96d61b3fd8b78cef2ab2da75c5290433f422a34cabef20267e8a6a162e0a48fc8f81cd66a5dcf997ddd539e55d9130199
+DIST xml-rs-0.8.4.crate 52690 BLAKE2B 140d4e725ae0e82c949838c1f6d82e1fbb00e2df4d51b74486597302d4a434ccb46bbd6f5e97636b4947c0092793928c29837a3290bb525344e8a27c0951a42b SHA512 b21b0db9ee7cdfddae7c110e4fec714d719e75ba139744c290692d660caa425aa8b1ece644deb5f1879f21c0561b9b412b9ba8931f7f5b4e220ef08f8a7fc5e6
+DIST yaml-rust-0.4.5.crate 47783 BLAKE2B 3e888c5cc7afb43eaf3aaab2b6f47b86df164a66eb54d4e166b965cc84b1e06cd17bd992a0d6ee175d9a73a76e2b44a13167246383ed054afcf3cc1710b309cb SHA512 7621dc8dfd5e7d4a7a8805b2a7e8319b63b852367655f2359d4e3e8fec6c4fad52d75c46ce1161e4c674eac0780b757ce9d34e664e304d8d2beec7afa0363ea0
diff --git a/sys-power/wluma/files/wluma.desktop b/sys-power/wluma/files/wluma.desktop
new file mode 100644
index 000000000000..ab3913ce15eb
--- /dev/null
+++ b/sys-power/wluma/files/wluma.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Version=1.0
+Name=wluma
+Comment=Start the wluma brightness monitor
+Exec=/usr/bin/wluma
+Terminal=false
+Type=Application
+X-GNOME-HiddenUnderSystemd=true
+X-KDE-HiddenUnderSystemd=true
+X-systemd-skip=true
diff --git a/sys-power/wluma/metadata.xml b/sys-power/wluma/metadata.xml
new file mode 100644
index 000000000000..5ae6689f6281
--- /dev/null
+++ b/sys-power/wluma/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>chutzpah@gentoo.org</email>
+ <name>Patrick McLean</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">maximbaz/wluma</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-power/wluma/wluma-4.3.0-r3.ebuild b/sys-power/wluma/wluma-4.3.0-r3.ebuild
new file mode 100644
index 000000000000..1956879e63c8
--- /dev/null
+++ b/sys-power/wluma/wluma-4.3.0-r3.ebuild
@@ -0,0 +1,223 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# Autogenerated by pycargoebuild 0.12.1
+
+EAPI=8
+
+CRATES="
+ aho-corasick@0.7.20
+ android_system_properties@0.1.5
+ anyhow@1.0.68
+ ash@0.37.2+1.3.238
+ atty@0.2.14
+ autocfg@1.1.0
+ bindgen@0.65.1
+ bitflags@1.3.2
+ bumpalo@3.11.1
+ byteorder@1.4.3
+ cc@1.0.78
+ cexpr@0.6.0
+ cfg-if@1.0.0
+ chrono@0.4.23
+ clang-sys@1.4.0
+ codespan-reporting@0.11.1
+ core-foundation-sys@0.6.2
+ core-foundation-sys@0.8.3
+ core-foundation@0.9.3
+ core-graphics-types@0.1.1
+ core-graphics@0.22.3
+ cxx-build@1.0.86
+ cxx@1.0.86
+ cxxbridge-flags@1.0.86
+ cxxbridge-macro@1.0.86
+ ddc-hi@0.4.1
+ ddc-i2c@0.2.1
+ ddc-macos@0.2.0
+ ddc-winapi@0.2.0
+ ddc@0.2.2
+ difflib@0.4.0
+ dirs-sys@0.3.7
+ dirs@4.0.0
+ dlib@0.5.0
+ downcast-rs@1.2.0
+ downcast@0.11.0
+ dtoa@0.4.8
+ edid@0.3.0
+ either@1.8.1
+ env_logger@0.9.3
+ float-cmp@0.9.0
+ foreign-types-shared@0.1.1
+ foreign-types@0.3.2
+ fragile@2.0.0
+ futures-core@0.3.25
+ getrandom@0.2.8
+ glob@0.3.1
+ hashbrown@0.12.3
+ hermit-abi@0.1.19
+ humantime@2.1.0
+ i2c-linux-sys@0.2.1
+ i2c-linux@0.1.2
+ i2c@0.1.0
+ iana-time-zone-haiku@0.1.1
+ iana-time-zone@0.1.53
+ indexmap@1.9.2
+ inotify-sys@0.1.5
+ inotify@0.10.0
+ io-kit-sys@0.1.0
+ itertools@0.10.5
+ itoa@1.0.5
+ js-sys@0.3.60
+ lazy_static@1.4.0
+ lazycell@1.3.0
+ libc@0.2.141
+ libloading@0.7.4
+ libudev-sys@0.1.4
+ link-cplusplus@1.0.8
+ linked-hash-map@0.5.6
+ log@0.4.17
+ mach@0.2.3
+ mach@0.3.2
+ mccs-caps@0.1.0
+ mccs-db@0.1.2
+ mccs@0.1.0
+ memchr@1.0.2
+ memchr@2.5.0
+ memoffset@0.6.5
+ minimal-lexical@0.2.1
+ mio@0.8.5
+ mockall@0.11.4
+ mockall_derive@0.11.4
+ nix@0.24.3
+ nom@3.2.1
+ nom@7.1.3
+ normalize-line-endings@0.3.0
+ num-integer@0.1.45
+ num-traits@0.2.15
+ nvapi-sys@0.1.3
+ nvapi@0.1.4
+ once_cell@1.17.0
+ peeking_take_while@0.1.2
+ pin-project-lite@0.2.9
+ pkg-config@0.3.26
+ predicates-core@1.0.5
+ predicates-tree@1.0.7
+ predicates@2.1.5
+ prettyplease@0.2.9
+ proc-macro2@1.0.62
+ quote@1.0.28
+ redox_syscall@0.2.16
+ redox_users@0.4.3
+ regex-syntax@0.6.29
+ regex@1.7.3
+ resize-slice@0.1.3
+ rustc-hash@1.1.0
+ ryu@1.0.12
+ scoped-tls@1.0.1
+ scratch@1.0.3
+ serde@1.0.152
+ serde_derive@1.0.152
+ serde_yaml@0.7.5
+ serde_yaml@0.9.16
+ shlex@1.1.0
+ smallvec@1.10.0
+ socket2@0.4.7
+ syn@1.0.109
+ syn@2.0.22
+ termcolor@1.2.0
+ termtree@0.4.0
+ thiserror-impl@1.0.38
+ thiserror@1.0.38
+ time@0.1.45
+ tokio@1.24.1
+ udev@0.2.0
+ unicode-ident@1.0.8
+ unicode-width@0.1.10
+ uninitialized@0.0.2
+ unsafe-libyaml@0.2.5
+ v4l-sys@0.3.0
+ v4l@0.14.0
+ void@1.0.2
+ wasi@0.10.0+wasi-snapshot-preview1
+ wasi@0.11.0+wasi-snapshot-preview1
+ wasm-bindgen-backend@0.2.83
+ wasm-bindgen-macro-support@0.2.83
+ wasm-bindgen-macro@0.2.83
+ wasm-bindgen-shared@0.2.83
+ wasm-bindgen@0.2.83
+ wayland-client@0.29.5
+ wayland-commons@0.29.5
+ wayland-protocols@0.29.5
+ wayland-scanner@0.29.5
+ wayland-sys@0.29.5
+ which@4.4.0
+ widestring@0.3.0
+ winapi-i686-pc-windows-gnu@0.4.0
+ winapi-util@0.1.5
+ winapi-x86_64-pc-windows-gnu@0.4.0
+ winapi@0.3.9
+ windows-sys@0.42.0
+ windows_aarch64_gnullvm@0.42.1
+ windows_aarch64_msvc@0.42.1
+ windows_i686_gnu@0.42.1
+ windows_i686_msvc@0.42.1
+ windows_x86_64_gnu@0.42.1
+ windows_x86_64_gnullvm@0.42.1
+ windows_x86_64_msvc@0.42.1
+ xdg@2.4.1
+ xml-rs@0.8.4
+ yaml-rust@0.4.5
+"
+
+declare -A GIT_CRATES=(
+ [toml]='https://github.com/HarveyHunt/toml;7db18be32494855199ed827ac389e161914bd20d;toml-%commit%/crates/toml'
+ [toml_datetime]='https://github.com/HarveyHunt/toml;7db18be32494855199ed827ac389e161914bd20d;toml-%commit%/crates/toml_datetime'
+)
+inherit udev cargo systemd
+
+DESCRIPTION="Automatic brightness adjustment based on screen contents and ALS"
+HOMEPAGE="https://github.com/maximbaz/wluma"
+SRC_URI="
+ https://github.com/maximbaz/wluma/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="ISC"
+# Dependent crate licenses
+LICENSE+=" Apache-2.0 BSD-2 BSD ISC MIT Unicode-DFS-2016"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ media-libs/libv4l:=
+ media-libs/vulkan-loader:=
+"
+RDEPEND="${DEPEND}"
+
+QA_FLAGS_IGNORED="/usr/bin/${PN}"
+
+DOCS=(
+ README.md
+)
+
+src_install() {
+ cargo_src_install
+ udev_dorules 90-wluma-backlight.rules
+
+ insinto /etc/xdg/autostart
+ doins "${FILESDIR}"/wluma.desktop
+ systemd_douserunit "${PN}.service"
+
+ insinto /usr/share/${P}
+ doins config.toml
+
+ einstalldocs
+}
+
+pkg_postinst() {
+ udev_reload
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/sys-power/wluma/wluma-4.4.0-r2.ebuild b/sys-power/wluma/wluma-4.4.0-r2.ebuild
new file mode 100644
index 000000000000..dbaaedafd98b
--- /dev/null
+++ b/sys-power/wluma/wluma-4.4.0-r2.ebuild
@@ -0,0 +1,236 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# Autogenerated by pycargoebuild 0.13.2
+
+EAPI=8
+
+CRATES="
+ addr2line@0.21.0
+ adler@1.0.2
+ aho-corasick@1.1.3
+ android-tzdata@0.1.1
+ android_system_properties@0.1.5
+ anyhow@1.0.81
+ ash@0.37.3+1.3.251
+ atty@0.2.14
+ autocfg@1.2.0
+ backtrace@0.3.71
+ bindgen@0.65.1
+ bitflags@1.3.2
+ bitflags@2.5.0
+ bumpalo@3.15.4
+ byteorder@1.5.0
+ cc@1.0.90
+ cexpr@0.6.0
+ cfg-if@1.0.0
+ chrono@0.4.37
+ clang-sys@1.7.0
+ core-foundation-sys@0.8.6
+ core-foundation@0.9.4
+ core-graphics-types@0.1.3
+ core-graphics@0.23.1
+ dbus@0.9.7
+ ddc-hi@0.4.1
+ ddc-i2c@0.2.2
+ ddc-macos@0.2.1
+ ddc-winapi@0.2.1
+ ddc@0.2.2
+ difflib@0.4.0
+ dlib@0.5.2
+ downcast-rs@1.2.0
+ downcast@0.11.0
+ dtoa@0.4.8
+ edid@0.3.0
+ either@1.10.0
+ env_logger@0.9.3
+ equivalent@1.0.1
+ errno@0.3.8
+ float-cmp@0.9.0
+ foreign-types-macros@0.2.3
+ foreign-types-shared@0.3.1
+ foreign-types@0.5.0
+ fragile@2.0.0
+ futures-core@0.3.30
+ gimli@0.28.1
+ glob@0.3.1
+ hashbrown@0.14.3
+ hermit-abi@0.1.19
+ home@0.5.9
+ humantime@2.1.0
+ i2c-linux-sys@0.2.1
+ i2c-linux@0.1.2
+ i2c@0.1.0
+ iana-time-zone-haiku@0.1.2
+ iana-time-zone@0.1.60
+ indexmap@2.2.6
+ inotify-sys@0.1.5
+ inotify@0.10.2
+ io-kit-sys@0.4.1
+ itertools@0.10.5
+ itoa@1.0.11
+ js-sys@0.3.69
+ lazy_static@1.4.0
+ lazycell@1.3.0
+ libc@0.2.153
+ libdbus-sys@0.2.5
+ libloading@0.8.3
+ libudev-sys@0.1.4
+ linked-hash-map@0.5.6
+ linux-raw-sys@0.4.13
+ log@0.4.21
+ mach2@0.4.2
+ mach@0.3.2
+ mccs-caps@0.1.3
+ mccs-db@0.1.3
+ mccs@0.1.3
+ memchr@1.0.2
+ memchr@2.7.2
+ memoffset@0.6.5
+ minimal-lexical@0.2.1
+ miniz_oxide@0.7.2
+ mio@0.8.11
+ mockall@0.11.4
+ mockall_derive@0.11.4
+ nix@0.24.3
+ nom@3.2.1
+ nom@7.1.3
+ normalize-line-endings@0.3.0
+ num-traits@0.2.18
+ nvapi-sys@0.1.3
+ nvapi@0.1.4
+ object@0.32.2
+ once_cell@1.19.0
+ peeking_take_while@0.1.2
+ pin-project-lite@0.2.14
+ pkg-config@0.3.30
+ predicates-core@1.0.6
+ predicates-tree@1.0.9
+ predicates@2.1.5
+ prettyplease@0.2.17
+ proc-macro2@1.0.79
+ quote@1.0.35
+ regex-automata@0.4.6
+ regex-syntax@0.8.3
+ regex@1.10.4
+ resize-slice@0.1.3
+ rustc-demangle@0.1.23
+ rustc-hash@1.1.0
+ rustix@0.38.32
+ ryu@1.0.17
+ scoped-tls@1.0.1
+ serde@1.0.197
+ serde_derive@1.0.197
+ serde_spanned@0.6.5
+ serde_yaml@0.7.5
+ serde_yaml@0.9.34+deprecated
+ shlex@1.3.0
+ smallvec@1.13.2
+ socket2@0.5.6
+ syn@1.0.109
+ syn@2.0.57
+ termcolor@1.4.1
+ termtree@0.4.1
+ thiserror-impl@1.0.58
+ thiserror@1.0.58
+ tokio@1.37.0
+ toml@0.7.8
+ toml_datetime@0.6.5
+ toml_edit@0.19.15
+ udev@0.2.0
+ unicode-ident@1.0.12
+ uninitialized@0.0.2
+ unsafe-libyaml@0.2.11
+ v4l-sys@0.3.0
+ v4l@0.14.0
+ void@1.0.2
+ wasi@0.11.0+wasi-snapshot-preview1
+ wasm-bindgen-backend@0.2.92
+ wasm-bindgen-macro-support@0.2.92
+ wasm-bindgen-macro@0.2.92
+ wasm-bindgen-shared@0.2.92
+ wasm-bindgen@0.2.92
+ wayland-client@0.29.5
+ wayland-commons@0.29.5
+ wayland-protocols@0.29.5
+ wayland-scanner@0.29.5
+ wayland-sys@0.29.5
+ which@4.4.2
+ widestring@1.0.2
+ winapi-i686-pc-windows-gnu@0.4.0
+ winapi-util@0.1.6
+ winapi-x86_64-pc-windows-gnu@0.4.0
+ winapi@0.3.9
+ windows-core@0.52.0
+ windows-sys@0.48.0
+ windows-sys@0.52.0
+ windows-targets@0.48.5
+ windows-targets@0.52.4
+ windows_aarch64_gnullvm@0.48.5
+ windows_aarch64_gnullvm@0.52.4
+ windows_aarch64_msvc@0.48.5
+ windows_aarch64_msvc@0.52.4
+ windows_i686_gnu@0.48.5
+ windows_i686_gnu@0.52.4
+ windows_i686_msvc@0.48.5
+ windows_i686_msvc@0.52.4
+ windows_x86_64_gnu@0.48.5
+ windows_x86_64_gnu@0.52.4
+ windows_x86_64_gnullvm@0.48.5
+ windows_x86_64_gnullvm@0.52.4
+ windows_x86_64_msvc@0.48.5
+ windows_x86_64_msvc@0.52.4
+ winnow@0.5.40
+ xdg@2.5.2
+ xml-rs@0.8.19
+ yaml-rust@0.4.5
+"
+
+inherit udev cargo systemd
+
+DESCRIPTION="Automatic brightness adjustment based on screen contents and ALS"
+HOMEPAGE="https://github.com/maximbaz/wluma"
+SRC_URI="
+ https://github.com/maximbaz/wluma/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="ISC"
+# Dependent crate licenses
+LICENSE+=" Apache-2.0 BSD-2 BSD ISC MIT Unicode-DFS-2016"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ media-libs/libv4l:=
+ media-libs/vulkan-loader:=
+"
+RDEPEND="${DEPEND}"
+
+QA_FLAGS_IGNORED="/usr/bin/${PN}"
+
+DOCS=(
+ README.md
+)
+
+src_install() {
+ cargo_src_install
+ udev_dorules 90-wluma-backlight.rules
+
+ insinto /etc/xdg/autostart
+ doins "${FILESDIR}"/wluma.desktop
+ systemd_douserunit "${PN}.service"
+
+ insinto /usr/share/${P}
+ doins config.toml
+
+ dodoc "${DOCS[@]}"
+}
+
+pkg_postinst() {
+ udev_reload
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/sys-power/wluma/wluma-4.9.0.ebuild b/sys-power/wluma/wluma-4.9.0.ebuild
new file mode 100644
index 000000000000..4f130a472bdd
--- /dev/null
+++ b/sys-power/wluma/wluma-4.9.0.ebuild
@@ -0,0 +1,229 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# Autogenerated by pycargoebuild 0.13.5
+
+EAPI=8
+
+CRATES="
+ addr2line@0.24.2
+ adler2@2.0.0
+ aho-corasick@1.1.3
+ android-tzdata@0.1.1
+ android_system_properties@0.1.5
+ anstream@0.6.18
+ anstyle-parse@0.2.6
+ anstyle-query@1.1.2
+ anstyle-wincon@3.0.7
+ anstyle@1.0.10
+ anyhow@1.0.96
+ ash@0.38.0+1.3.281
+ autocfg@1.4.0
+ backtrace@0.3.74
+ bindgen@0.65.1
+ bitflags@1.3.2
+ bitflags@2.8.0
+ bumpalo@3.17.0
+ byteorder@1.5.0
+ cc@1.2.15
+ cexpr@0.6.0
+ cfg-if@1.0.0
+ chrono@0.4.40
+ clang-sys@1.8.1
+ colorchoice@1.0.3
+ core-foundation-sys@0.8.7
+ core-foundation@0.10.0
+ core-graphics-types@0.2.0
+ core-graphics@0.24.0
+ dbus@0.9.7
+ ddc-hi@0.4.1
+ ddc-i2c@0.2.2
+ ddc-macos@0.2.2
+ ddc-winapi@0.2.2
+ ddc@0.2.2
+ downcast-rs@1.2.1
+ downcast@0.11.0
+ drm-fourcc@2.2.0
+ dtoa@0.4.8
+ edid@0.3.0
+ either@1.14.0
+ env_filter@0.1.3
+ env_logger@0.11.6
+ equivalent@1.0.2
+ errno@0.3.10
+ foreign-types-macros@0.2.3
+ foreign-types-shared@0.3.1
+ foreign-types@0.5.0
+ fragile@2.0.0
+ futures-core@0.3.31
+ gimli@0.31.1
+ glob@0.3.2
+ hashbrown@0.15.2
+ home@0.5.11
+ humantime@2.1.0
+ i2c-linux-sys@0.2.1
+ i2c-linux@0.1.2
+ i2c@0.1.0
+ iana-time-zone-haiku@0.1.2
+ iana-time-zone@0.1.61
+ indexmap@2.7.1
+ inotify-sys@0.1.5
+ inotify@0.11.0
+ io-kit-sys@0.4.1
+ is_terminal_polyfill@1.70.1
+ itertools@0.14.0
+ itoa@1.0.14
+ js-sys@0.3.77
+ lazy_static@1.5.0
+ lazycell@1.3.0
+ libc@0.2.170
+ libdbus-sys@0.2.5
+ libloading@0.8.6
+ libudev-sys@0.1.4
+ linked-hash-map@0.5.6
+ linux-raw-sys@0.4.15
+ log@0.4.26
+ mach2@0.4.2
+ mccs-caps@0.1.3
+ mccs-db@0.1.3
+ mccs@0.1.3
+ memchr@1.0.2
+ memchr@2.7.4
+ minimal-lexical@0.2.1
+ miniz_oxide@0.8.5
+ mio@1.0.3
+ mockall@0.13.1
+ mockall_derive@0.13.1
+ nom@3.2.1
+ nom@7.1.3
+ num-traits@0.2.19
+ nvapi-sys@0.1.3
+ nvapi@0.1.4
+ object@0.36.7
+ once_cell@1.20.3
+ peeking_take_while@0.1.2
+ pin-project-lite@0.2.16
+ pkg-config@0.3.31
+ predicates-core@1.0.9
+ predicates-tree@1.0.12
+ predicates@3.1.3
+ prettyplease@0.2.29
+ proc-macro2@1.0.93
+ quick-xml@0.37.2
+ quote@1.0.38
+ regex-automata@0.4.9
+ regex-syntax@0.8.5
+ regex@1.11.1
+ resize-slice@0.1.3
+ rustc-demangle@0.1.24
+ rustc-hash@1.1.0
+ rustix@0.38.44
+ rustversion@1.0.19
+ ryu@1.0.19
+ serde@1.0.218
+ serde_derive@1.0.218
+ serde_spanned@0.6.8
+ serde_yaml@0.7.5
+ serde_yaml@0.9.34+deprecated
+ shlex@1.3.0
+ smallvec@1.14.0
+ socket2@0.5.8
+ syn@2.0.98
+ termtree@0.5.1
+ thiserror-impl@1.0.69
+ thiserror@1.0.69
+ tokio@1.43.0
+ toml@0.8.20
+ toml_datetime@0.6.8
+ toml_edit@0.22.24
+ udev@0.2.0
+ unicode-ident@1.0.17
+ uninitialized@0.0.2
+ unsafe-libyaml@0.2.11
+ utf8parse@0.2.2
+ v4l-sys@0.3.0
+ v4l@0.14.0
+ void@1.0.2
+ wasi@0.11.0+wasi-snapshot-preview1
+ wasm-bindgen-backend@0.2.100
+ wasm-bindgen-macro-support@0.2.100
+ wasm-bindgen-macro@0.2.100
+ wasm-bindgen-shared@0.2.100
+ wasm-bindgen@0.2.100
+ wayland-backend@0.3.8
+ wayland-client@0.31.8
+ wayland-protocols-wlr@0.3.6
+ wayland-protocols@0.32.6
+ wayland-scanner@0.31.6
+ wayland-sys@0.31.6
+ which@4.4.2
+ widestring@1.1.0
+ winapi-i686-pc-windows-gnu@0.4.0
+ winapi-x86_64-pc-windows-gnu@0.4.0
+ winapi@0.3.9
+ windows-core@0.52.0
+ windows-link@0.1.0
+ windows-sys@0.52.0
+ windows-sys@0.59.0
+ windows-targets@0.52.6
+ windows_aarch64_gnullvm@0.52.6
+ windows_aarch64_msvc@0.52.6
+ windows_i686_gnu@0.52.6
+ windows_i686_gnullvm@0.52.6
+ windows_i686_msvc@0.52.6
+ windows_x86_64_gnu@0.52.6
+ windows_x86_64_gnullvm@0.52.6
+ windows_x86_64_msvc@0.52.6
+ winnow@0.7.3
+ xdg@2.5.2
+ yaml-rust@0.4.5
+"
+
+inherit udev cargo systemd
+
+DESCRIPTION="Automatic brightness adjustment based on screen contents and ALS"
+HOMEPAGE="https://github.com/maximbaz/wluma"
+SRC_URI="
+ https://github.com/maximbaz/wluma/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="ISC"
+# Dependent crate licenses
+LICENSE+=" Apache-2.0 BSD ISC MIT Unicode-3.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ media-libs/libv4l:=
+ media-libs/vulkan-loader:=
+"
+RDEPEND="${DEPEND}"
+
+QA_FLAGS_IGNORED="/usr/bin/${PN}"
+
+DOCS=(
+ README.md
+)
+
+src_install() {
+ cargo_src_install
+ udev_dorules 90-wluma-backlight.rules
+
+ insinto /etc/xdg/autostart
+ doins "${FILESDIR}"/wluma.desktop
+ systemd_douserunit "${PN}.service"
+
+ insinto /usr/share/${P}
+ doins config.toml
+
+ dodoc "${DOCS[@]}"
+}
+
+pkg_postinst() {
+ udev_reload
+}
+
+pkg_postrm() {
+ udev_reload
+}