nixos-config/user/mangohud.nix

97 lines
2.2 KiB
Nix

{
config,
lib,
pkgs,
...
}:
let
cfg = config.my.mangohud;
settings = {
# Display
no_display = true; # Hidden by default
toggle_hud = "Shift_R+F12";
font_size = "20";
# GPU
pci_dev = "0:03:00.0";
gpu_text = "RX 7800 XT";
gpu_stats = true;
gpu_load_change = true;
gpu_load_value = "50,90";
gpu_load_color = "FFFFFF,FFAA7F,CC0000";
gpu_voltage = true;
throttling_status = true;
gpu_core_clock = true;
gpu_mem_clock = true;
gpu_temp = true;
gpu_mem_temp = true;
gpu_junction_temp = true;
gpu_fan = true;
gpu_power = true;
# CPU
cpu_text = "R7 8700G";
cpu_stats = true;
core_load = true;
core_bars = true;
cpu_load_change = true;
cpu_load_value = "50,90";
cpu_load_color = "FFFFFF,FFAA7F,CC0000";
cpu_mhz = true;
cpu_temp = true;
cpu_power = true;
io_read = true;
io_write = true;
# RAM
swap = true;
vram = true;
vram_color = "AD64C1";
ram = true;
ram_color = "C26693";
procmem = true;
# FPS
fps = true;
fps_metrics = "avg,0.01";
frame_timing = true;
frametime_color = "FFFFFF";
throttling_status_graph = true;
show_fps_limit = true;
fps_limit = "240,144,120,90,60,30,0";
# Extra
resolution = true;
fsr = true;
winesync = true;
present_mode = true;
fps_color_change = true;
fps_color = "B22222,FDFD09,39F900";
fps_value = "60,144";
};
in
{
options.my.mangohud.enable = lib.mkEnableOption { };
config = lib.mkIf cfg.enable {
programs.mangohud = {
enable = true;
enableSessionWide = true;
inherit settings;
};
# Have the config file be a regular file and not a symlink, so it's easy to tinker with it
xdg.configFile."MangoHud/MangoHud.conf" = {
target = "MangoHud/MangoHud.conf.tmp";
onChange = ''
mkdir -p "${config.xdg.configHome}/MangoHud"
if [ -L "${config.xdg.configHome}/MangoHud/MangoHud.conf" ]; then
rm "${config.xdg.configHome}/MangoHud/MangoHud.conf"
fi
${pkgs.coreutils}/bin/cp --dereference "${config.xdg.configHome}/MangoHud/MangoHud.conf.tmp" "${config.xdg.configHome}/MangoHud/MangoHud.conf"
'';
};
};
}