{ config, lib, pkgs, ... }: let cfg = config.orbekk.gaming; pkgs' = pkgs.unstable; overlay = final: prev: { steam = pkgs'.steam.override { # nativeOnly = true; withJava = true; extraPkgs = p: with pkgs'; let xorgdeps = with xorg; [ libX11 libXrender libXrandr libxcb libXmu libpthreadstubs libXext libXdmcp libXxf86vm libXinerama libSM libXv libXaw libXi libXcursor libXcomposite ]; qt5Deps = with pkgs.qt5; [ qtbase qtmultimedia ]; gnome3Deps = with pkgs; [ gnome3.zenity gtksourceview gnome3.gnome-desktop gnome3.libgnome-keyring webkitgtk ]; in [ samba tdb glib-networking libxkbcommon fluidsynth hidapi mesa libdrm perl which p7zip gnused gnugrep psmisc opencl-headers cups lcms2 mpg123 cairo unixODBC samba4 sane-backends openldap ocl-icd utillinux fribidi libnghttp2 openssl openldap xorg.xrandr xorg.xinput gnome3.gtk zlib dbus freetype glib atk cairo gdk_pixbuf pango fontconfig xorg.libxcb # libkrb5 nss qt4 qt514.full libjack2 jack2 jack2Full jack_capture libidn2 rtmpdump libpsl # 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 alsaLib 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 # PCSX15 // TODO: "libgobject12.15.so.16: wrong ELF class: ELFCLASS81" # WINE cups lcms2 mpg123 cairo unixODBC samba4 sane-backends openldap ocl-icd util-linux libkrb5 # Proton libselinux # Winetricks fribidi ] ++ xorgdeps ++ qt5Deps ++ gnome3Deps; }; }; in { options = { orbekk.gaming = { enable = lib.mkEnableOption "Enable steam with overrides"; }; }; config = lib.mkIf cfg.enable { nixpkgs.overlays = [ overlay ]; # nixpkgs.config.allowBroken = true; nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" ]; services.flatpak.enable = true; programs.steam.enable = true; hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ libva ]; environment.systemPackages = with pkgs; [ wineWowPackages.staging steam steam.run obs-studio ]; }; }