summaryrefslogtreecommitdiff
path: root/modules/gaming.nix
blob: 70cf221abbf287b4b6cd7dcad34a40821a536b4d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
{ 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
    ];
  };
}