%global debug_package %{nil} Name: apple-extras Version: 0.8.0 Release: 1%{?dist} Summary: Userspace for Apple features on Asahi Linux License: MIT Source0: apple-extras-%{version}.tar.gz BuildRequires: cargo-rpm-macros >= 26 BuildRequires: gcc BuildRequires: pkgconfig(dbus-1) BuildRequires: systemd-rpm-macros %description Rust tools for Apple features on Asahi Linux. Each tool ships as its own subpackage; this package itself installs nothing. Every crate in the workspace is built and its tests run in %%check, but a crate only gets a subpackage once the tool it replaces has been verified on hardware: publishing one earlier would let a routine upgrade swap a working tool for an untested one. findmy-beacon and airdrop-contacts are waiting on that. %package -n instant-hotspot Summary: Apple Instant Hotspot client: start and join a same-account iPhone's hotspot Requires: bluez Requires: NetworkManager Requires: polkit %description -n instant-hotspot Asks a nearby iPhone on the same Apple account to turn on Personal Hotspot over Rapport (BLE L2CAP), using the Rapport identity of an Apple device on that account, then joins the network with NetworkManager. The phone needs no interaction. The user unit watches NetworkManager and joins whenever the machine is offline, idling on D-Bus signals rather than polling. Credentials go in ~/.config/instant-hotspot/ (rapport_selfidentity.bin, rapport_selfidentity_gena.bin). %package -n darkwake Summary: Connected sleep with scheduled dark wakes Requires: iw Requires: polkit Requires: util-linux %description -n darkwake Keeps an Apple Silicon laptop in s2idle while waking it on a schedule to sync, then goes back to sleep. Needs the kernel s2idle wake timer. %prep %autosetup -n apple-extras-%{version} %cargo_prep -N # build online: the crates are not packaged for Fedora sed -i 's/^offline = true$//' .cargo/config.toml %build %cargo_build %install install -Dpsm0755 target/rpm/instant-hotspot %{buildroot}%{_bindir}/instant-hotspot install -Dm644 crates/instant-hotspot/instant-hotspot.service %{buildroot}%{_userunitdir}/instant-hotspot.service install -Dm644 crates/instant-hotspot/49-instant-hotspot.rules %{buildroot}%{_datadir}/polkit-1/rules.d/49-instant-hotspot.rules install -Dpsm0755 target/rpm/darkwake %{buildroot}%{_bindir}/darkwake install -Dm644 crates/darkwake/darkwake.service %{buildroot}%{_unitdir}/darkwake.service install -Dm644 crates/darkwake/darkwake-sync.target %{buildroot}%{_unitdir}/darkwake-sync.target install -Dm644 crates/darkwake/50-darkwake.rules %{buildroot}%{_datadir}/polkit-1/rules.d/50-darkwake.rules install -Dm644 crates/darkwake/darkwake.conf %{buildroot}%{_sysconfdir}/darkwake.conf %check %cargo_test %post -n instant-hotspot %systemd_user_post instant-hotspot.service %preun -n instant-hotspot %systemd_user_preun instant-hotspot.service %postun -n instant-hotspot %systemd_user_postun_with_restart instant-hotspot.service %files -n instant-hotspot %license LICENSE %doc crates/instant-hotspot/README.md %{_bindir}/instant-hotspot %{_userunitdir}/instant-hotspot.service %{_datadir}/polkit-1/rules.d/49-instant-hotspot.rules %files -n darkwake %license LICENSE %doc crates/darkwake/README.md %{_bindir}/darkwake %{_unitdir}/darkwake.service %{_unitdir}/darkwake-sync.target %{_datadir}/polkit-1/rules.d/50-darkwake.rules %config(noreplace) %{_sysconfdir}/darkwake.conf %changelog * Fri Oct 30 2026 Lachlan Marie - 0.8.0-1 - darkwake: Rust rewrite, no dependencies beyond the standard library - findmy-beacon and airdrop-contacts crates land here too, built and tested but not yet packaged, pending hardware verification * Fri Oct 30 2026 Lachlan Marie - 0.7.2-1 - instant-hotspot: keep the hotspot profile metered and below real Wi-Fi, so NetworkManager never prefers cellular data on its own * Fri Oct 30 2026 Lachlan Marie - 0.7.1-1 - instant-hotspot: wait for the profile, not the ActiveConnection object NetworkManager discards, which read as a failed join - instant-hotspot: retry the association; the phone drops the first attempt - instant-hotspot: only act after 8s offline, so a reconnect does not trigger it * Thu Oct 29 2026 Lachlan Marie - 0.7.0-1 - Monorepo for the Apple userspace tools, one subpackage each - instant-hotspot: Rust rewrite, ~4 MB resident and no CPU while idle - Version starts above every package it replaces so upgrades are clean