Alright, so you want to install osu! on Endeavour OS. I just reinstalled my system. Two birds with one stone!
Based on https://wiki.archlinux.org/title/User:Katoumegumi

Backstory

My Windows installation has been unstable since year 1 of my computer, and it even went to the point that when I open osu! sometimes it would just not work, black out my screen and play the last sound it was playing (see audio when a BSOD happens)
Yesterday I went to install the latest update, click on restart, yadiyadiyada and unfortunately my computer CRASHED. I didn't feel nervous until I opened up the game to play a bit and find out that my skin was the default one.

Okay, strange, lemme open up the game...

It starts importing all beatmaps.

Okay then, a bit understandable because the update is all about difficulty calculator.

When it finishes, I go to my most recent plays.
Nothing.
Never played.
What?

I go into my collections.
They're still there.
Okay, but are the scores there?
NO!

Thus, after recovering my replays using a batch scripts that opens all .osr files in my Data\r folder, I just moved to linux, and this is a writeup on how I've been installing the game since my first time in April.

Enjoy!

Installation

Installing Wine

We first need to install wine and winetricks, to do so run:

sudo pacman -S wine
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks
sudo mv ./winetricks /usr/local/bin/winetricks

Preparing wineprefix

We now need to install dependencies like fonts or dotnet to make osu! run correctly

WINEARCH=win32 WINEPREFIX=~/.wineosu winetricks dotnet40 dotnet45 cjkfonts gdiplus

(update 12/19/2023): added dotnet45 to make it work with gosumemory

Installing osu!

Skipping this part, but basically download the installer and run it.
I already have my own 3-year-old installation with all my everything on it, so I'm bind-mounting it.

Create a directory:

mkdir ~/.wineosu/osu

And then I added the following fstab line:

/mnt/HDD/osu! /home/srizan/.wineosu/osu none defaults,bind 0 0

Trying to open it up

Running WINEARCH=win32 WINEPREFIX=~/.wineosu wine ~/.wineosu/osu/osu\!.exe twice leads us in the osu! installer with no network connection found.

This is a bit easy to fix, as Wine itself yields this error if you scroll up a bit:

01b0:err:winediag:process_attach Failed to load libgnutls, secure connections will not be available.

Looking the package up in the Arch Linux repos, a package called lib32-gnutls shows up which looks to be exactly what we want.

After installing it, the SSL connection worked and the game is going to sta- too bad!
You thought that was gonna be IT!

It wants a GL context, which we don't have, so installing lib32-mesa fixes it. Easy!

Now, the window is... dark? WHEN ARE WE DONE MAN?
Welp, when going to almost the top of the file, we can see this:

0024:err:winediag:create_gl_drawable XComposite is not available, using GLXPixmap hack.

"GLXPixmap hack"?
The game is, according to peppy, held with duct tape, so no hacks are really going to work.

Here we go, yet ANOTHER lib32 package should fix it.

It opens up!

Yeah. Nice. No audio.
Browsing through the Arch forums I found this post, and I installed the three lib32-alsa-plugins lib32-libpulse lib32-openal packages.

And it started up! (too lazy to screenshot)

Setting up the start script

edit a file in ~/.wineosu/osu/start.sh with the following contents:

#!/usr/bin/env bash

# props to Katoumegumi for the original script, this is exactly the same one and it works wonders.
#export PATH="$HOME/.wineosu/osuwine/bin:$PATH" #Use custom WINE version to run osu!
export WINEARCH=win32
export WINEPREFIX="$HOME/.wineosu"
#export WINEFSYNC=1

#VSync. For some reason, some people had been getting input latency issues and for some reason, the fix is to set VSync to off.
export vblank_mode=0 #For AMD, Intel and others
export __GL_SYNC_TO_VBLANK=0 #For NVIDIA proprietary and open source >=500

#export STAGING_AUDIO_PERIOD=10000

#start osu!
wine osu\!.exe

Setting up the freedesktop entry

Download the osu! logo:

wget --output-document ~/.wineosu/osu/icon.png https://github.com/ppy/osu-wiki/raw/master/wiki/Brand_identity_guidelines/img/usage-full-colour.png

and finally edit a new file in the path ~/.local/share/applications/osu.desktop

[Desktop Entry]
Type=Application
Comment=A free-to-play rhythm game inspired in Osu! Tataekae! Ouendan!
Icon=/home/<username>/.wineosu/osu/icon.png
Exec=/home/<username>/.wineosu/osu/start.sh
Path=/home/<username>/.wineosu/osu
GenericName=osu!
Name=osu!
StartupNotify=true

that's it

Way harder than I thought. If you want the command with all dependencies, type in:

sudo pacman -S lib32-gnutls lib32-mesa lib32-alsa-plugins lib32-libpulse lib32-openal