Name: shiva-core Version: 1.0 Release: 25%{?dist} Summary: ShivaOS — Branding, configuration et base système License: MIT URL: https://shivaos.com BuildArch: noarch Requires: shiva-pulse Requires: zram-generator Obsoletes: fedora-release-identity-kde-desktop < 45 Obsoletes: fedora-release-identity-workstation < 45 Obsoletes: fedora-release-identity-basic < 45 %description Branding complet ShivaOS : wallpaper, icônes Kickoff, os-release, SDDM, désactivation KWallet et plasma-welcome, repo APT configuré. %prep # no sources %build # no compilation %install mkdir -p %{buildroot} # os-release : pas de fichier dans %install — écrit via %post pour éviter # le conflit RPM avec fedora-release-common qui possède /usr/lib/os-release # --- repo shivaos --- mkdir -p %{buildroot}/etc/yum.repos.d cat > %{buildroot}/etc/yum.repos.d/shivaos.repo << 'EOF' [shivaos] name=ShivaOS 44 — Pure Gaming Ecosystem baseurl=https://packages.redhat.com/api/pulp-content/public-copr/freuja/ShivaOs/fedora-$releasever-$basearch/ enabled=1 gpgcheck=1 gpgkey=https://download.copr.fedorainfracloud.org/results/freuja/ShivaOs/pubkey.gpg repo_gpgcheck=0 EOF # --- KWallet désactivé système --- mkdir -p %{buildroot}/etc/xdg cat > %{buildroot}/etc/xdg/kwalletrc << 'EOF' [Wallet] Enabled=false First Use=false EOF cat > %{buildroot}/etc/xdg/kded6rc << 'EOF' [Module-kwalletd] autoload=false [Module-plasma_welcome] autoload=false EOF # --- plasma-welcomerc système --- cat > %{buildroot}/etc/xdg/plasma-welcomerc << 'EOF' [General] LastStartedVersion=99.0.0 ShowOnStartup=false EOF # --- shiva-ai.conf --- mkdir -p %{buildroot}/etc cat > %{buildroot}/etc/shiva-ai.conf << 'EOF' backend=auto groq_model=llama-3.3-70b-versatile ollama_model=phi3:mini EOF # --- Wallpaper --- mkdir -p %{buildroot}/usr/share/wallpapers/ShivaOS/contents/images # Le fichier wallpaper est installé séparément via shiva-branding # --- AppStream metainfo (notes de version dans Discover) --- mkdir -p %{buildroot}/usr/share/metainfo cat > %{buildroot}/usr/share/metainfo/com.shivaos.core.metainfo.xml << 'EOF' com.shivaos.core ShivaOS Pure Gaming Ecosystem basé sur Fedora 44 / KDE Plasma

ShivaOS est une distribution Linux gaming intégrant Steam, Lutris, Proton-GE, MangoHud, GameMode et l'assistant IA Shiva.

https://shivaos.com https://github.com/freuja-wq/shiva-os-core/issues
  • Migration du dépôt par défaut vers le backend Pulp (plus fiable)
  • Correction de la détection des miroirs de mise à jour
  • Ajout de shiva-pulse comme dépendance obligatoire
  • Optimisation du heartbeat système
  • Kernel CachyOS activé par défaut automatiquement à chaque mise à jour
  • Amélioration de la gestion GRUB via kernel-install hook
  • Fix conflit os-release avec fedora-release-identity-kde-desktop
  • Remplacement propre des paquets fedora-release-identity via Obsoletes
  • Release initiale ShivaOS 44
