nixpkgs-immich/pkgs/applications/misc/lutris/fhsenv.nix
2024-09-17 10:23:40 -06:00

162 lines
3.7 KiB
Nix

{ lib, buildFHSEnv, lutris-unwrapped
, extraPkgs ? pkgs: [ ]
, extraLibraries ? pkgs: [ ]
, steamSupport ? true
}:
let
qt5Deps = pkgs: with pkgs.qt5; [ qtbase qtmultimedia ];
gnomeDeps = pkgs: with pkgs; [ zenity gtksourceview gnome-desktop libgnome-keyring webkitgtk ];
xorgDeps = pkgs: with pkgs.xorg; [
libX11 libXrender libXrandr libxcb libXmu libpthreadstubs libXext libXdmcp
libXxf86vm libXinerama libSM libXv libXaw libXi libXcursor libXcomposite
];
gstreamerDeps = pkgs: with pkgs.gst_all_1; [
gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
gst-plugins-bad
gst-libav
];
in buildFHSEnv {
name = "lutris";
runScript = "lutris";
# Many native and WINE games need 32bit
multiArch = true;
targetPkgs = pkgs: with pkgs; [
lutris-unwrapped
# Adventure Game Studio
allegro dumb
# Curl
libnghttp2
# Desmume
lua agg soundtouch openal desktop-file-utils atk
# DGen // TODO: libarchive is broken
# Dolphin
bluez ffmpeg gettext portaudio miniupnpc mbedtls_2 lzo sfml gsm
wavpack orc nettle gmp pcre vulkan-loader
# DOSBox
SDL_net SDL_sound
# GOG
glib-networking
# Higan // TODO: "higan is not available for the x86_64 architecture"
# Libretro
fluidsynth hidapi mesa libdrm
# MAME
fontconfig SDL2_ttf
# Mednafen
libglut mesa_glu
# MESS
expat
# Minecraft
nss
# Mupen64Plus
boost dash
# Overwatch 2
libunwind
# PPSSPP
glew snappy
# Redream // "redream is not available for the x86_64 architecture"
# rpcs3 // TODO: "error while loading shared libraries: libz.so.1..."
llvm
# ScummVM
nasm sndio
# ResidualVM is now merged with ScummVM and therefore does not exist anymore
flac
# Snes9x
libepoxy minizip
# Vice
bison flex
# WINE
xorg.xrandr perl which p7zip gnused gnugrep psmisc opencl-headers
# ZDOOM
soundfont-fluid bzip2 game-music-emu
] ++ qt5Deps pkgs
++ gnomeDeps pkgs
++ lib.optional steamSupport pkgs.steam
++ extraPkgs pkgs;
multiPkgs = pkgs: with pkgs; [
# Common
libsndfile libtheora libogg libvorbis libopus libGLU libpcap libpulseaudio
libao libevdev udev libgcrypt libxml2 libusb-compat-0_1 libpng libmpeg2 libv4l
libjpeg libxkbcommon libass libcdio libjack2 libsamplerate libzip libmad libaio
libcap libtiff libva libgphoto2 libxslt libsndfile giflib zlib glib
alsa-lib zziplib bash dbus keyutils zip cabextract freetype unzip coreutils
readline gcc SDL SDL2 curl graphite2 gtk2 gtk3 udev ncurses wayland libglvnd
vulkan-loader xdg-utils sqlite gnutls p11-kit libbsd harfbuzz
# PCSX2 // TODO: "libgobject-2.0.so.0: wrong ELF class: ELFCLASS64"
# WINE
cups lcms2 mpg123 cairo unixODBC samba4 sane-backends openldap
ocl-icd util-linux libkrb5
# Proton
libselinux
# Winetricks
fribidi
] ++ xorgDeps pkgs
++ gstreamerDeps pkgs
++ extraLibraries pkgs;
extraInstallCommands = ''
mkdir -p $out/share
ln -sf ${lutris-unwrapped}/share/applications $out/share
ln -sf ${lutris-unwrapped}/share/icons $out/share
'';
# allows for some gui applications to share IPC
# this fixes certain issues where they don't render correctly
unshareIpc = false;
# Some applications such as Natron need access to MIT-SHM or other
# shared memory mechanisms. Unsharing the pid namespace
# breaks the ability for application to reference shared memory.
unsharePid = false;
meta = {
inherit (lutris-unwrapped.meta)
homepage
description
platforms
license
maintainers
broken;
mainProgram = "lutris";
};
}