diff --git a/user/mangohud.nix b/user/mangohud.nix index 639314a..6994bcb 100644 --- a/user/mangohud.nix +++ b/user/mangohud.nix @@ -1,71 +1,97 @@ -{ config, lib, ... }: +{ + 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.programs.mangohud = lib.mkIf cfg.enable { - enable = true; - enableSessionWide = true; - settings = { - full = true; - # histogram = true; - no_display = true; - fps_limit = "0,30,60,72,90,120,144,240,288,320"; - toggle_fps_limit = "Shift_R+F10"; - toggle_preset = "Control_R+F9"; - fps_metrics = "Control_R+F8"; + config = lib.mkIf cfg.enable { + programs.mangohud = { + enable = true; + enableSessionWide = true; + inherit settings; + }; - media_player = false; - battery = false; - - # legacy_layout = "false"; - # gpu_stats = true; - # gpu_temp = true; - # gpu_core_clock = true; - # gpu_mem_clock = true; - # gpu_power = true; - # gpu_load_change = true; - # gpu_load_value = "50,90"; - gpu_load_color = "FFFFFF,FFAA7F,CC0000"; - # gpu_text = "GPU"; - # cpu_stats = true; - # cpu_temp = true; - # cpu_power = true; - # cpu_mhz = true; - # cpu_load_change = true; - # core_load_change = true; - # cpu_load_value = "50,90"; - cpu_load_color = "FFFFFF,FFAA7F,CC0000"; - cpu_color = "2e97cb"; - # cpu_text = "CPU"; - # io_stats = true; - # io_read = true; - # io_write = true; - io_color = "a491d3"; - # swap = true; - # vram = true; - vram_color = "ad64c1"; - # ram = true; - ram_color = "c26693"; - # fps = true; - engine_color = "eb5b5b"; - gpu_color = "2e9762"; - wine_color = "eb5b5b"; - # frame_timing = "1"; - frametime_color = "00ff00"; - media_player_color = "ffffff"; - background_alpha = "0.8"; - font_size = "24"; - - background_color = "020202"; - position = "top-left"; - # text_color = "ffffff"; - round_corners = "10"; - toggle_hud = "Shift_R+F12"; - # toggle_logging = "Shift_L+F12"; - # output_folder = "/home/lelgenio"; + # 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" + ''; }; }; }