# Vendored Rust application package %global crate kairpods Name: %{crate} Version: 0.2.0 Release: 1%{?dist} Summary: Native AirPods integration for KDE Plasma 6 License: GPL-3.0-or-later URL: https://github.com/can1357/kAirPods Source0: %{url}/archive/v%{version}/kAirPods-%{version}.tar.gz # Rust dependencies - using vendored dependencies BuildRequires: cargo-rpm-macros >= 24 BuildRequires: rust >= 1.88.0 BuildRequires: cargo # System dependencies for compilation BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(bluez) BuildRequires: gcc # KDE/Qt dependencies for plasmoid packaging BuildRequires: kf6-kpackage BuildRequires: systemd-rpm-macros # Runtime dependencies Requires: kf6-kpackage Requires: kf6-plasma Requires: bluez Requires: dbus # This package provides both the service and the plasma widget Provides: plasma6-applet-kairpods = %{version}-%{release} %description kAirPods provides native AirPods integration for KDE Plasma 6, featuring: - Real-time battery monitoring for AirPods, AirPods Max, case, and individual earbuds - Noise control switching between ANC, Transparency, and Off modes - Ear detection status and control - Native Plasma integration with theme-aware panel widget - Zero-lag Bluetooth L2CAP communication for instant updates - System-wide D-Bus service architecture (no root required) %prep %autosetup -n kAirPods-%{version} %generate_buildrequires # Skip automatic cargo dependency generation since many crates aren't packaged %build cd service # Build with cargo directly, allowing network access for dependencies export RUSTFLAGS="%{build_rustflags}" cargo build --release --locked %install # Install the Rust service binary manually install -Dm755 service/target/release/kairpodsd %{buildroot}%{_bindir}/kairpodsd # Install systemd user service install -Dm644 service/systemd/user/kairpodsd.service \ %{buildroot}%{_userunitdir}/kairpodsd.service # Install the plasmoid mkdir -p %{buildroot}%{_datadir}/plasma/plasmoids/org.kairpods.plasma cp -r plasmoid/* %{buildroot}%{_datadir}/plasma/plasmoids/org.kairpods.plasma/ %check # Skip cargo tests for now since we're using network dependencies # cd service # cargo test --release --locked %post %systemd_user_post kairpodsd.service %preun %systemd_user_preun kairpodsd.service %postun %systemd_user_postun_with_restart kairpodsd.service %files %license LICENSE %doc README.md %doc INSTALL.md %doc CONTRIBUTING.md %doc DBUS_EXAMPLES.md %{_bindir}/kairpodsd %{_userunitdir}/kairpodsd.service %{_datadir}/plasma/plasmoids/org.kairpods.plasma/ %changelog * Sat Aug 30 2025 Automatic Release - 0.2.0-1 - Initial kAirPods package for Fedora - Native AirPods integration for KDE Plasma 6 - Includes both D-Bus service and Plasma widget