File patterns-yuga.spec of Package patterns-yuga
#
# spec file for package patterns-yuga
#
# Copyright (c) 2025 SUSE LLC
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%bcond_with betatest
Name: patterns-yuga
Version: 1.0
Release: 0
Summary: Patterns for Yuga Linux
License: MIT
Group: Metapackages
URL: http://en.opensuse.org/Patterns
Source0: %name.rpmlintrc
ExclusiveArch: x86_64 aarch64
%description
This is an internal package that is used to create the patterns as part
of the installation source setup. Installation of this package does
not make sense.
%package base
Summary: Yuga Linux
Group: Metapackages
Provides: pattern() = yuga_base
Provides: pattern-category() = Yuga
Provides: pattern-icon() = pattern-kubic
Provides: pattern-order() = 9200
%if %{with betatest}
# need to require it as recommends are off
Requires: pattern() = update_test
%endif
### Packages formerly provided by minimal_base
Requires: branding
Requires: build-key
Requires: distribution-release
Requires: filesystem
### Packages formerly provided by base/basesystem
Requires: /usr/bin/hostname
Requires: aaa_base
Requires: bash
Requires: branding-openSUSE
Requires: btrfsprogs
Requires: ca-certificates
Requires: ca-certificates-mozilla
Requires: coreutils
Requires: coreutils-systemd
Requires: glibc
Suggests: busybox-hostname
Requires: NetworkManager
Requires: NetworkManager-bluetooth
Requires: NetworkManager-wifi
# boo1230006
Requires: libmbim
Requires: iproute2
Requires: lastlog2
Requires: libnss_usrfiles2
Requires: openSUSE-build-key
Requires: pam
Requires: pam-config
Requires: procps
Requires: rpm
Requires: shadow
Requires: systemd
Requires: util-linux
Requires: group(nobody)
Requires: user(nobody)
####
Requires: btrfsmaintenance
Requires: busybox
Requires: chrony
# curl indirectly needed by ignition via dracut's url-lib
Requires: curl
# probably needed for fsck.fat on efi partitions
Requires: /usr/bin/gzip
Requires: dosfstools
Requires: glibc-locale-base
Suggests: busybox-gzip
Requires: health-checker
Requires: health-checker-plugins-MicroOS
Requires: iputils
%ifnarch %{arm}
Requires: kdump
%endif
Requires: less
Requires: microos-tools
Requires: snapper
Requires: vim-small
Requires: wtmpdb
# people are addicted to sudo
Requires: sudo
# let users authorize with their own password
Requires: sudo-policy-wheel-auth-self
Requires: branding-Yuga
Requires: systemd-presets-branding-Yuga
Requires: systemd-sleep-branding-Yuga
Requires: terminfo-base
Requires: timezone
Conflicts: gettext-runtime-mini
Conflicts: krb5-mini
Obsoletes: suse-build-key < 12.1
Requires: yast2-logs
Requires: exfatprogs
Requires: distribution-logos-Yuga
### Packages formerly provided by base_zypper
Requires: transactional-update
Requires: transactional-update-zypp-config
Requires: zypper
# zypper ps is useless in transactional mode. It also checks for
# /run/reboot-needed though which is created by transactional-update
Requires: zypper-needs-restarting
### Packages formerly provided by defaults
Requires: audit
Requires: systemd-coredump
### Packages formerly provided by hardware
Requires: ethtool
%ifnarch s390x
Requires: irqbalance
%endif
%ifarch %ix86 x86_64
Requires: ucode-amd
Requires: ucode-intel
%endif
Requires: fcoe-utils
Requires: hwinfo
### Packages formerly provided by selinux
Requires: container-selinux
Requires: policycoreutils
Requires: selinux-policy-targeted
Requires: selinux-tools
# Extra selinux policies
Requires: selinux-policy-Yuga
### Xwayland
Requires: xwayland
### Packages formerly provided by desktop-common
# PipeWire is the default sound server
Requires: gstreamer-plugin-pipewire
Requires: pipewire-alsa
Requires: pipewire-pulseaudio
Requires: alsa-ucm-conf
# Allow users to print (and add some common printer drivers)
Requires: OpenPrintingPPDs
Requires: bluez-cups
Requires: cups
Requires: cups-filters
Requires: cups-pk-helper
Requires: epson-inkjet-printer-escpr
Requires: ghostscript
Requires: hplip-hpijs
Requires: printer-driver-brlaser
Requires: system-config-printer-common
Requires: system-config-printer-dbus-service
Requires: udev-configure-printer
Requires: sane-backends
# Add thunderbolt device management (boo#1208150)
Requires: bolt
# Common tools
Requires: bash-completion
Requires: bluez-firmware
Requires: glibc-locale
Requires: hicolor-icon-theme-branding-openSUSE
Requires: policycoreutils-python-utils
Requires: polkit-default-privs
Requires: systemd-icon-branding-openSUSE
Requires: udisks2
Requires: unzip
Requires: upower
Requires: wget
Requires: xdg-utils
Requires: usbutils
# For i2c dev handling and permissions
Requires: ddcutil-i2c-udev-rules
# Support ntfs drives
Requires: ntfs-3g
Requires: ntfsprogs
# More "comfortable" base package versions
Requires: gzip
Requires: hostname
%if 0%{is_opensuse}
Requires: avahi
%endif
# Desktop notifications about transactional update succeeding/failing
# for the masses
Requires: transactional-update-notifier
# Needed by both GNOME and KDE for theming of GTK-based flatpak apps properly
Requires: xdg-desktop-portal-gtk
# Needed to ensure MicroOS Desktop systems are be able to handle varied hardware out
# of the box, and not only during the system installation.
Requires: kernel-firmware-all
Requires: sof-firmware
Requires: system-group-wheel
Requires: desktop-file-utils
Requires: flatpak
# Some fonts
Requires: adobe-sourcecodepro-fonts
Requires: adobe-sourcesans3-fonts
Requires: adobe-sourcesanspro-fonts
Requires: adobe-sourceserifpro-fonts
Requires: adwaita-fonts
Requires: cantarell-fonts
Requires: dejavu-fonts
Requires: ghostscript-fonts-other
Requires: ghostscript-fonts-std
Requires: ghostscript-fonts-std-converted
Requires: google-carlito-fonts
Requires: google-droid-fonts
Requires: google-opensans-fonts
Requires: google-roboto-fonts
Requires: google-noto-sans-cjk-fonts
Requires: google-noto-coloremoji-fonts
Requires: google-droid-fonts
Requires: google-noto-sans-symbols-fonts
Requires: google-noto-sans-symbols2-fonts
Requires: noto-emoji-fonts
Requires: noto-sans-fonts
Requires: noto-sans-math-fonts
Requires: hack-fonts
Requires: ibm-plex-mono-fonts
Requires: liberation-fonts
Requires: suse-fonts
# We need this for accessability and the lack of it causes big performance issues (boo#1204564)
Requires: at-spi2-core
# So that GNOME prompt for ssh password works
Requires: openssh-askpass-gnome
Requires: samba
# #509829
Requires: xdg-user-dirs-gtk
### Power Management
Requires: tuned-ppd
### Packages formerly provided by kiwi file
Requires: kernel-handheld
### systemd-zram stuff
Requires: systemd-zram-service
### Virtualisation support
Requires: spice-vdagent
Requires: qemu-guest-agent
Requires: distrobox
Requires: podman
Requires: tpm2-0-tss
Requires: tpm2.0-tools
# Secureboot support
Requires: mokutil
### x86_64_v3 support is mandatory on Yuga
Requires: x86_64_v3-branding-Yuga
Requires: pkexec
Requires: systemd-experimental
Requires: systemd-repart-branding-Yuga
### Firstboot Configuration
Requires: ignition-dracut
Requires: combustion
Requires: dracut-pcr-signature
Requires: systemd-boot
Requires: efibootmgr
Requires: sdbootutil
Requires: sdbootutil-snapper
Requires: sdbootutil-tukit
Requires: sdbootutil-bash-completion
Requires: shim
Requires: uefi_mbr
Requires: iio-sensor-proxy
Requires: jupiter-fan-control
Requires: jupiter-hw-support
Requires: gamescope
Requires: gamescope-session-plus
Requires: gamescope-session-steam
Requires: gamescope-session-steam-shared
Requires: gamescope-session-steam-common
Requires: gamescope-session-steam-system-update
Requires: gamescope-session-steam-system-update-backend-transactional-update
Requires: gamescope-session-steam-system-update-branch-config-Yuga
Requires: gamescope-session-steam-factory-reset
Requires: gamescope-session-steam-factory-reset-config-Yuga
Requires: gamescope-shaders
Requires: python3-hhd
Requires: sdgyrodsu
Requires: steam
Requires: steam-devices
Requires: steam-extest
Requires: mangoapp
Requires: plymouth
Requires: plymouth-dracut
Requires: plymouth-branding-Yuga
Requires: deckifier
Requires: extest-32bit
Requires: steamdeck-firmware
Requires: steamdeck-dsp
Requires: galileo-mura
Requires: inputplumber
Requires: steamos-powerbuttond
Requires: steamos-manager
Requires: vpower
#Vulkan
Requires: kernel-firmware-amdgpu
Requires: libdrm_amdgpu1
Requires: libdrm_amdgpu1-32bit
Requires: libdrm_radeon1
Requires: libdrm_radeon1-32bit
Requires: libvulkan_radeon
Requires: libvulkan_radeon-32bit
Requires: libvulkan1
Requires: libvulkan1-32bit
Requires: libvulkan_intel
#sdcard checking
Requires: f3
Requires: fprintd
Requires: fprintd-pam
### Add switcheroo-control
Requires: switcheroo-control
### Support bluetooth file transfers
Requires: bluez-obexd
### Support CIFS mounting via mount
Requires: cifs-utils
### Support wacom tablets
Requires: libinput-udev
# So Trash and mounting USB sticks work
Requires: gvfs
Requires: gvfs-backends
Requires: gvfs-backend-afc
Requires: gvfs-backend-goa
Requires: gvfs-fuse
#extra
Requires: ryzenadj
#KMPs
Requires: xpad-noone-kmp-handheld
Requires: ayaneo-platform-kmp-handheld
Requires: broadcom-wl
Requires: broadcom-wl-kmp-handheld
#Encryption with controllers
Requires: deckrypt
#configure wireless devices
Requires: wireless-regdb
### Add yuga-check
Requires: yuga-check
### Trust Yuga's repositories
Requires: yuga-signing-keys
### tik
Requires: zenity
%description base
This is the Yuga Linux base system. It contains only fully working immutable desktop system.
%package kde
Summary: Yuga KDE Package
Group: Metapackages
Provides: pattern() = yuga_kde
Provides: pattern-category() = Yuga
Provides: pattern-icon() = pattern-kubic
Provides: pattern-order() = 9200
Requires: plasma-branding-Yuga
Requires: polkit-kde-agent-6
# Some basic system tools
Requires: ark
Requires: konsole
# Add KDE Partition Manager (boo#1212925)
Requires: partitionmanager
# Add ksshaskpass5 (boo#1215407)
Requires: ksshaskpass6
# Recommended by kde_plasma
Requires: bluedevil6
Requires: breeze6-wallpapers
Requires: dolphin
Requires: kde-print-manager
Requires: plasma6-print-manager
Requires: kgamma6
Requires: plasma6-nm
Requires: plasma6-workspace-wallpapers
### Thunderbolt
Requires: plasma6-thunderbolt
### Plasma Vault
Requires: plasma6-vault
Requires: plasma6-vault-backend-gocryptfs
# Manually pull in baloo5-file to better support desktip search functions/desktop integration
Requires: kf6-baloo-file
# For NetworkManager support of openVPN Connections
Requires: NetworkManager-openvpn
Requires: openvpn-auth-pam-plugin
Requires: plasma6-nm-openconnect
Requires: plasma6-nm-openvpn
Requires: kio-extras
Requires: kdeplasma6-addons
Requires: kwalletmanager
Requires: pinentry
#Requires: plasma6-addons
Requires: plasma6-pa
Requires: plasma6-session
Requires: sddm-qt6
Requires: sddm-config-wayland
# Recommends and Supplements won't work so pull in manually
Requires: discover6-backend-flatpak
Requires: discover6-backend-fwupd
Requires: kde-gtk-config6
Requires: kde-gtk-config6-gtk3
Requires: plasma-browser-integration
Requires: kf6-purpose
Requires: kf6-qqc2-desktop-style
Requires: sddm-qt6-branding-openSUSE
Requires: xdg-desktop-portal-kde6
# Doesnt depend on PackageKit, but also works for other backends
Requires: discover6-notifier
# Spectacle to be able to take screenshots out of the box
Requires: spectacle
# KAccounts to be installed by default (boo#1216397)
Requires: kaccounts-integration
Requires: kaccounts-providers
Requires: kio-gdrive
# Default Plasma app to quickly use emojis
Requires: plasma6-desktop-emojier
# Breeze GTK2, GTK3, and GTK4
Requires: (gtk4-metatheme-breeze6 if gtk4)
Requires: (gtk2-metatheme-breeze6 if gtk2)
Requires: (gtk3-metatheme-breeze6 if gtk3)
# Default Plasma sounds for applications
Requires: ocean-sound-theme6
Requires: oxygen5-sounds
# Plasma system monitor
Requires: plasma6-systemmonitor
# For seeing thumbnails in Dolphin
Requires: qt6-imageformats
Requires: ffmpegthumbs
Requires: kdegraphics-thumbnailers
Requires: kf6-kimageformats
# For being able to change SDDM Settings
Requires: sddm-kcm6
# Add for mounting network shares in userspace (boo#1210125)
Requires: kio-fuse
Requires: kdenetwork-filesharing
Requires: kdnssd
# Add kcm_flatpak for managing flatpak permissions (boo#1208256)
Requires: flatpak-kcm6
# Add pam_kwallet to unlock the password store automatically
Requires: pam_kwallet6
# KDE Connect to communicate to phone devices
Requires: kdeconnect-kde
# Warn when apps are using all inotify watches and prompts the user to raise it
Requires: kde-inotify-survey
# For crisp status notifier systray icons
Requires: libappindicator-gtk3
# Add Mesa-demos-egl for kinfocenter6 (kde#502129)
Requires: Mesa-demo-egl
### Plasma requirements
Requires: aurorae6
Requires: khelpcenter
### System definition
Requires: Yuga-release-KDE
# In sync with Kalpa Rev 56
Requires: steamdeck-kde-presets
Requires: gamescope-session-steam-session-select-plasma6
%description kde
This package provides the packages for the KDE Desktop environment
%package gnome
Summary: Yuga GNOME Package
Group: Metapackages
Provides: pattern() = yuga_gnome
Provides: pattern-category() = Yuga
Provides: pattern-icon() = pattern-kubic
Provides: pattern-order() = 9200
# gnome-initial-setup requirements
Requires: gnome-initial-setup
Requires: gjs
Requires: gnome-keyring-pam
Requires: gnome-disk-utility
Requires: gnome-shell
Requires: gnome-settings-daemon
Requires: gnome-session-default-session
# ensure we have wayland session available (and used by default)
Requires: gnome-session-wayland
# boo#1090117
Requires: gnome-branding-Yuga
Requires: gnome-color-manager
Requires: gnome-software
Requires: gnome-system-monitor
Requires: gnome-console
Requires: gnome-user-docs
# bnc#879466
Requires: gpgme
# for online accounts and calendar integration
Requires: gnome-bluetooth
# for display color profile support
Requires: gnome-control-center-color
Requires: gnome-remote-desktop
Requires: openssh
# needed to ensure bluetooth is enabled at startup (glgo#GNOME/gnome-bluetooth#110)
Requires: bluez-auto-enable-devices
Requires: gnome-control-center-goa
Requires: gnome-online-accounts
Requires: gnome-shell-calendar
# For seeing thumbnails in Nautilus
Requires: jxl-thumbnailer
Requires: glycin-loaders
Requires: gsf-office-thumbnailer
Requires: rsvg-thumbnailer
# So that GNOME shell extensions can be installed
Requires: chrome-gnome-shell
Requires: gnome-control-center-users
Requires: gnome-control-center-user-faces
# So users can configure Parental controls
Requires: malcontent-control
# we need something for xdg-su
Requires: gnome-shell-search-provider-nautilus
Requires: libgnomesu
Requires: nautilus
# Some extensions add context menus to nautilus using python scripts (example GSConnect)
# For this to work we need nautilus-python bindings
Requires: python3-nautilus
Requires: nautilus-share
# For encrypting and decrypting files to work in Nautilus
Requires: nautilus-extension-seahorse
Requires: seahorse-daemon
# We need the icons to work
Requires: adwaita-icon-theme
# So that GNOME keyring works
Requires: gcr-ssh-agent
Requires: gcr-ssh-askpass
Requires: gcr3-ssh-askpass
# So that GNOME pinentry works
Requires: pinentry-gnome3
Requires: gvfs-backend-samba
Requires: samba
# So that GNOME builtin screen recorder works
Requires: gstreamer-plugins-bad
Requires: gstreamer-plugins-good
Requires: yelp
# Polkit integration with GNOME
Requires: polkit-gnome
# https://build.opensuse.org/request/show/921373
Requires: xdg-desktop-portal-gnome
#
# Low-level parts that we need
#
%if 0%{is_opensuse}
# bnc#430161
Requires: NetworkManager-openconnect-gnome
Requires: NetworkManager-openvpn-gnome
Requires: canberra-gtk-play
#
# Branding
#
# #591535
Requires: gtk2-branding-openSUSE
Requires: gtk3-branding-openSUSE
Requires: gtk4-branding-openSUSE
%endif
Requires: gnome-menus-branding-openSUSE
Requires: gsettings-backend-dconf
Requires: gdm
Requires: gdm-branding-Yuga
### GDM systemd service file
Requires: gdm-systemd
### Accessibility packages
Requires: orca
Requires: brltty-driver-speech-dispatcher
Requires: speech-dispatcher-module-espeak
Requires: gnome-backgrounds
Requires: steamdeck-kde-themes
### System definition
Requires: Yuga-release-GNOME
# In sync with Aeon Rev 92
Requires: gamescope-session-steam-session-select-gnome
%description gnome
This package provides the packages for the GNOME Desktop environment
%package nonredistributable
Summary: Yuga nonfree Package
Group: Metapackages
Provides: pattern() = yuga_nonfree
Provides: pattern-category() = Yuga
Provides: pattern-icon() = pattern-kubic
Provides: pattern-order() = 9200
Requires: jupiter-dock-updater-bin
Requires: xone
Requires: xone-dongle-firmware
Requires: steam-bootstrap
%description nonredistributable
This package provides the packages that are not redistributable
%package installer
Summary: Yuga installer packages
Group: Metapackages
Provides: pattern() = yuga_installer
Provides: pattern-category() = Yuga
Provides: pattern-icon() = pattern-kubic
Provides: pattern-order() = 9200
Requires: tik-config-Yuga
Requires: tik-experimental
Requires: tik-experimental-module-welcome
Requires: tik-module-encrypt-yuga
Requires: tik-experimental-module-sicu
Requires: tik-module-swapfile
Requires: tik-module-inhibitor
Requires: tik-module-check-network
Requires: tik-module-prepare-user-yuga
Requires: tik-module-prepare-factory-reset-yuga
Requires: tik-module-install-packages-yuga
Requires: tik-module-mig-yuga
%description installer
This package provides the packages for the installation environment
%prep
# empty on purpose
%build
# empty on purpose
%install
mkdir -p %{buildroot}%{_docdir}/patterns-yuga/
PATTERNS='
base
kde
gnome
nonredistributable
installer
'
for i in $PATTERNS; do
echo "This file marks the pattern $i to be installed." \
> %{buildroot}%{_docdir}/patterns-yuga/${i}.txt
done
%files base
%dir %{_docdir}/patterns-yuga
%{_docdir}/patterns-yuga/base.txt
%files kde
%dir %{_docdir}/patterns-yuga
%{_docdir}/patterns-yuga/kde.txt
%files gnome
%dir %{_docdir}/patterns-yuga
%{_docdir}/patterns-yuga/gnome.txt
%files nonredistributable
%dir %{_docdir}/patterns-yuga
%{_docdir}/patterns-yuga/nonredistributable.txt
%files installer
%dir %{_docdir}/patterns-yuga
%{_docdir}/patterns-yuga/installer.txt
%changelog