MIT MIT
EOF # --- kernel-install hook : CachyOS toujours par défaut --- mkdir -p %{buildroot}/etc/kernel/install.d cat > %{buildroot}/etc/kernel/install.d/90-shiva-grub-default.install << 'EOF' #!/bin/bash COMMAND="$1" KERNEL_VERSION="$2" [[ "$COMMAND" == "add" ]] || exit 0 [[ "$KERNEL_VERSION" == *cachyos* ]] || exit 0 grubby --set-default "/boot/vmlinuz-${KERNEL_VERSION}" EOF chmod 755 %{buildroot}/etc/kernel/install.d/90-shiva-grub-default.install # --- skel config --- mkdir -p %{buildroot}/etc/skel/.config cat > %{buildroot}/etc/skel/.config/kwalletrc << 'EOF' [Wallet] Enabled=false First Use=false EOF cat > %{buildroot}/etc/skel/.config/kded6rc << 'EOF' [Module-kwalletd] autoload=false [Module-plasma_welcome] autoload=false EOF cat > %{buildroot}/etc/skel/.config/plasma-welcomerc << 'EOF' [General] LastStartedVersion=99.0.0 ShowOnStartup=false EOF # --- dracut : GPU dans initramfs (évite écran noir après GRUB) --- mkdir -p %{buildroot}/usr/lib/dracut/dracut.conf.d cat > %{buildroot}/usr/lib/dracut/dracut.conf.d/99-shivaos-gpu.conf << 'EOF' # ShivaOS — Drivers GPU forcés dans l'initramfs # Garantit l'affichage dès le boot, évite l'écran noir après GRUB add_drivers+=" amdgpu radeon i915 xe nouveau " add_drivers+=" virtio-gpu vmwgfx simpledrm " add_drivers+=" drm_ttm_helper ttm drm_display_helper " # Firmware AMD (RX 5000+, iGPU Raphael) install_items+=" /usr/lib/firmware/amdgpu " # Firmware Intel iGPU + Arc (Xe/i915) install_items+=" /usr/lib/firmware/i915 " install_items+=" /usr/lib/firmware/xe " # NVIDIA : nouveau est le fallback initramfs (avant que akmod-nvidia compile) # akmod-nvidia installe lui-même /usr/lib/modprobe.d/nvidia.conf (blacklist nouveau) # au 2e boot — pas besoin de blacklister nouveau dans l'initramfs early_microcode="yes" compress="zstd" EOF # --- sysctl gaming : BORE + VM + réseau optimisés --- mkdir -p %{buildroot}/etc/sysctl.d cat > %{buildroot}/etc/sysctl.d/99-shivaos-gaming.conf << 'EOF' # ShivaOS — Gaming sysctl (BORE + VM + réseau) # ── BORE scheduler ──────────────────────────────────────────────── kernel.sched_bore = 1 kernel.sched_burst_cache_lifetime = 60000000 kernel.sched_burst_inherit_type = 0 kernel.sched_burst_penalty_offset = 22 kernel.sched_burst_penalty_scale = 1280 kernel.sched_burst_smoothness = 1 kernel.sched_autogroup_enabled = 1 # ── VM — optimisé SSD/NVMe gaming ───────────────────────────────── # swappiness=10 : garder le max en RAM, swapper en dernier recours vm.swappiness = 10 vm.vfs_cache_pressure = 50 vm.dirty_bytes = 268435456 vm.dirty_background_bytes = 67108864 vm.dirty_writeback_centisecs = 1500 vm.page-cluster = 0 # Désactive la compaction proactive (cause des micro-stutters) vm.compaction_proactiveness = 0 vm.watermark_boost_factor = 1 vm.watermark_scale_factor = 125 # OOM killer cible le processus fautif, pas un aléatoire vm.oom_kill_allocating_task = 1 # ── CPU / système ───────────────────────────────────────────────── kernel.nmi_watchdog = 0 kernel.unprivileged_userns_clone = 1 # Réduit l'overhead splitlock (améliore perf gaming) kernel.split_lock_mitigate = 0 # ── Fichiers ouverts ────────────────────────────────────────────── fs.file-max = 2097152 # ── Réseau gaming (BBR3 déjà actif via kernel) ──────────────────── net.core.netdev_max_backlog = 16384 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_fastopen = 3 net.ipv4.tcp_mtu_probing = 1 net.ipv4.tcp_tw_reuse = 1 EOF # --- zram : swap compressé en RAM (zstd, 50% RAM) ---------------- mkdir -p %{buildroot}/etc/systemd cat > %{buildroot}/etc/systemd/zram-generator.conf << 'EOF' # ShivaOS — zram swap compressé en RAM # Zstd : meilleur ratio compression/vitesse (recommandé gaming) # host-memory-limit : active zram seulement si >= 4 Go RAM [zram0] zram-size = min(ram / 2, 8192) compression-algorithm = zstd swap-priority = 100 EOF # --- udev I/O scheduler gaming --- mkdir -p %{buildroot}/usr/lib/udev/rules.d cat > %{buildroot}/usr/lib/udev/rules.d/60-shivaos-ioscheduler.rules << 'EOF' # ShivaOS — I/O scheduler par type de disque # NVMe : kyber (ultra-faible latence) ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="kyber" # SSD SATA : mq-deadline (bon compromis latence/débit) ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline" # HDD : bfq (fair queuing, évite les stutters) ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq" # SATA link power : performance max (pas de power saving sur les disques) ACTION=="add", SUBSYSTEM=="scsi_host", KERNEL=="host*", ATTR{link_power_management_policy}="max_performance" EOF # --- GameMode config système (agressive, gaming max) ------------- # /etc/gamemode.ini = prioritaire sur /usr/share/gamemode/gamemode.ini → pas de conflit RPM mkdir -p %{buildroot}/etc cat > %{buildroot}/etc/gamemode.ini << 'EOF' [general] reaper_freq=5 defaultgov=powersave desiredgov=performance igpu_desiredgov=performance softrealtime=auto renice=10 ioprio=0 inhibit_screensaver=1 [filter] whitelist= blacklist=systemd;dbus;pipewire;wireplumber [cpu] park_cores=no pin_cores=yes [gpu] apply_gpu_optimisations=accept-responsibility gpu_device=0 amd_performance_level=high nv_powermizer_mode=1 EOF # --- udev CPU governor performance sur AC ------------------------- cat > %{buildroot}/usr/lib/udev/rules.d/50-shivaos-cpupower.rules << 'EOF' # ShivaOS — Governor CPU performance sur AC, powersave sur batterie # Réduit les micro-pauses de re-clocking CPU en jeu SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="1", \ RUN+="/bin/sh -c 'for f in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo performance > $f 2>/dev/null || true; done'" SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="0", \ RUN+="/bin/sh -c 'for f in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo powersave > $f 2>/dev/null || true; done'" EOF # --- udev USB HID polling 1000Hz (souris/manettes gaming) -------- cat > %{buildroot}/usr/lib/udev/rules.d/70-shivaos-hid.rules << 'EOF' # ShivaOS — USB HID polling rate 1000Hz pour souris et manettes gaming # Réduit la latence d'entrée de 8ms (125Hz défaut) à 1ms ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="?*", \ ATTR{bInterfaceClass}=="03", ATTR{bInterfaceSubClass}=="01", \ ATTR{bInterfaceProtocol}=="02", \ RUN+="/bin/sh -c 'echo 1 > /sys$devpath/../power/wakeup; echo 1000 > /sys$devpath/../polling_interval 2>/dev/null || true'" # Polling rate maximal pour les périphériques HID USB génériques ACTION=="add", SUBSYSTEM=="hid", \ RUN+="/bin/sh -c 'echo 1000 > /sys$devpath/../polling_interval 2>/dev/null || true'" EOF # --- modprobe blacklist watchdogs --- mkdir -p %{buildroot}/usr/lib/modprobe.d cat > %{buildroot}/usr/lib/modprobe.d/shivaos-blacklist.conf << 'EOF' # ShivaOS — Watchdogs CPU désactivés (cycles CPU inutiles, micro-interruptions) blacklist iTCO_wdt blacklist iTCO_vendor_support blacklist sp5100_tco EOF # --- modprobe NVIDIA optimisations --- cat > %{buildroot}/usr/lib/modprobe.d/shivaos-nvidia.conf << 'EOF' # ShivaOS — Paramètres NVIDIA open modules options nvidia NVreg_UsePageAttributeTable=1 options nvidia NVreg_InitializeSystemMemoryAllocations=0 options nvidia NVreg_DynamicPowerManagement=0x02 # Firmware GPU NVIDIA open (RTX 3000+ — meilleure perf avec open modules) options nvidia NVreg_EnableGpuFirmware=1 EOF # --- MangoHUD config gaming par défaut --------------------------- mkdir -p %{buildroot}/etc/MangoHud cat > %{buildroot}/etc/MangoHud/MangoHud.conf << 'EOF' # ShivaOS — MangoHUD config gaming par défaut fps fps_color_change fps_limit=0 gpu_stats gpu_temp gpu_core_clock gpu_mem_clock gpu_mem_temp gpu_power cpu_stats cpu_temp cpu_mhz ram vram frame_timing frametime wine gamemode toggle_hud=Shift_R+F12 toggle_fps_limit=Shift_R+F1 position=top-left font_size=22 background_alpha=0.5 round_corners=5 EOF # --- Pipewire gaming config (low-latency 512 samples) ----------- mkdir -p %{buildroot}/usr/share/pipewire/pipewire.conf.d cat > %{buildroot}/usr/share/pipewire/pipewire.conf.d/99-shivaos-gaming.conf << 'EOF' # ShivaOS — Pipewire low-latency gaming # 512 samples à 48kHz = ~10ms latence (vs 2048 défaut = ~42ms) context.properties = { default.clock.rate = 48000 default.clock.allowed-rates = [ 44100 48000 96000 ] default.clock.quantum = 512 default.clock.min-quantum = 256 default.clock.max-quantum = 8192 } EOF # --- limits.conf gaming (rtprio audio + memlock) ----------------- mkdir -p %{buildroot}/etc/security/limits.d cat > %{buildroot}/etc/security/limits.d/99-shivaos-gaming.conf << 'EOF' # ShivaOS — Limites gaming # rtprio : Pipewire realtime, audio sans glitch # memlock : jeux qui lockent leur mémoire (anti-stutter) @audio - rtprio 95 @audio - memlock unlimited @realtime - rtprio 99 @realtime - memlock unlimited * - nofile 1048576 EOF # --- Gamescope session (mode gaming TV/couch) -------------------- mkdir -p %{buildroot}/usr/share/wayland-sessions cat > %{buildroot}/usr/share/wayland-sessions/shivaos-gaming.desktop << 'EOF' [Desktop Entry] Name=ShivaOS Gaming Mode Comment=Mode gaming — Gamescope + Steam Big Picture Exec=/usr/bin/gamescope -W 1920 -H 1080 -f --steam -- steam -gamepadui Type=Application DesktopNames=ShivaOS-Gaming EOF # --- audio Intel HDA : désactive power saving sur AC (élimine craquements) --- cat > %{buildroot}/usr/lib/udev/rules.d/20-shivaos-audio.rules << 'EOF' # ShivaOS — Intel HDA : pas de power saving sur AC (craquements audio) SUBSYSTEM=="module", ACTION=="add", KERNEL=="snd_hda_intel", \ RUN+="/bin/sh -c 'echo 0 > /sys/module/snd_hda_intel/parameters/power_save'" EOF # --- shiva-scx : service systemd pour scx_rusty (gaming scheduler) --- mkdir -p %{buildroot}/usr/lib/systemd/system cat > %{buildroot}/usr/lib/systemd/system/shiva-scx.service << 'EOF' [Unit] Description=ShivaOS SCX Gaming Scheduler Documentation=https://github.com/sched-ext/scx After=multi-user.target ConditionPathExists=/usr/bin/scx_rusty [Service] Type=simple ExecStart=/usr/bin/scx_rusty Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target EOF # --- THP madvise + NUMA balancing off (anti-stutter) ------------- cat > %{buildroot}/usr/lib/systemd/system/shiva-thp.service << 'EOF' [Unit] Description=ShivaOS — Transparent Huge Pages madvise + NUMA off DefaultDependencies=no After=local-fs.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled; echo defer+madvise > /sys/kernel/mm/transparent_hugepage/defrag; echo 0 > /proc/sys/kernel/numa_balancing 2>/dev/null || true' [Install] WantedBy=multi-user.target EOF # --- earlyoom config via drop-in systemd (pas de conflit avec /etc/default/earlyoom) --- mkdir -p %{buildroot}/etc/systemd/system/earlyoom.service.d cat > %{buildroot}/etc/systemd/system/earlyoom.service.d/shivaos.conf << 'EOF' [Service] Environment="EARLYOOM_ARGS=-m 3 -s 3 -r 0 --prefer (chromium|chrome|firefox) --avoid (sshd|systemd)" EOF # --- systemd : augmenter les limites file descriptors --- mkdir -p %{buildroot}/usr/lib/systemd/system.conf.d cat > %{buildroot}/usr/lib/systemd/system.conf.d/10-shivaos-limits.conf << 'EOF' [Manager] DefaultLimitNOFILE=2048:2097152 DefaultTimeoutStartSec=15s DefaultTimeoutStopSec=10s EOF mkdir -p %{buildroot}/usr/lib/systemd/user.conf.d cat > %{buildroot}/usr/lib/systemd/user.conf.d/10-shivaos-limits.conf << 'EOF' [Manager] DefaultLimitNOFILE=1024:1048576 EOF # --- DNS gaming : Cloudflare 1.1.1.1 (latence réseau réduite) ---- mkdir -p %{buildroot}/etc/NetworkManager/conf.d cat > %{buildroot}/etc/NetworkManager/conf.d/99-shivaos-dns.conf << 'EOF' # ShivaOS — DNS gaming Cloudflare 1.1.1.1 + 1.0.0.1 # Réduit la latence de résolution DNS pour le matchmaking, CDN jeux [global-dns-domain-*] servers=1.1.1.1,1.0.0.1 EOF # --- vkBasalt global config (CAS sharpening sur tous les jeux Vulkan) ---- mkdir -p %{buildroot}/etc cat > %{buildroot}/etc/vkBasalt.conf << 'EOF' # ShivaOS — vkBasalt global : CAS sharpening sur tous les jeux Vulkan/DXVK # Activer via ENABLE_VKBASALT=1 dans Steam launch options ou /etc/environment effects = cas:fxaa casSharpness = 0.4 fxaaQualitySubpix = 0.75 fxaaQualityEdgeThreshold = 0.166 reshadeTexturePath = /usr/share/vkBasalt/textures reshadeIncludePath = /usr/share/vkBasalt/shader EOF # --- shiva-profile : launcher profil par jeu Steam ----------------------- mkdir -p %{buildroot}/usr/bin cat > %{buildroot}/usr/bin/shiva-game-launch << 'EOF' #!/bin/bash # ShivaOS — applique un profil de performance puis lance le jeu # Usage : SHIVA_GAME_PROFILE=gaming SHIVA_APPID=730 /usr/bin/shiva-game-launch %command% PROFILE="${SHIVA_GAME_PROFILE:-normal}" case "$PROFILE" in gaming) for f in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo performance > "$f" 2>/dev/null || true done export ENABLE_MANGOHUD=1 exec gamemoderun "$@" ;; battery) for f in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo powersave > "$f" 2>/dev/null || true done exec "$@" ;; *) exec gamemoderun "$@" ;; esac EOF chmod 755 %{buildroot}/usr/bin/shiva-game-launch # --- QoS gaming : priorité UDP gaming sur le trafic réseau --------------- cat > %{buildroot}/usr/lib/systemd/system/shiva-qos.service << 'EOF' [Unit] Description=ShivaOS — QoS gaming (priorité UDP jeux) After=network.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/bash -c '\ DEV=$(ip route | awk "/^default/ {print \$5; exit}"); \ [ -z "$DEV" ] && exit 0; \ tc qdisc del dev "$DEV" root 2>/dev/null || true; \ tc qdisc add dev "$DEV" root handle 1: prio bands 3 priomap 2 2 2 2 1 1 1 1 0 0 0 0 0 0 0 0; \ tc filter add dev "$DEV" parent 1: protocol ip prio 1 u32 \ match ip protocol 17 0xff \ match ip dport 27000 0xffff flowid 1:1 2>/dev/null || true; \ tc filter add dev "$DEV" parent 1: protocol ip prio 2 u32 \ match ip protocol 17 0xff flowid 1:1 2>/dev/null || true' ExecStop=/bin/bash -c '\ DEV=$(ip route | awk "/^default/ {print \$5; exit}"); \ [ -n "$DEV" ] && tc qdisc del dev "$DEV" root 2>/dev/null || true' [Install] WantedBy=multi-user.target EOF # --- Alerte température GPU (> 85°C) ------------------------------------- cat > %{buildroot}/usr/lib/systemd/system/shiva-temp-alert.service << 'EOF' [Unit] Description=ShivaOS — Alerte température GPU [Service] Type=oneshot ExecStart=/bin/bash -c '\ TEMP=0; \ if command -v nvidia-smi &>/dev/null; then \ TEMP=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits 2>/dev/null | head -1); \ else \ for f in /sys/class/hwmon/hwmon*/temp*_input; do \ NAME=$(cat "$(dirname $f)/name" 2>/dev/null); \ [[ "$NAME" =~ amdgpu|radeon ]] || continue; \ T=$(cat "$f" 2>/dev/null); \ T=$((T/1000)); \ [ "$T" -gt "$TEMP" ] && TEMP=$T; \ done; \ fi; \ [ "$TEMP" -gt 85 ] && DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus \ notify-send -u critical -i dialog-warning "⚠ GPU surchauffe !" "Température : ${TEMP}°C — vérifiez le refroidissement" 2>/dev/null || true' EOF cat > %{buildroot}/usr/lib/systemd/system/shiva-temp-alert.timer << 'EOF' [Unit] Description=ShivaOS — Vérification température GPU toutes les 30s [Timer] OnBootSec=60 OnUnitActiveSec=30s [Install] WantedBy=timers.target EOF # --- systemd-resolved DoH (DNS over HTTPS Cloudflare) -------------------- mkdir -p %{buildroot}/etc/systemd/resolved.conf.d cat > %{buildroot}/etc/systemd/resolved.conf.d/99-shivaos-doh.conf << 'EOF' # ShivaOS — DNS over HTTPS Cloudflare (privacy + vitesse) [Resolve] DNS=1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com DNSOverTLS=yes DNSSEC=yes Cache=yes EOF # --- CPU P-core pinning script (Intel 12th gen+ / AMD X3D) --------------- cat > %{buildroot}/usr/bin/shiva-pcores << 'EOF' #!/bin/bash # ShivaOS — Identifie les P-cores (Intel) ou tous les cores (AMD) et les affiche # Usage : taskset -c $(shiva-pcores) %command% # Intel hybrid : P-cores = type 1, E-cores = type 2 via /sys PCORES="" if ls /sys/devices/system/cpu/cpu*/topology/core_type &>/dev/null 2>&1; then for cpu in /sys/devices/system/cpu/cpu[0-9]*/topology/core_type; do type=$(cat "$cpu" 2>/dev/null) [ "$type" = "1" ] || continue id=$(echo "$cpu" | grep -oP '(?<=cpu)\d+') PCORES="${PCORES:+$PCORES,}$id" done fi if [ -z "$PCORES" ]; then # AMD ou Intel sans hybrid : utiliser tous les cores PCORES=$(nproc --all) PCORES=$(seq -s, 0 $((PCORES-1))) fi echo "$PCORES" EOF chmod 755 %{buildroot}/usr/bin/shiva-pcores # --- /etc/environment : variables Mesa/RADV/GPU gaming ------------------- cat > %{buildroot}/etc/environment << 'EOF' # ShivaOS — Variables d'environnement gaming système # ── Mesa — multithreaded GL (gain 5-20% sur les jeux OpenGL) ────────────── mesa_glthread=true # ── NVIDIA — threaded optimisations OpenGL (équivalent mesa_glthread) ───── __GL_THREADED_OPTIMIZATIONS=1 # ── Cache shaders Vulkan : 10 Go (évite recompile à chaque lancement) ───── MESA_SHADER_CACHE_MAX_SIZE=10G # ── AMD RADV — optimisations expérimentales Vulkan ──────────────────────── # ngg_streamout : NGG geometry shader streamout (perf Vulkan) # video_decode : décodage vidéo hardware (moins de CPU pour les cutscenes) RADV_PERFTEST=ngg_streamout,video_decode # ── Proton/Steam — large address awareness (jeux 32-bit accèdent plus de RAM) PROTON_FORCE_LARGE_ADDRESS_AWARE=1 # ── vkBasalt : désactivé globalement, activer par jeu via Steam launch options ENABLE_VKBASALT=0 EOF # --- shiva-amd-epp.service : AMD-pstate EPP performance sur secteur ------- cat > %{buildroot}/usr/lib/systemd/system/shiva-amd-epp.service << 'EOF' [Unit] Description=ShivaOS — AMD-pstate EPP performance (AC) After=multi-user.target ConditionPathExists=/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference [Service] Type=oneshot RemainAfterExit=yes # Sur secteur : EPP = performance (max boost AMD, réduit latence CPU) ExecStart=/bin/sh -c '\ ON=$(cat /sys/class/power_supply/AC*/online 2>/dev/null | head -1); \ if [ "$ON" = "1" ] || [ -z "$ON" ]; then \ for f in /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference; do \ echo performance > "$f" 2>/dev/null || true; \ done; \ fi' # Sur batterie : EPP = balance_performance ExecStop=/bin/sh -c '\ for f in /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference; do \ echo balance_performance > "$f" 2>/dev/null || true; \ done' [Install] WantedBy=multi-user.target EOF # --- shiva-irq.service : pin IRQs réseau/audio sur CPU non-gaming --------- cat > %{buildroot}/usr/lib/systemd/system/shiva-irq.service << 'EOF' [Unit] Description=ShivaOS — IRQ affinity gaming (réseau/audio sur dernier CPU) After=network.target After=sound.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c '\ NCPU=$(nproc); \ LAST=$((NCPU - 1)); \ MASK=$(printf "%x" $((1 << LAST))); \ for irq_dir in /proc/irq/*/; do \ IRQ=$(basename "$irq_dir"); \ [ "$IRQ" = "0" ] && continue; \ DEVS=$(cat "${irq_dir}/../${IRQ}/smp_affinity_list" 2>/dev/null); \ NAME=$(cat "${irq_dir}/name" 2>/dev/null); \ case "$NAME" in *eth*|*enp*|*wlan*|*iwl*|*rtw*|*snd*|*hda*|*audio*) \ echo "$MASK" > "${irq_dir}smp_affinity" 2>/dev/null || true;; \ esac; \ done' [Install] WantedBy=multi-user.target EOF # --- udev controllers gaming (PS5/PS4/Xbox/Steam Deck/8BitDo/Switch) ---- cat > %{buildroot}/usr/lib/udev/rules.d/71-shivaos-controllers.rules << 'EOF' # ShivaOS — PS5 DualSense : haptique + triggers adaptatifs KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ce6", \ MODE="0660", GROUP="input", TAG+="uaccess" # PS5 DualSense Edge KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0df2", \ MODE="0660", GROUP="input", TAG+="uaccess" # PS4 DualShock 4 (filaire + BT) KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="09cc", \ MODE="0660", GROUP="input", TAG+="uaccess" KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="05c4", \ MODE="0660", GROUP="input", TAG+="uaccess" KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ba0", \ MODE="0660", GROUP="input", TAG+="uaccess" # Xbox One / Series X|S (filaire) KERNEL=="hidraw*", ATTRS{idVendor}=="045e", MODE="0660", GROUP="input", TAG+="uaccess" # Xbox Series (BT) — xpadneo améliore le support BT SUBSYSTEM=="input", ATTRS{name}=="Xbox*", MODE="0660", GROUP="input", TAG+="uaccess" # Steam Deck / Steam Controller KERNEL=="hidraw*", ATTRS{idVendor}=="28de", MODE="0660", GROUP="input", TAG+="uaccess" # Nintendo Switch Pro Controller + Joy-Con KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="2009", \ MODE="0660", GROUP="input", TAG+="uaccess" KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="2006", \ MODE="0660", GROUP="input", TAG+="uaccess" KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="2007", \ MODE="0660", GROUP="input", TAG+="uaccess" # 8BitDo controllers (tous modèles) KERNEL=="hidraw*", ATTRS{idVendor}=="2dc8", MODE="0660", GROUP="input", TAG+="uaccess" # Generic gamepads — accès hidraw sans root KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="*", \ ATTRS{bInterfaceClass}=="03", MODE="0660", GROUP="input", TAG+="uaccess" EOF %post systemctl enable shiva-amd-epp.service 2>/dev/null || true systemctl enable shiva-irq.service 2>/dev/null || true # Branding os-release : écrase le contenu sans toucher au propriétaire RPM (fedora-release-common) cat > /usr/lib/os-release << 'OSEOF' NAME="ShivaOS" VERSION="44 (Pure Gaming Ecosystem)" ID=shivaos ID_LIKE=fedora VERSION_ID=44 PRETTY_NAME="ShivaOS 44 — Pure Gaming Ecosystem" ANSI_COLOR="1;38;2;255;100;0" HOME_URL="https://shivaos.com" BUG_REPORT_URL="https://shivaos.com" LOGO=shivaos-logo OSEOF [ -L /etc/os-release ] || ln -sf /usr/lib/os-release /etc/os-release %files /etc/kernel/install.d/90-shiva-grub-default.install /usr/share/metainfo/com.shivaos.core.metainfo.xml /etc/yum.repos.d/shivaos.repo /etc/xdg/kwalletrc /etc/xdg/kded6rc /etc/xdg/plasma-welcomerc /etc/shiva-ai.conf /etc/skel/.config/kwalletrc /etc/skel/.config/kded6rc /etc/skel/.config/plasma-welcomerc /etc/sysctl.d/99-shivaos-gaming.conf /etc/systemd/zram-generator.conf /etc/systemd/system/earlyoom.service.d/shivaos.conf /etc/gamemode.ini /usr/lib/udev/rules.d/50-shivaos-cpupower.rules /usr/lib/systemd/system/shiva-scx.service /usr/lib/systemd/system/shiva-thp.service /usr/lib/dracut/dracut.conf.d/99-shivaos-gpu.conf /usr/lib/udev/rules.d/60-shivaos-ioscheduler.rules /usr/lib/udev/rules.d/70-shivaos-hid.rules /usr/lib/udev/rules.d/20-shivaos-audio.rules /usr/lib/modprobe.d/shivaos-blacklist.conf /usr/lib/modprobe.d/shivaos-nvidia.conf /etc/MangoHud/MangoHud.conf /usr/share/pipewire/pipewire.conf.d/99-shivaos-gaming.conf /etc/security/limits.d/99-shivaos-gaming.conf /usr/share/wayland-sessions/shivaos-gaming.desktop /usr/lib/systemd/system.conf.d/10-shivaos-limits.conf /usr/lib/systemd/user.conf.d/10-shivaos-limits.conf /etc/NetworkManager/conf.d/99-shivaos-dns.conf /usr/lib/udev/rules.d/71-shivaos-controllers.rules /etc/vkBasalt.conf /usr/bin/shiva-game-launch /etc/environment /usr/lib/systemd/system/shiva-amd-epp.service /usr/lib/systemd/system/shiva-irq.service /usr/lib/systemd/system/shiva-qos.service /usr/lib/systemd/system/shiva-temp-alert.service /usr/lib/systemd/system/shiva-temp-alert.timer /etc/systemd/resolved.conf.d/99-shivaos-doh.conf /usr/bin/shiva-pcores %changelog * Thu May 21 2026 ShivaOS Team - 1.0-25 - /etc/environment gaming : mesa_glthread=true, RADV_PERFTEST, __GL_THREADED_OPTIMIZATIONS, MESA_SHADER_CACHE_MAX_SIZE=10G - shiva-amd-epp.service : AMD-pstate EPP performance sur secteur (max boost AMD) - shiva-irq.service : pin IRQs réseau/audio sur dernier CPU (libère cores gaming) * Thu May 21 2026 ShivaOS Team - 1.0-24 - udev manettes : DualSense Edge, PS4 BT, Steam Deck, Nintendo Switch Pro/Joy-Con, Xbox BT, 8BitDo tous modèles * Thu May 21 2026 ShivaOS Team - 1.0-23 - earlyoom : config via drop-in /etc/systemd/system/earlyoom.service.d/shivaos.conf Évite le conflit avec /etc/default/earlyoom (propriété du paquet earlyoom pré-installé) * Thu May 21 2026 ShivaOS Team - 1.0-22 - gamemode.ini déplacé de /usr/share/gamemode/ vers /etc/gamemode.ini Évite le conflit RPM avec les bases Sway Atomic et Budgie Atomic (gamemode pré-installé) * Wed May 20 2026 ShivaOS Team - 1.0-21.fc44 - vkBasalt.conf système : CAS sharpening 0.4 + FXAA 0.75 sur tous les jeux Vulkan/DXVK - shiva-game-launch : launcher par profil (gaming/battery/normal) via SHIVA_GAME_PROFILE - shiva-qos.service : priorité UDP gaming via tc qdisc prio au boot (latence réseau réduite) - shiva-temp-alert.timer : alerte notif si GPU > 85°C (check toutes les 30s, NVIDIA + AMD) - DNS-over-HTTPS systemd-resolved : Cloudflare DoH + DNSSEC activé par défaut - shiva-pcores : détection automatique P-cores Intel pour pinning process gaming * Wed May 20 2026 ShivaOS Team - 1.0-20.fc44 - DNS gaming Cloudflare 1.1.1.1 : latence résolution réduite pour matchmaking et CDN jeux - udev controllers : PS5 DualSense haptique + triggers adaptatifs via hidraw (group=input) - udev Xbox One/Series + 8BitDo : mode=0660 + uaccess (sans root pour features avancées) * Wed May 20 2026 ShivaOS Team - 1.0-19.fc44 - MangoHUD config système : FPS, GPU/CPU temp, VRAM, frame timing (toggle Shift_R+F12) - Pipewire low-latency : 512 samples / 48kHz — latence audio 10ms vs 42ms par défaut - limits.conf gaming : rtprio=95 audio, memlock=unlimited, nofile=1M - Gamescope session : shivaos-gaming.desktop (mode TV/couch gaming) - NVIDIA modprobe : NVreg_EnableGpuFirmware=1 (meilleure perf RTX 3000+ open modules) * Wed May 20 2026 ShivaOS Team - 1.0-18.fc44 - shiva-scx.service : active scx_rusty au boot (sched-ext gaming scheduler) - shiva-thp.service : Transparent Huge Pages en mode madvise + NUMA balancing désactivé - earlyoom config : tue les processus quand mémoire < 3%% (évite freeze OOM) - Prêt pour scx_rusty + irqbalance + earlyoom dans les Containerfiles * Wed May 20 2026 ShivaOS Team - 1.0-17.fc44 - FIX CRITIQUE : vm.swappiness 100 → 10 (garder les données en RAM, pas sur disque) - zram-generator : swap compressé zstd en RAM (50% RAM max 8Go) — grosse perf gaming - sysctl gaming étendu : sched_autogroup, compaction_proactiveness=0, oom_kill_allocating_task - sysctl réseau : rmem/wmem 16Mo, tcp_fastopen=3, tcp_mtu_probing, tcp_tw_reuse - split_lock_mitigate=0 : réduit overhead kernel sur jeux multithreadés - udev HID 1000Hz : polling USB gaming devices (souris/manettes) à 1000Hz (latence 1ms vs 8ms) - Renommé 99-shivaos-bore.conf → 99-shivaos-gaming.conf (contenu plus large que BORE) - Requires zram-generator ajouté * Fri May 09 2026 ShivaOS Team - 1.0-16.fc44 - dracut : nouveau gardé comme fallback initramfs NVIDIA (pas de blacklist dans initramfs) - akmod-nvidia installe son propre blacklist nouveau au 2e boot — plus de conflit * Fri May 09 2026 ShivaOS Team - 1.0-15.fc44 - dracut : firmware Intel Arc (xe) + iGPU (i915) ajoutés dans initramfs (fix écran noir Arc) * Fri May 09 2026 ShivaOS Team - 1.0-14.fc44 - dracut config : GPU AMD/Intel/NVIDIA/fallback forcés dans initramfs (fix écran noir après GRUB) - firmware amdgpu inclus dans initramfs pour boot AMD immédiat * Fri May 09 2026 ShivaOS Team - 1.0-13.fc44 - udev I/O scheduler : NVMe→kyber, SSD→mq-deadline, HDD→BFQ + SATA max_performance - modprobe blacklist : iTCO_wdt + sp5100_tco (watchdogs AMD/Intel inutiles) - modprobe NVIDIA : NVreg_UsePageAttributeTable=1, NVreg_InitializeSystemMemoryAllocations=0 - udev audio : Intel HDA power_save=0 sur AC (élimine craquements) - systemd limits : DefaultLimitNOFILE=2097152, timeouts 15s/10s * Fri May 08 2026 ShivaOS Team - 1.0-12.fc44 - Suppression Provides/Obsoletes fedora-release-identity (causait conflits dans images Atomic) - os-release géré uniquement via %%post, aucun conflit possible avec paquets base Kinoite * Fri May 08 2026 ShivaOS Team - 1.0-11.fc44 - Ajout Obsoletes fedora-release-identity-kinoite pour compatibilité image Atomic/Kinoite * Fri May 08 2026 ShivaOS Team - 1.0-10.fc44 - Fix conflit Atomic/COPR : os-release écrit via %%post au lieu d'être possédé par RPM - Compatible avec fedora-release-common dans les images Kinoite/Atomic * Fri May 08 2026 ShivaOS Team - 1.0-9.fc44 - Fix lenteur système avec kernel-shivaos : sysctl BORE tuning installé dans /etc/sysctl.d/ - Corrige timeouts polkit/packagekit après screen lock (sched_burst_penalty_scale 1536→1280) - Ajout réglages VM gaming (vm.swappiness, dirty_bytes, page-cluster, file-max) basés sur CachyOS * Tue May 05 2026 ShivaOS Team - 1.0-8.fc44 - Migration vers le backend Pulp pour le dépôt shivaos (meilleure disponibilité) * Tue May 05 2026 ShivaOS Team - 1.0-7.fc44 - Ajout dépendance shiva-pulse (installation automatique avec shiva-core) * Tue May 05 2026 ShivaOS Team - 1.0-6.fc44 - Ajout hook kernel-install : kernel CachyOS automatiquement défaut GRUB à chaque update * Tue May 05 2026 ShivaOS Team - 1.0-5.fc44 - Fix release tag : dist tag fc44 explicite pour éviter comparaison RPM incorrecte * Tue May 05 2026 ShivaOS Team - 1.0-4 - Ajout AppStream metainfo pour notes de version dans KDE Discover * Tue May 05 2026 ShivaOS Team - 1.0-3 - Fix conflit os-release : installer dans /usr/lib/os-release + symlink /etc/os-release - Ajouter Obsoletes fedora-release-identity-* pour remplacement propre * Thu May 01 2026 ShivaOS Team - 1.0-1 - Release initiale ShivaOS 44