%global debug_package %{nil} %global _build_id_links none Name: zoeyos-desktop Version: 44.1.1 Release: 1.202610230151%{?dist} Summary: ZoeyOS Chiikawa Meadow KDE Plasma 6 Desktop Suite, Shell QML & Daemon License: MIT URL: https://copr.fedorainfracloud.org/coprs/shooey623/zoeyos Source0: %{name}-%{version}.tar.gz Requires: bash Requires: coreutils Requires: qt6-qtbase Requires: qt6-qtdeclarative %description Official ZoeyOS (Chiikawa Meadow Edition) desktop package. Provides the 15 Chiikawa KDE Plasma 6 Plasmoids, org.chiikawa.shell QML module, chiikawa-daemon background service, Plymouth/KSplash themes, Firefox uBlock policy, Equibop Discord live theme, and automatic COPR sync. Updating this package via `sudo dnf update` (or background auto-sync) automatically updates both system-wide paths and active user profiles in /etc/skel and /home/*. %prep %setup -q -n %{name}-%{version} %build # Pre-compiled Go daemon and QML assets are assembled during SRPM creation %install rm -rf %{buildroot} # 1. Install shared QML module into /usr/lib64/qt6/qml/org/chiikawa/shell install -d -m 0755 %{buildroot}/usr/lib64/qt6/qml/org/chiikawa/shell cp -a ./rice/. %{buildroot}/usr/lib64/qt6/qml/org/chiikawa/shell/ # 2. Install Plasma 6 Plasmoids, Wallpaper plugin, DesktopTheme, and Look-and-Feel install -d -m 0755 \ %{buildroot}%{_datadir}/plasma/plasmoids \ %{buildroot}%{_datadir}/plasma/wallpapers \ %{buildroot}%{_datadir}/plasma/desktoptheme \ %{buildroot}%{_datadir}/plasma/look-and-feel \ %{buildroot}%{_datadir}/wallpapers/ChiikawaMeadow/contents/images cp -a ./rice/plasma/plasmoids/. %{buildroot}%{_datadir}/plasma/plasmoids/ cp -a ./rice/plasma/wallpapers/. %{buildroot}%{_datadir}/plasma/wallpapers/ cp -a ./rice/plasma/desktoptheme/. %{buildroot}%{_datadir}/plasma/desktoptheme/ cp -a ./rice/plasma/look-and-feel/. %{buildroot}%{_datadir}/plasma/look-and-feel/ cp -a ./rice/inspiration/wallpapers/. %{buildroot}%{_datadir}/wallpapers/ChiikawaMeadow/contents/images/ 2>/dev/null || true cp -a ./rice/inspiration/chiikabu/wallpaper_*.jpg %{buildroot}%{_datadir}/wallpapers/ChiikawaMeadow/contents/images/ 2>/dev/null || true # 3. Install user-level config overlays under /usr/share/zoeyos/skel install -d -m 0755 %{buildroot}/usr/share/zoeyos/skel/.config %{buildroot}/usr/share/zoeyos/skel/.local cp -a ./zoey-configs/config/. %{buildroot}/usr/share/zoeyos/skel/.config/ 2>/dev/null || true cp -a ./zoey-configs/.config/. %{buildroot}/usr/share/zoeyos/skel/.config/ 2>/dev/null || true cp -a ./zoey-configs/local/. %{buildroot}/usr/share/zoeyos/skel/.local/ 2>/dev/null || true cp -a ./zoey-configs/home/. %{buildroot}/usr/share/zoeyos/skel/ 2>/dev/null || true # 3b. Install Sho's custom release note (if provided via `./publish-copr.sh "note"`) if [ -f ./release-note.txt ]; then install -m 0644 ./release-note.txt %{buildroot}/usr/share/zoeyos/release-note.txt else echo "Gyu~ big hug from Sho, Chiikawa & Chiikabu! ♥" > %{buildroot}/usr/share/zoeyos/release-note.txt chmod 0644 %{buildroot}/usr/share/zoeyos/release-note.txt fi # 3c. Install ZoeyOS Chiikawa Logo for Plymouth Boot Watermark & KDE About System if [ -f ./rice/inspiration/chiikabu/sprite_chiikawa_hugging_chiikabu.png ]; then install -d -m 0755 %{buildroot}%{_datadir}/pixmaps %{buildroot}%{_datadir}/icons/hicolor/256x256/apps install -m 0644 ./rice/inspiration/chiikabu/sprite_chiikawa_hugging_chiikabu.png %{buildroot}%{_datadir}/pixmaps/zoeyos-logo.png install -m 0644 ./rice/inspiration/chiikabu/sprite_chiikawa_hugging_chiikabu.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/zoeyos-logo.png fi # 3d. Install MonoLisaCode Nerd Font & MonoLisaText Nerd Font system-wide + Fontconfig CJK fallback if [ -d ./zoey-configs/local/share/fonts/MonoLisaNerdFont ]; then install -d -m 0755 %{buildroot}%{_datadir}/fonts/MonoLisaNerdFont cp -a ./zoey-configs/local/share/fonts/MonoLisaNerdFont/. %{buildroot}%{_datadir}/fonts/MonoLisaNerdFont/ fi if [ -f ./zoey-configs/config/fontconfig/conf.d/60-zoeyos-monolisa.conf ]; then install -d -m 0755 %{buildroot}%{_sysconfdir}/fonts/conf.d install -m 0644 ./zoey-configs/config/fontconfig/conf.d/60-zoeyos-monolisa.conf %{buildroot}%{_sysconfdir}/fonts/conf.d/60-zoeyos-monolisa.conf fi # 4. Install chiikawa-daemon & CLI wrappers (/usr/bin/chiikawa-ctl & /usr/bin/zoeyos-updater) install -d -m 0755 %{buildroot}%{_bindir} install -m 0755 ./rice/bin/chiikawa-daemon %{buildroot}%{_bindir}/chiikawa-daemon cat > %{buildroot}%{_bindir}/chiikawa-ctl << 'EOF' #!/usr/bin/bash if [ -x "$HOME/.local/share/chiikawa-shell/qml/org/chiikawa/shell/scripts/chiikawa-ctl.sh" ]; then exec "$HOME/.local/share/chiikawa-shell/qml/org/chiikawa/shell/scripts/chiikawa-ctl.sh" "$@" fi exec /usr/lib64/qt6/qml/org/chiikawa/shell/scripts/chiikawa-ctl.sh "$@" EOF chmod 0755 %{buildroot}%{_bindir}/chiikawa-ctl cat > %{buildroot}%{_bindir}/zoeyos-updater << 'EOF' #!/usr/bin/bash if [ -x "$HOME/.local/share/chiikawa-shell/qml/org/chiikawa/shell/scripts/zoeyos-updater.sh" ]; then exec "$HOME/.local/share/chiikawa-shell/qml/org/chiikawa/shell/scripts/zoeyos-updater.sh" "$@" fi exec /usr/lib64/qt6/qml/org/chiikawa/shell/scripts/zoeyos-updater.sh "$@" EOF chmod 0755 %{buildroot}%{_bindir}/zoeyos-updater # 5. Install systemd user units (/usr/lib/systemd/user) install -d -m 0755 %{buildroot}/usr/lib/systemd/user cat > %{buildroot}/usr/lib/systemd/user/chiikawa-daemon.service << 'EOF' [Unit] Description=Chiikawa KDE Plasma 6 Companion Daemon (Audio, KWin, Weather, SysInfo & IPC) PartOf=graphical-session.target After=graphical-session.target [Service] Type=simple ExecStart=/usr/bin/chiikawa-daemon kwin-bridge Restart=on-failure RestartSec=2 [Install] WantedBy=graphical-session.target EOF cat > %{buildroot}/usr/lib/systemd/user/zoeyos-auto-update.service << 'EOF' [Unit] Description=ZoeyOS Silent COPR Rice Auto-Sync After=network-online.target graphical-session.target [Service] Type=oneshot ExecStart=/usr/bin/zoeyos-updater --auto-sync EOF cat > %{buildroot}/usr/lib/systemd/user/zoeyos-auto-update.timer << 'EOF' [Unit] Description=Check Sho's ZoeyOS COPR Repository for Rice Updates [Timer] OnStartupSec=2min OnUnitActiveSec=15min Persistent=true [Install] WantedBy=timers.target EOF cat > %{buildroot}/usr/lib/systemd/user/zoeyos-gaming-setup.service << 'EOF' [Unit] Description=ZoeyOS Out-of-the-Box Steam Proton, Shader & GE-Proton Setup After=network-online.target graphical-session.target [Service] Type=oneshot ExecStart=/usr/lib64/qt6/qml/org/chiikawa/shell/scripts/zoeyos-gaming-setup.sh [Install] WantedBy=graphical-session.target EOF # 6. Install /etc/profile.d/chiikawa-qml.sh so QML2_IMPORT_PATH resolves both user and system paths install -d -m 0755 %{buildroot}%{_sysconfdir}/profile.d cat > %{buildroot}%{_sysconfdir}/profile.d/chiikawa-qml.sh << 'EOF' export QML2_IMPORT_PATH="$HOME/.local/share/chiikawa-shell/qml:/usr/lib64/qt6/qml:${QML2_IMPORT_PATH:-}" export QML_IMPORT_PATH="$HOME/.local/share/chiikawa-shell/qml:/usr/lib64/qt6/qml:${QML_IMPORT_PATH:-}" EOF chmod 0644 %{buildroot}%{_sysconfdir}/profile.d/chiikawa-qml.sh # 7. Install /etc/sudoers.d/zoeyos-updater for passwordless COPR background sync & 1-click updates install -d -m 0750 %{buildroot}%{_sysconfdir}/sudoers.d cat > %{buildroot}%{_sysconfdir}/sudoers.d/zoeyos-updater << 'EOF' %wheel ALL=(root) NOPASSWD: /usr/bin/dnf5 makecache --repo=zoeyos-copr, /usr/bin/dnf5 upgrade -y --repo=zoeyos-copr zoeyos-desktop, /usr/bin/dnf5 upgrade --refresh -y EOF chmod 0440 %{buildroot}%{_sysconfdir}/sudoers.d/zoeyos-updater # 8. Install Firefox Out-of-the-Box Policy (uBlock Origin + Clean Start Page) install -d -m 0755 %{buildroot}%{_sysconfdir}/firefox/policies cat > %{buildroot}%{_sysconfdir}/firefox/policies/policies.json << 'EOF' { "policies": { "DisablePocket": true, "DisableTelemetry": true, "DisableFirefoxStudies": true, "DontCheckDefaultBrowser": true, "NoDefaultBookmarks": true, "OverrideFirstRunPage": "", "OverridePostUpdatePage": "", "FirefoxHome": { "Search": true, "TopSites": true, "SponsoredTopSites": false, "Highlights": false, "Pocket": false, "SponsoredPocket": false, "Snippets": false }, "ExtensionSettings": { "uBlock0@raymondhill.net": { "installation_mode": "normal_installed", "install_url": "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi" } } } } EOF # 9. Install the ZoeyOS COPR repository file so `dnf update` always pulls from COPR if [ -f ./zoeyos-copr.repo ]; then install -d -m 0755 %{buildroot}%{_sysconfdir}/yum.repos.d install -m 0644 ./zoeyos-copr.repo %{buildroot}%{_sysconfdir}/yum.repos.d/zoeyos-copr.repo fi %posttrans # Refresh system font cache for MonoLisaText Nerd Font & MonoLisaCode Nerd Font fc-cache -f >/dev/null 2>&1 || true # Sync updated Plasmoids, QML module, wallpapers, and themes into /etc/skel and all existing user homes # because KDE Plasma & QML prioritize ~/.local/share over /usr/share when ~/.local/share exists. if [ -x /usr/lib64/qt6/qml/org/chiikawa/shell/scripts/install-plasma.sh ]; then bash /usr/lib64/qt6/qml/org/chiikawa/shell/scripts/install-plasma.sh --skel /etc/skel >/dev/null 2>&1 || true cp -rf /usr/share/zoeyos/skel/. /etc/skel/ 2>/dev/null || true # Update Plymouth watermark if Plymouth spinner theme is present if [ -f /usr/share/pixmaps/zoeyos-logo.png ] && [ -d /usr/share/plymouth/themes/spinner ]; then cp -f /usr/share/pixmaps/zoeyos-logo.png /usr/share/plymouth/themes/spinner/watermark.png 2>/dev/null || true fi for u in $(awk -F: '$3 >= 1000 && $3 < 60000 {print $1}' /etc/passwd); do uhome="$(getent passwd "$u" | cut -d: -f6)" ugid="$(getent passwd "$u" | cut -d: -f4)" uid="$(getent passwd "$u" | cut -d: -f3)" if [ -n "$uhome" ] && [ -d "$uhome" ]; then bash /usr/lib64/qt6/qml/org/chiikawa/shell/scripts/install-plasma.sh --skel "$uhome" >/dev/null 2>&1 || true cp -rf /usr/share/zoeyos/skel/.config/. "$uhome/.config/" 2>/dev/null || true cp -rf /usr/share/zoeyos/skel/.local/. "$uhome/.local/" 2>/dev/null || true cp -f /usr/share/zoeyos/skel/.face.icon "$uhome/.face.icon" 2>/dev/null || true mkdir -p "$uhome/.config/systemd/user/timers.target.wants" "$uhome/.config/systemd/user/graphical-session.target.wants" ln -sf /usr/lib/systemd/user/zoeyos-auto-update.timer "$uhome/.config/systemd/user/timers.target.wants/zoeyos-auto-update.timer" 2>/dev/null || true ln -sf /usr/lib/systemd/user/zoeyos-gaming-setup.service "$uhome/.config/systemd/user/graphical-session.target.wants/zoeyos-gaming-setup.service" 2>/dev/null || true chown -R "$u:$ugid" "$uhome/.local" "$uhome/.config" "$uhome/.face.icon" 2>/dev/null || true # Reload systemd user units, restart chiikawa-daemon, and push Sho's update note if logged in if [ -S "/run/user/${uid}/bus" ]; then su - "$u" -c "XDG_RUNTIME_DIR=/run/user/${uid} DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus systemctl --user daemon-reload && systemctl --user enable --now zoeyos-auto-update.timer && systemctl --user restart chiikawa-daemon.service" >/dev/null 2>&1 || true if [ -f /usr/share/zoeyos/release-note.txt ]; then NOTE="$(head -n 5 /usr/share/zoeyos/release-note.txt | tr '\n' ' ' | sed 's/[[:space:]]*$//')" su - "$u" -c "XDG_RUNTIME_DIR=/run/user/${uid} DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus /usr/bin/chiikawa-ctl shoNote \"$NOTE\"" >/dev/null 2>&1 || true fi fi fi done fi %files %{_bindir}/chiikawa-daemon %{_bindir}/chiikawa-ctl %{_bindir}/zoeyos-updater /usr/lib/systemd/user/chiikawa-daemon.service /usr/lib/systemd/user/zoeyos-auto-update.service /usr/lib/systemd/user/zoeyos-auto-update.timer /usr/lib/systemd/user/zoeyos-gaming-setup.service %{_sysconfdir}/profile.d/chiikawa-qml.sh %attr(0440,root,root) %{_sysconfdir}/sudoers.d/zoeyos-updater %config(noreplace) %{_sysconfdir}/firefox/policies/policies.json %config(noreplace) %{_sysconfdir}/fonts/conf.d/60-zoeyos-monolisa.conf %config(noreplace) %{_sysconfdir}/yum.repos.d/zoeyos-copr.repo /usr/lib64/qt6/qml/org/chiikawa/shell %{_datadir}/fonts/MonoLisaNerdFont %{_datadir}/plasma/plasmoids/org.chiikawa.* %{_datadir}/plasma/wallpapers/org.chiikawa.wallpaper %{_datadir}/plasma/desktoptheme/chiikawa-meadow %{_datadir}/plasma/look-and-feel/org.chiikawa.meadow.desktop %{_datadir}/wallpapers/ChiikawaMeadow %{_datadir}/icons/hicolor/256x256/apps/zoeyos-logo.png %{_datadir}/pixmaps/zoeyos-logo.png /usr/share/zoeyos %changelog * Thu Oct 22 2026 Sho - 44.1.0-1 - ZoeyOS Chiikawa Meadow KDE Plasma 6 Desktop Suite with silent COPR auto-sync, custom notes, Plymouth/KSplash, Firefox uBlock, Equibop live theme, and gaming setup