I’m clueless when it comes to device drivers & anything gaming related besides retro emulation (16 bit for life).
I’ve been working on getting steam working for weeks & quite frankly sick of trying & having to tell my little brother that his indies horror titles are a no go. I can’t seem to launch anything at the moment.
Hoping I could get pointers on what my current config might lacking. Here’s my current config to get an idea of what I’ve been trying. Most of the gpu side settings are not currently in use as I seem to get a bunch of acpi errors in bios or I’m unable to start river.
1080ti.nix
{ pkgs, nixpkgs, config, osConfig, lib, ...}:
let videoID = "10de:1b06"; audioID = "10de:10ef";
package = osConfig.boot.kernelPackages.nvidiaPackages.legacy_470;
### general =========================================================================================
nvidia =
{
hardware.enableAllFirmware = true;
nixpkgs.config.nvidia.acceptLicence.enable = true;
hardware.nvidia = {
open = false;
modesetting.enable = false;
powerManagement.enable = false;
#package = osConfig.boot.kernelPackages.nvidiaPackages.stable;
#package = osConfig.boot.kernelPackages.nvidiaPackages.production;
#package = osConfig.boot.kernelPackages.nvidiaPackages.beta;
#package = (osConfig.boot.kernelPackages.nvidiaPackages.legacy_470.overrideAttrs (old: {
# acceptLicence = true;
#}));
prime.offload.enable = false;
powerManagement.finegrained = false;
dynamicBoost.enable = false;
prime.sync.enable = false;
prime.reverseSync.enable = false;
nvidiaPersistenced = true;
forceFullCompositionPipeline = false;
};
};
### opengl =========================================================================================
opengl.hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
#setLdLibraryPath = true;
#extraPackages32 =
extraPackages = with pkgs; [
mesa.drivers
vaapiIntel libvdpau-va-gl vaapiVdpau intel-ocl
vaapiVdpau nvidia-vaapi-driver libvdpau-va-gl
vulkan-tools
#vulkan-validation-layers
#vulkan-loader
#vulkan-extension-layer
#vulkan-headers
#vulkan-tools-lunarg
];
};
### nouveau =========================================================================================
nouveau = {
boot.extraModprobeConfig = '' options nouveau modeset=1 '';
boot.initrd.kernelModules = [ "nouveau" "nvidia" ];
};
### vulkan =========================================================================================
vulkan = {
environment.systemPackages = with pkgs; [vulkan-tools];
environment.variables = {
WLR_BACKEND = "vulkan";
WLR_RENDERER = "vulkan";
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
};
};
### drivers =========================================================================================
drivers = {
services.xserver.videoDrivers = [ "nvidia" "intel" ];
boot.initrd.kernelModules = [
"nvidia"
#"nvidia_modeset"
#"nvidia_uvm"
"nvidia_drm"
];
boot.extraModulePackages = [ osConfig.boot.kernelPackages.nvidia_x11 ];
#boot.extraModulePackages = [pkgs.linuxPackages_latest.nvidia_x11]; # this seems to collide with nuvo
};
### miscelleneous ===================================================================================
misc = {
environment.systemPackages = with pkgs; [glxinfo glmark2];
environment.variables = {
LIBVA_DRIVER_NAME = "nvidia";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
GBM_BACKEND = "nvidia-drm"; ## this seems to clash with vulkan
};
};
### passthrough =====================================================================================
passthrough = {
boot.initrd.kernelmodules = ["vfio_pci" "vfio" "vfio_iommu_type1" "vfio_virqfd"];
};
###==================================================================================================
in
{
config.os = lib.mkMerge [
nvidia
opengl
#nouveau
#vulkan
#drivers
#misc
#passthrough
#test
];
}
gaming.nix
{pkgs, lib, ...}: let
fl = x: {url = x; inputs.nixpkgs.follows = "nixpkgs";};
### steam related ========================================================================================================================================
steam = {
programs.steam = {
enable = true;
gamescopeSession.enable = false;
extraCompatPackages = with pkgs; [
vkd3d-proton
vkd3d
dxvk_2
proton-ge-bin
freetype
openjdk21_headless
wineWowPackages.waylandFull
];
};
environment.systemPackages = with pkgs; [
ares
lutris
steam-run
proton-caller
steamcmd
steam-tui
vkd3d-proton
];
};
#### gamescope ===========================================================================================================================================
gamescope.programs.gamescope = {
enable = true;
capSysNice = true;
#env = [];
};
### misc ----===========================================================================================================================================
misc.environment.systemPackages = with pkgs; [ quakespasm ];
###======================================================================================================================================================
in
{
config = with lib; {
os = mkMerge [ steam
gamescope
misc
#retro
#cuphead
];
};
imports = [ ./minecraft.nix ];
}
gfx.nix
{pkgs, ...}:{
imports = [ ./wms ];
os={
#The user must provide a ~/.xinitrc file containing session startup
services.xserver = {
enable = true;
displayManager.startx.enable = true;
xkb.layout = "us";
xkb.options = "caps:escape";
#libinput.enable = true; #enable if laptop
};
xdg = {
autostart.enable = true;
portal = {
enable = true;
wlr.enable = true;
config.common.default = "*";
extraPortals = with pkgs; [
xdg-desktop-portal
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
];
};
};
programs.xwayland.enable = true;
environment.systemPackages = with pkgs; [
woeusb
woeusb-ng
xdg-utils
qt6.qtwayland
gtk4
];
environment.variables = {
BROWSER = "qutebrowser";
GDK_BACKEND = "wayland, x11";
QT_AUTO_SCREEN_SCALE_FACTOR= "1";
QT_QPA_PLATFORM = "wayland;xcb";
QT_WAYLAND_DISABLE_WINDOWDECORATION= "1";
XDG_CURRENT_DESKTOP = "river";
XDG_SESSION_TYPE = "wayland";
XDG_SESSION_DESKTOP = "river";
SDL_VIDEODRIVER = "wayland";
MOZ_ENABLE_WAYLAND = "1";
XCURSOR_SIZE = "32";
WLR_NO_HARDWARE_CURSORS = "1"; # invisible cursor fix
NIXOS_OZONE_WL = "1"; # tell electron WL!X11
};
};
hm={
gtk = {
enable = true;
theme = {
name = "solarized-gtk";
package = pkgs.numix-solarized-gtk-theme;
#package = pkgs.solarc-gtk-theme;
};
};
qt.enable = true;
#qt.platformTheme = "gtk3";
}
;}
At a loose end here & would appreciate any pointers.