Name: makima-deckery Version: 0.3.0 Release: 1%{?dist} Summary: Steam Deck-native input remapper for KDE Plasma desktop License: MIT URL: https://github.com/Plasma-Deckery/makima-deckery # Neither Source is fetched automatically. Both are generated by `make srpm` # (see .copr/Makefile) before rpmbuild ever runs — Copr's SCM "make srpm" # source method runs that target with internet access before the isolated # %build chroot starts, so cargo vendor always reflects Cargo.lock at build # time. # `make srpm` places both files under these exact names in _sourcedir. # Source0 is written as a real URL only so `git archive`'s output has a # citable origin — it is not downloaded from that URL by anything. Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz # Source1 has no meaningful upstream URL — it is pure build output, never # published anywhere, so it is a bare filename rather than a URL. Source1: %{name}-%{version}-vendor.tar.gz BuildRequires: rust BuildRequires: cargo # Provides the %%cargo_build / %%cargo_prep / %%cargo_install macros used # below. Without it, %%{cargo_build} is not expanded and gets executed # literally as a shell command, which fails with "no job control" and a # bad %%build exit status. BuildRequires: rust-packaging BuildRequires: gcc BuildRequires: pkgconfig(libevdev) BuildRequires: pkgconfig(libudev) BuildRequires: systemd-rpm-macros Requires: systemd Recommends: deckery-tray %description makima-deckery reads raw evdev/hidraw input from the Steam Deck controller, applies TOML-configured remaps and combos, and emits standard uinput events. Supports Gaming Mode auto-detection, multitouch trackpad emulation, haptic feedback, per-application config via KWin D-Bus, and live state export — all without root, without Steam, and without X11. The udev rule included in this package grants the active session user access to /dev/uinput via systemd-logind (uaccess tag). No group membership or elevated privileges are required. %prep %autosetup -n %{name}-%{version} # Unpack vendored Cargo dependencies. cargo-config.toml is `cargo vendor`'s # own captured stdout output (see .copr/Makefile) — not hand-written, since # it must also cover any git dependencies (source replacement entries per # git URL), not just crates-io. tar xf %{SOURCE1} mkdir -p .cargo cp cargo-config.toml .cargo/config.toml %build %{cargo_build} %install # Binary install -Dm755 target/rpm/makima-deckery \ %{buildroot}%{_bindir}/makima-deckery # Systemd user service (adapted for system install: ExecStart=/usr/bin/ instead of %h/.local/bin/) install -Dm644 packaging/makima.service \ %{buildroot}%{_userunitdir}/makima.service # udev rule (grants /dev/uinput access via uaccess — no group membership needed) install -Dm644 udev/50-makima.rules \ %{buildroot}%{_udevrulesdir}/50-makima.rules %post %systemd_user_post makima.service udevadm control --reload-rules 2>/dev/null || true %preun %systemd_user_preun makima.service %postun udevadm control --reload-rules 2>/dev/null || true %files %license LICENSE %doc README.md %{_bindir}/makima-deckery %{_userunitdir}/makima.service %{_udevrulesdir}/50-makima.rules %changelog * Sat Aug 15 2026 Philipp Schimmelfennig - 0.3.0-1 - Initial RPM packaging - Gaming Mode: automatic detection of Steam games, disables remapping while in-game - Multitouch trackpad emulation via virtual uinput MT devices - Haptic feedback with configurable pulse chains - Per-application config via KWin D-Bus - Live state export to /tmp/makima-state.json