Install this version:
emerge -a =games-arcade/osu-lazer-bin-2026.804.2
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =games-arcade/osu-lazer-bin-2026.804.2
Or alternatively:
emerge --autounmask-write -a =games-arcade/osu-lazer-bin-2026.804.2
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 2026.804.2 | 8 | -* ~amd64 | 0/stable |
# Copyright 2024-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit desktop xdg
DESCRIPTION="A free-to-win rhythm game. Rhythm is just a click away!"
HOMEPAGE="https://osu.ppy.sh/ https://github.com/ppy/osu"
SRC_URI="https://github.com/ppy/osu/releases/download/${PV}-lazer/osu.AppImage -> osu-lazer-${PV}.AppImage"
S="${WORKDIR}/squashfs-root"
LICENSE="MIT CC-BY-NC-4.0"
SLOT="0/stable"
KEYWORDS="-* ~amd64"
IUSE="complete-icon gamemode pipewire sdl2 system-ffmpeg +system-sdl"
RESTRICT="bindist mirror"
RDEPEND="
!games-arcade/osu-lazer
dev-util/lttng-ust:0/2.12
gamemode? ( games-util/gamemode )
pipewire? ( media-video/pipewire[pipewire-alsa] )
system-ffmpeg? ( media-video/ffmpeg-compat:4 )
system-sdl? (
sdl2? ( <media-libs/libsdl2-2.32.50 )
!sdl2? ( media-libs/libsdl3 )
)
"
BDEPEND="complete-icon? ( media-gfx/imagemagick )"
QA_PREBUILT="opt/osu-lazer/*"
src_unpack() {
cp "${DISTDIR}/osu-lazer-${PV}.AppImage" "${WORKDIR}/appimage"
chmod +x "${WORKDIR}/appimage"
"${WORKDIR}/appimage" --appimage-extract
}
src_prepare() {
default
pushd usr/bin || die
# Remove pdb files
rm -fv *.pdb
# Remove UpdateNix from Velopack, updates are managed by portage
rm -v UpdateNix || die
if use system-sdl; then
rm -v libSDL{2,3}.so || die
fi
if use system-ffmpeg; then
rm -v libavcodec.so.58 libavformat.so.58 libavutil.so.56 libswscale.so.5 || die
fi
popd
mkdir -v icons
pushd icons
if use complete-icon; then
magick -verbose "${S}/usr/bin/lazer.ico" osu.png
magick -verbose "${S}/usr/bin/beatmap.ico" beatmap.png
eval $(magick identify -format "mv -v %f osu-%G;" osu*.png)
eval $(magick identify -format "mv -v %f beatmap-%G;" beatmap*.png)
fi
for icon in "${S}"/usr/share/icons/hicolor/*/apps/osu.png; do
cp -v "${icon}" "osu-$(echo "${icon}" | sed 's/^.*\/\([0-9]\{2,4\}x[0-9]\{2,4\}\)\/.*$/\1/g')"
done
popd
cat >osu-lazer <<EOF
#!/usr/bin/bash
export OSU_EXTERNAL_UPDATE_PROVIDER=true
export OSU_SDL3="\${OSU_SDL3:=$(usex sdl2 false true)}"
$(use gamemode && echo "export LD_PRELOAD=\"/usr/lib64/libgamemodeauto.so\${LD_PRELOAD:+:\$LD_PRELOAD}\"")
$(use system-ffmpeg && echo "export LD_LIBRARY_PATH=\"/usr/lib/ffmpeg4/lib64\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH}\"")
exec /opt/osu-lazer/osu! "\$@"
EOF
}
src_install() {
# Install game files
insinto /opt/osu-lazer
doins -r usr/bin/*
fperms +x /opt/osu-lazer/osu!
# Install wrapper script
exeinto /opt/bin
doexe osu-lazer
# Install desktop file
domenu "${FILESDIR}/osu-lazer.desktop"
# Install mime file
insinto /usr/share/mime/packages
doins "${FILESDIR}/osu-lazer.xml"
# Install icons
pushd icons
for icon in *; do
type="${icon%-*}"
size="${icon##*-}"
case "${type}" in
"osu")
newicon --context "apps" --size "${size}" "${icon}" "osu-lazer.png"
;;
"beatmap")
newicon --context "mimetypes" --size "${size}" "${icon}" "osu-beatmap.png"
;;
esac
done
popd
}
Manage flags for this package:
euse -i <flag> -p games-arcade/osu-lazer-bin |
euse -E <flag> -p games-arcade/osu-lazer-bin |
euse -D <flag> -p games-arcade/osu-lazer-bin
!games-arcade/osu-lazer dev-util/lttng-ust:0/2.12 gamemode? ( games-util/gamemode ) pipewire? ( media-video/pipewire[pipewire-alsa] ) system-ffmpeg? ( media-video/ffmpeg-compat:4 ) system-sdl? ( sdl2? ( <media-libs/libsdl2-2.32.50 ) !sdl2? ( media-libs/libsdl3 ) )
complete-icon? ( media-gfx/imagemagick )
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | osu-lazer-2026.804.2.AppImage | 180753600 bytes | https://github.com/ppy/osu/releases/download/2026.804.2-lazer/osu.AppImage |