# hosts/FredOS-Gaming.nix
{ config, pkgs, lib, inputs, ... }:
{
  config = lib.mkIf (config.networking.hostName == "FredOS-Gaming") {
    environment.systemPackages = with pkgs; [
      mangohud
      gamescope
      vesktop
      lsfg-vk
      lsfg-vk-ui
      faugus-launcher
      adwaita-icon-theme
      mission-center
      geary
      wowup-cf
      adwsteamgtk
      proton-vpn
      onlyoffice-desktopeditors
      woeusb
    ];

    # Force heavy builds off the gaming PC onto the media server so nix updates
    # never compete with games for CPU/RAM. Pairs with the distributed build
    # config in common.nix. builders-use-substitutes lets the server pull from
    # binary caches directly rather than re-uploading through this machine.
    #
    # max-jobs = 1 (not 0): trivial preferLocalBuild = true derivations (e.g.
    # pkgs.writeText for HM config files) are rejected by the remote build hook
    # and can't be substituted, so they must build locally. They finish in
    # milliseconds and have no gaming impact. All real compilation still goes to
    # the remote via the distributed build config.
    nix.settings.max-jobs = 1;
    nix.settings.builders-use-substitutes = true;

    programs.steam = {
      enable = true;
      remotePlay.openFirewall = true;
      package = pkgs.steam.override {
        extraPkgs = pkgs: with pkgs; [
          adwaita-icon-theme
        ];
      };
    };

    boot.loader.systemd-boot.configurationLimit = 5;
    boot.initrd.systemd.enable = true;
    boot.kernelParams = [ "video=DP-2:3440x1440@180" ];

    # LAN has no IPv6 route — AAAA lookups succeed but connect fails, which
    # made NetworkManager's connectivity probe report "limited" at boot
    # (GNOME's "?" icon) until the next 5-min repoll.
    #
    # `enableIPv6 = false` only sets the system-wide sysctl; NetworkManager
    # still flips disable_ipv6=0 on the live interface because each connection
    # defaults to `ipv6.method = auto`. The probe then races over a SLAAC ULA
    # that has no real upstream and we get the "?" again. Force every NM
    # connection to skip v6 altogether and ignore router advertisements at
    # the kernel layer for any future interface.
    networking.enableIPv6 = false;
    networking.networkmanager.connectionConfig."ipv6.method" = "disabled";
    boot.kernel.sysctl = {
      "net.ipv6.conf.all.accept_ra" = 0;
      "net.ipv6.conf.default.accept_ra" = 0;
    };

    # NetworkManager only re-runs its connectivity probe on link-up or every
    # 5 minutes. If the first boot probe races NM startup and reports
    # "limited", GNOME caches that state until the next repoll — which is
    # what surfaces as the persistent "?" icon. This oneshot kicks an
    # explicit recheck once everything's online, which forces NM to
    # transition to "full" and the icon clears.
    systemd.services.nm-connectivity-kick = {
      description = "Force NetworkManager connectivity recheck after boot";
      after = [ "NetworkManager.service" "network-online.target" ];
      wants = [ "network-online.target" ];
      wantedBy = [ "multi-user.target" ];
      serviceConfig = {
        Type = "oneshot";
        ExecStart = "${pkgs.networkmanager}/bin/nmcli networking connectivity check";
      };
    };

    home-manager.users.fred = { ... }: {
      wayland.windowManager.hyprland.settings.monitor = [{
        output   = "DP-2";
        mode     = "3440x1440@180";
        position = "0x0";
        scale    = 1;
      }];

      home.file.".local/share/Steam/compatibilitytools.d/Proton-CachyOS Latest".source =
        inputs.proton-cachyos-nix.packages.x86_64-linux.proton-cachyos-x86_64-v3.steamcompattool;
    };
  };
}
