summaryrefslogtreecommitdiff
path: root/nix_archive/nix/gaming.nix
blob: e86cd6115012e5f78a21edc9b65a2052dcfac483 (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
{ config, lib, pkgs, ... }: let
  loc = config.local;
  colo = loc.scheme;
in {
  users.users.andrew = {
    extraGroups = [ "gamemode" ];
  };
  environment.systemPackages = with pkgs; lib.lists.flatten [
    (asNeeded "gamepad-tool" ["gamepad-tool"])
    (asNeeded "sdl-jstest" ["sdl-jstest" "sdl2-jstest"])
    (asNeeded "parsec-bin" ["parsecd"])
    (asNeeded "[lutris umu-launcher]" ["lutris"])
    (asNeeded "(retroarch.withCores (cores: with cores; [ mesen bsnes ]))" ["retroarch"])
    (asNeeded "dolphin-emu" ["dolphin-emu"])
    (asNeeded "cemu" ["cemu"])
    (asNeeded "ryujinx" ["ryujinx"])
    (asNeeded "pcsx2" ["pcsx2-qt"])
    (asNeeded "(ppsspp.override { enableQt = true; })" ["ppsspp"])
    (asNeeded "rpcs3" ["rpcs3"])
    (asNeeded "prismlauncher" ["prismlauncher"])
    (asNeeded "osu-lazer-bin" ["osu!"])
  ];
  #hardware.xone.enable = true;
  #hardware.opentabletdriver.enable = true;
  #services.udev.packages = [ pkgs.dolphinEmu ];
  #boot.extraModulePackages = [
  #  config.boot.kernelPackages.gcadapter-oc-kmod
  #];
  #boot.kernelModules = [ "gcadapter_oc" ];
  programs.gamemode = {
    enable = true;
    settings = {
      general.desiredgov = "schedutil";
      general.inhibit_screensaver = 0;
      general.renice = 10;
      # Can't set GPU parameters from an unprivileged container.
      #gpu = {
      #  apply_gpu_optimisations = "accept-responsibility";
      #  gpu_device = 0;
      #  amd_performance_level = "high";
      #};
    };
  };
  programs.gamescope = {
    enable = true;
    package = pkgs.gamescope;
    capSysNice = true;
  };
  #services.ananicy = {
  #  enable = true;
  #  #package = pkgs.ananicy-cpp;
  #  settings = {
  #    apply_nice = true;
  #  };
  #  extraTypes = [
  #    { type = "realtime"; nice = -20; }
  #  ];
  #  extraRules = [
  #    { name = "gamescope"; type = "realtime"; }
  #  ];
  #};
  #security.wrappers = {
  #  gamescope = {
  #    owner = "root";
  #    group = "root";
  #    source = "${pkgs.gamescope}/bin/gamescope";
  #    capabilities = "cap_sys_nice+eip";
  #  };
  #};
  home-manager.users.andrew = let
    homeDir = "${config.users.users.andrew.home}";
  in {
    programs.mangohud = {
      enable = true;
      enableSessionWide = false;
      package = (pkgs.mangohud.override { nvidiaSupport = false; });
      settings = {
        gamemode = true;
        cpu_temp = true;
        cpu_mhz = true;
        vulkan_driver = true;
        gpu_name = true;
        gpu_power = true;
        gpu_temp = true;
        gpu_junction_temp = true;
        gpu_core_clock = true;
        gpu_voltage = true;
        vram = true;
        gpu_mem_temp = true;
        gpu_mem_clock = true;
        engine_version = true;
        wine = true;
        winesync = true;
        display_server = true;
        present_mode = true;
        table_columns = 4;
        cellpadding_y = -0.100;
        font_size = 22;
        round_corners = true;
        toggle_preset = "";
        toggle_hud_position = "";
        toggle_fps_limit = "";
        toggle_logging = "";
        reload_cfg = "";
        upload_log = "";
        toggle_hud = "Shift_R+F10";
      };
    };
  };
}