{ config, lib, pkgs, ... }: let cfg = config.ptw.services.gamemode; in { options.ptw.services.gamemode = { enable = lib.mkEnableOption "Enable and configure gamemode"; }; config = lib.mkIf cfg.enable { programs.gamemode = { enable = true; enableRenice = true; settings = { general = { reaper_freq = 5; desiredgov = "performance"; igpu_desiredgov = "powersave"; igpu_power_threshold = 0.3; softrealtime = "on"; renice = 0; ioprio = 0; inhibit_screensaver = 1; }; gpu = { amd_performance_level = "high"; }; custom = let switchScript = groupName: pkgs.writeShellScript "switch-input-group.sh" '' ${pkgs.dbus}/bin/dbus-send --print-reply --dest=org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.SwitchInputMethodGroup string:'${groupName}' ''; pauseFcitx = switchScript "Group 2"; resumeFcitx = switchScript "Group 1"; in { start = ''${pauseFcitx}''; end = ''${resumeFcitx}''; }; }; }; }; }