Home-manager overwriting system binaries and shell variables on macos

After I installed home manager (on macos) I realized that I no env variables like HISTFILE and had to set them in my home.nix. I’m wondering why this is happening and if there is a way to stop it? This wasn’t very alarming and I like the explicit nature of setting them for macos.

But I saw that some of the system binaries installed through the developer tools process no longer had man pages and it must be due to the ‘man’ binary installed by nix. Is there a way to isolate these or prevent the man page collisions for lack of a better word? I see that the ‘man’ from nix works for tools like ‘less’ but there are binaries of ‘less’ present in directories nested in /nix/store, which I’m not sure why? This raises a slightly larger question of why is nix installing it’s own core utils if they’re already present? I can’t imagine ‘less’ or ‘du’ being dependencies for any of the packages I’ve installed.

% which make
/usr/bin/make
~
% man make
No manual entry for make
~
% /usr/bin/man make
~ [⏱ 8s]
%

I have the sourcing for as minimal home-manager env management as possible in my shell env

# [home manager]
. "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"

and my home.nix

{ config, pkgs, ... }:

# when you need an older package
let
  pkgStable = import <stable> {};
in
{
  # Home Manager needs a bit of information about you and the paths it should
  # manage.
  home.username = "cade";
  home.homeDirectory = "/Users/cade";

  # This value determines the Home Manager release that your configuration is
  # compatible with. This helps avoid breakage when a new Home Manager release
  # introduces backwards incompatible changes.
  #
  # You should not change this value, even if you update Home Manager. If you do
  # want to update the value, then make sure to first check the Home Manager
  # release notes.
  home.stateVersion = "24.05"; # Please read the comment before changing.

  # The home.packages option allows you to install Nix packages into your
  # environment.
  home.packages = [
    # Terminal
    pkgs.fzf
    pkgs.lazygit
    pkgs.zellij

    # Editor
    pkgs.neovim
  
    # Verification
    pkgs.elan
    pkgStable.isabelle

    # Languages
    # -> python
    pkgs.uv
  ];

  home.file = {
  
  };

  home.sessionVariables = {
    EDITOR = "nvim";
    HISTFILE = "$HOME/.zsh_history";
    HISTSIZE = 1000;
    SAVEHIST = 1000;
  };

  # Let Home Manager install and manage itself.
  programs.home-manager.enable = true;
}

I really like the workflow and ability to separate stable from unstable (so cool) but this wrinkle is tripping me up.