main
 1{den, ...}: {
 2  den.aspects.desktop.game.includes = [den.aspects.desktop.game.misc];
 3  den.aspects.desktop.game.misc = {
 4    nixos = {pkgs, ...}: let
 5      # Fix DualSense haptics until https://github.com/alsa-project/alsa-ucm-conf/issues/677 been resolved.
 6      alsa-ucm-conf-dualsense-haptics = with pkgs;
 7        alsa-ucm-conf.overrideAttrs {
 8          # https://github.com/alsa-project/alsa-ucm-conf/issues/677#issuecomment-3759801501
 9          patches = [
10            ./alsa-ucm-dualsense-haptics.patch
11          ];
12        };
13    in {
14      environment.sessionVariables.ALSA_CONFIG_UCM2 = "${alsa-ucm-conf-dualsense-haptics}/share/alsa/ucm2";
15
16      programs.gamemode.enable = true;
17
18      # load ntsync
19      boot.kernelModules = ["ntsync"];
20      # make ntsync device accessible
21      services.udev.packages = [
22        (pkgs.writeTextFile {
23          name = "ntsync-udev-rules";
24          text = ''KERNEL=="ntsync", MODE="0660", TAG+="uaccess"'';
25          destination = "/etc/udev/rules.d/70-ntsync.rules";
26        })
27      ];
28    };
29
30    provides.to-users = {
31      includes = [
32        {
33          cacheHome = {config, ...}: {
34            directories = [
35              config.xdg.user-dirs.directories.games
36            ];
37          };
38        }
39      ];
40
41      hjem = {config, ...}: {
42        xdg.user-dirs.directories.games = "${config.directory}/Games";
43      };
44    };
45  };
46}