summaryrefslogtreecommitdiff
path: root/modules/gaming.nix
blob: ad562303f63fe76a7a0ea05d3db1eb327aeea4f1 (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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
{ config, lib, pkgs, ... }:

let
  cfg = config.orbekk.gaming;

  pkgs' = pkgs.unstable;

in {
  options = {
    orbekk.gaming = {
      enable = lib.mkEnableOption "Enable steam with overrides";
    };
  };

  config = lib.mkIf cfg.enable {
    nixpkgs.overlays = [
      (final: prev: {
        steamPackages = pkgs'.steamPackages;
        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;

        };
      })
    ];

    # 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 ];
    hardware.steam-hardware.enable = true;

    environment.systemPackages = with pkgs; [
      wineWowPackages.staging
      steam
      steam.run
      obs-studio
      unstable.rpcs3
    ];
  };
}