# Copyright 2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # shellcheck shell=bash # shellcheck disable=SC2034 EAPI=8 inherit linux-info MY_PN="proton-cachyos" MY_PV="$(ver_cut 1-2)-$(ver_cut 3)" MY_P="${MY_PN}-${MY_PV}-slr" DESCRIPTION="Custom distribution of Valves Proton from CachyOS" HOMEPAGE="https://github.com/CachyOS/proton-cachyos" setup_globals() { # if all these cpu flags are present fetch the v3 version # (see https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels # and /var/db/repos/gentoo/profiles/arch/amd64/use.mask) local -a cpu_flags_x86_64_v3=( # v2 cpu_flags_x86_popcnt cpu_flags_x86_sse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_ssse3 # v3 cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_x86_bmi1 cpu_flags_x86_bmi2 cpu_flags_x86_f16c cpu_flags_x86_fma3 ) local base="https://github.com/CachyOS/proton-cachyos/releases/download/cachyos-${MY_PV}-slr/${MY_P}" local x86_64="${base}-x86_64.tar.xz" local x86_64_v3="${base}-x86_64_v3.tar.xz" local arm64="${base}-arm64.tar.xz" local flag IUSE+="amd64 arm64 ${cpu_flags_x86_64_v3[*]}" # -- amd64 -- SRC_URI+="amd64? (" # -- x86_64_v3 -- for flag in "${cpu_flags_x86_64_v3[@]}"; do SRC_URI+=" ${flag}? (" done SRC_URI+=" ${x86_64_v3} " for flag in "${cpu_flags_x86_64_v3[@]}"; do SRC_URI+=" )" done # -- x86_64_v3 -- # -- x86_64 -- for flag in "${cpu_flags_x86_64_v3[@]}"; do SRC_URI+=" !${flag}? ( ${x86_64} )" done # -- x86_64 -- SRC_URI+=" )" # -- amd64 -- # -- arm64 -- SRC_URI+=" arm64? ( ${arm64} )" # -- arm64 -- } setup_globals S="${WORKDIR}/${MY_P}" # from dist.LICENSE LICENSE="LGPL-2.1 ZLIB libpng LGPL-2 OFL-1.1 MIT MPL-2.0" SLOT="0" KEYWORDS="-* ~amd64 ~arm64" IUSE+=" +ntsync" # this ebuild expects # the steam runtime RDEPEND=" games-util/steam-launcher[steam-runtime(+)] " # all prebuilt QA_PREBUILT="*" # we will install Proton with this name # to avoid conflicting with other installs INST_P="${MY_PN}-portage" pkg_setup() { if use ntsync; then CONFIG_CHECK="~NTSYNC" linux-info_pkg_setup fi } src_unpack() { default # normalize name to S # there should only ever be 1 archive mv "${WORKDIR}/${MY_P}"-* "${S}" || die } src_prepare() { sed -i -e "s/${MY_PN}-[^\"]*/${INST_P}/g" compatibilitytool.vdf || die default } src_install() { local compatd="/usr/share/steam/compatibilitytools.d" dodir "${compatd}" # mv to preserve mode mv "${WORKDIR}/${MY_P}" "${ED}/${compatd}/${INST_P}" || die fowners -R root:root "${compatd}/${INST_P}" # user_settings.py insinto "/etc/proton/${INST_P}" doins "${FILESDIR}/user_settings.py" dosym -r "/etc/proton/${INST_P}/user_settings.py" "${compatd}/${INST_P}/user_settings.py" # ntsync if use ntsync; then insinto /etc/modules-load.d newins - "${PN}-ntsync.conf" <<-EOF ntsync EOF insinto /etc/security/limits.d newins - "26-${PN}-steam-nofile.conf" <<-EOF * hard nofile 524288 EOF fi } pkg_postinst() { elog "user_settings.py was installed to /etc/proton/${INST_P}/user_settings.py" }