# Base home-manager profile, shared by every host (graphical or headless).
# Graphical hosts additionally import ./desktop.nix; the work host imports
# ./work.nix. See the host table in flake.nix.
{ ... }:
{
  imports = [
    ./shell.nix
    ./git.nix
    ./editor.nix
    ./claude.nix
  ];

  # Manage the XDG base-directory layout and ~/.config files. Tools above
  # (bat themes, gh config, ...) write under xdg.configHome; enabling this
  # makes the paths explicit and consistent across hosts. No regression: the
  # defaults match the conventional ~/.config, ~/.cache, ~/.local/share.
  xdg.enable = true;

  # Editor ($EDITOR and $VISUAL) comes from nixvim's defaultEditor (editor.nix).
  # Round out the rest of the standard env. desktop.nix adds its own Wayland
  # session vars; home-manager merges the two attrsets, so these do not clash.
  home.sessionVariables = {
    PAGER = "less -FRX"; # -F quit-if-one-screen, -R raw colour, -X no clear
    # Render man pages through bat (themed): col strips backspace overstrike,
    # bat -l man -p highlights without its own pager decorations.
    MANPAGER = "sh -c 'col -bx | bat -l man -p'";
  };

  # Pinned to the release first installed on these hosts, NOT the current
  # nixpkgs (26.05). stateVersion freezes stateful defaults (file locations,
  # service data formats) to that release; bumping it silently migrates that
  # state and can break it. Leave it -- it is intentional, not stale.
  home.stateVersion = "25.05";
}
