{ 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" ''; }; }; }