{ user }: { lib, pkgs, config, ... }: with lib; { options.roles.gamer = { enable = mkEnableOption "gamer packages"; }; config = mkIf config.roles.gamer.enable { # required for heroic launcher nixpkgs.config.permittedInsecurePackages = [ "electron-24.8.6" ]; home-manager.users.${user}.imports = [{ home.packages = with pkgs; [ airshipper minetest superTuxKart xonotic heroic BeatSaberModManager protontricks protonup-qt gamemode (makeDesktopItem { name = "x11steam"; desktopName = "X11 Steam Wrapper"; exec = "QT_QPA_PLATFORM=xcb SDL_VIDEODRIVER=x11 ${steam}/bin/steam"; }) oversteer ]; }]; nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-run" "steam-original" "osu-lazer" ]; programs.steam = { enable = true; remotePlay.openFirewall = true; dedicatedServer.openFirewall = true; }; hardware.steam-hardware.enable = true; environment.etc.logitechG920 = { target = "usb_modeswitch.d/046d:c261"; text = '' DefaultVendor=046d DefaultProduct=c261 MessageEndpoint=01 ResponseEndpoint=01 TargetClass=0x03 MessageContent="0f00010142" ''; }; services.udev.extraRules = '' ATTR{idVendor}=="046d", ATTR{idProduct}=="c261", RUN+="${pkgs.usb-modeswitch}/bin/usb_modeswitch -c '/etc/usb_modeswitch.d/046d:c261'" ''; hardware.new-lg4ff.enable = true; }; }