{
  lib,
  config,
  username,
  ...
}:
let
  cfg = config.mangohud;
  cpu = if config.networking.hostName == "thalia" then "7950X3D" else "";
  gpu = if config.networking.hostName == "thalia" then "7900XTX" else "";
in
{
  options = {
    mangohud = {
      enable = lib.mkEnableOption "Enable mangohud in NixOS & home-manager";
    };
  };
  config = lib.mkIf cfg.enable {
    home-manager.users.${username} =
      { config, pkgs, ... }:
      {
        home.file = {
          mangohud-config = {
            enable = true;
            text = ''
              pci_dev=0000:03:00.0
              fps
              fps_color_change
              fps_limit=357,237,141,117,60,0
              fps_value=30,60
              frame_timing
              gpu_stats
              gpu_temp
              gpu_core_clock
              gpu_power
              gpu_load_change
              gpu_load_value=60,90
              gpu_fan
              gpu_voltage
              gpu_text=${gpu}
              cpu_stats
              cpu_temp
              cpu_power
              cpu_mhz
              cpu_text=${cpu}
              cpu_load_change
              cpu_load_value=60,90
              core_load_change
              core_load
              core_bars
              vram
              ram
              swap
              procmem
              engine_version
              arch
              vulkan_driver
              wine
              winesync
              gamemode
              vkbasalt
              fsr
              hdr
              refresh_rate
              show_fps_limit
              resolution
              present_mode
              display_server # Doesn't work when legacy_layout=0
              gl_vsync=1
              vsync=2 # https://gitlab.freedesktop.org/drm/amd/-/issues/3166#note_2277578
              custom_text=P-State
              exec=${pkgs.bat}/bin/bat --plain /sys/devices/system/cpu/amd_pstate/status
              custom_text=P-State EPP
              exec=${pkgs.bat}/bin/bat --plain /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference
              custom_text=OS
              exec=${pkgs.ripgrep}/bin/rg -w PRETTY_NAME /etc/os-release | ${pkgs.coreutils}/bin/cut -d '=' -f2 | ${pkgs.coreutils}/bin/tr -d '"'
              custom_text=Distrobox
              exec=${pkgs.bash}/bin/bash -c '[ -n "''${CONTAINER_ID}" ] && echo Yes || echo No'
              custom_text=Kernel
              exec=${pkgs.coreutils}/bin/uname -r
              text_outline
              text_outline_thickness=2.0
              position=bottom-right
              background_alpha=0.2
              round_corners=10
              no_display
              legacy_layout=0 # For scripts that rely on the new layout
              font_file=${pkgs.lexend}/share/fonts/truetype/lexend/lexend/Lexend-Bold.ttf
              toggle_fps_limit=Shift_R+F1
              toggle_hud=Alt_R+Shift_R
              toggle_hud_position=Shift_R+F11
              toggle_preset=Shift_R+F10
              ${lib.optionalString config.catppuccin.enable ''
                # Catppuccin theming
                background_color=1e1e2e
                battery_color=585b70
                cpu_color=89b4fa
                cpu_load_color=a6e3a1,f9e2af,f38ba8
                engine_color=cba6f7
                fps_color=f38ba8,f9e2af,a6e3a1
                frametime_color=a6e3a1
                gpu_color=cba6f7
                gpu_load_color=a6e3a1,f9e2af,f38ba8
                io_color=f9e2af
                media_player_color=cdd6f4
                ram_color=94e2d5
                text_color=cdd6f4
                text_outline_color=1e1e2e
                vram_color=94e2d5
                wine_color=cba6f7
              ''}'';
            target = "${config.xdg.configHome}/MangoHud/MangoHud.conf";
          };
          mangohud-presets = {
            enable = true;
            text = '''';
            target = "${config.xdg.configHome}/MangoHud/presets.conf";
          };
        };
        programs.mangohud = {
          enable = true;
          package = pkgs.mangohud;
        };
      };
  };
}
