default.nix
1 { 2 config, 3 pkgs, 4 lib, 5 ... 6 }: 7 let 8 inherit (lib) mkIf; 9 10 cfg = config.dusk.system.nixos.desktop.gaming; 11 in 12 { 13 imports = [ ./sunshine.nix ]; 14 15 config = mkIf cfg.enable { 16 boot.kernel.sysctl."vm.max_map_count" = 1048576; 17 18 environment.systemPackages = with pkgs; [ 19 mangohud 20 moonlight-qt 21 prismlauncher 22 ]; 23 24 hardware = { 25 graphics.enable = true; 26 27 # Support for Xbox One Controllers 28 xone.enable = true; 29 }; 30 31 home-manager.users.${config.dusk.username}.xdg.configFile."gamemode.ini".text = '' 32 [general] 33 softrealtime=on 34 35 [cpu] 36 pin_cores=no 37 ''; 38 39 programs = { 40 gamemode = { 41 enable = true; 42 enableRenice = true; 43 }; 44 45 gamescope = mkIf cfg.gamescope.enable { 46 enable = true; 47 capSysNice = true; 48 }; 49 50 steam = { 51 enable = true; 52 53 dedicatedServer.openFirewall = true; 54 localNetworkGameTransfers.openFirewall = true; 55 remotePlay.openFirewall = true; 56 57 extraCompatPackages = with pkgs; [ proton-ge-bin ]; 58 protontricks.enable = true; 59 60 gamescopeSession = mkIf cfg.gamescope.enable { 61 enable = true; 62 63 env = { 64 WLR_RENDERER = "vulkan"; 65 ENABLE_GAMESCOPE_WSI = "1"; 66 WINE_FULLSCREEN_FSR = "1"; 67 }; 68 69 args = [ 70 "--steam" 71 "--adaptive-sync" 72 ]; 73 }; 74 }; 75 }; 76 77 users.users.${config.dusk.username}.extraGroups = [ "gamemode" ]; 78 }; 79 }