# Nomarchy — Home Manager entry point.
# Consume this via homeModules.nomarchy (flake.nix), which also pulls in
# the stylix home module that stylix.nix configures.
{ config, lib, pkgs, ... }:

{
  imports = [
    ./options.nix   # the nomarchy.* option surface
    ./theme.nix     # ingests theme-state.json, owns the live-sync hooks
    ./stylix.nix    # GTK/Qt/cursor/fonts from the same JSON
    ./hyprland.nix
    ./waybar.nix
    ./ghostty.nix
    ./btop.nix
    ./rofi.nix      # launcher theming + the nomarchy-menu dispatcher
    ./swaync.nix    # notification daemon, themed from the same JSON
    ./idle.nix      # hyprlock + hypridle, themed from the same JSON
    ./yazi.nix      # flagship TUI file manager, themed + plugins
    ./osd.nix       # swayosd volume/brightness OSD, themed
    ./nightlight.nix # scheduled blue-light filter (hyprsunset), opt-in
    ./timezone.nix  # keep the Waybar clock in step with auto-timezone changes
    ./updates.nix   # passive update-awareness indicator + notification, opt-in
    ./shell.nix     # zsh + starship + bat/eza/zoxide, themed
    ./keys.nix      # gpg-agent (fronts SSH) + pinentry-qt
    ./fastfetch.nix # system info with the themed Nomarchy logo
    ./viewers.nix   # zathura (Stylix-themed) + imv — PDF/image viewing
    ./mime.nix      # default applications (mimeapps.list), degrades with the suite
    ./recording.nix # nomarchy-record: screen recording behind Capture + the bar ⏺
    ./battery-notify.nix # low-battery toasts at the bar's 25/10% thresholds
    ./satty.nix     # satty screenshot annotation tool, themed
  ];

  # Clipboard history (wl-paste watcher); browsed via the SUPER+CTRL+V
  # menu module.
  services.cliphist.enable = true;

  # Automount removable media (USB drives) and provide safe-removal notifications.
  services.udiskie.enable = true;

  # Microphone noise cancellation (rnnoise) and audio EQ.
  services.easyeffects.enable = true;

  # Wifi from the bar: nm-applet lives in waybar's tray (SNI flag via
  # preferStatusNotifierItems — without it there is no tray icon).
  services.network-manager-applet.enable = true;
  xsession.preferStatusNotifierItems = true;

  # Standard XDG user directories (Downloads, Documents, Pictures, Music,
  # Videos, Desktop, Public, Templates): written to user-dirs.dirs so file
  # pickers/browsers resolve them, and created on activation so a fresh
  # install lands with them present (not just on first app use). mkDefault
  # so a downstream home.nix can flip it off or remap individual paths.
  xdg.userDirs = {
    enable = lib.mkDefault true;
    createDirectories = lib.mkDefault true;
  };

  home.stateVersion = lib.mkDefault "26.05";

  home.packages = with pkgs; [
    awww       # wallpaper daemon with animated transitions (the swww fork)
    libnotify
    hyprpicker
  ];

  home.sessionVariables = {
    TERMINAL = config.nomarchy.terminal;
    NIXOS_OZONE_WL = "1"; # Electron/Chromium native Wayland

    # Where the Nomarchy flake (and therefore theme-state.json) lives on
    # disk. nomarchy-theme-sync writes its state here; rebuilds read from
    # here. Clone/symlink your flake to this path.
    NOMARCHY_PATH = "$HOME/.nomarchy";
  };

  programs.home-manager.enable = true;
}
