# 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 # Declares services.headlessSecretService; opt-in, off by default. Graphical # hosts should prefer home-manager's own services.gnome-keyring. ./secret-service.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"; }