# Your user environment. The Nomarchy desktop (Hyprland, Waybar,
# Ghostty, theming engine, Stylix) comes from homeModules.nomarchy;
# tune it via the nomarchy.* options, add your own packages and
# programs below.
#
# Source of truth for install and flake-init: nomarchy-install copies this
# file and only patches keyboard layout/variant.
{ pkgs, ... }:

{
  # Session keyboard — match services.xserver.xkb.* in system.nix (console
  # + LUKS prompt follow xkb via the distro module). Installer patches these.
  nomarchy.keyboard.layout = "us";
  nomarchy.keyboard.variant = "";

  # ── Overrides (the desktop is on by default; tweak or opt out) ──────
  # nomarchy.terminal = "kitty";        # swap the default terminal
  # nomarchy.waybar.enable = false;     # bring your own bar
  # nomarchy.stylix.enable = false;     # opt out of GTK/Qt theming

  # ── Opt-in features — uncomment and tweak to enable ─────────────────
  # nomarchy.nightlight = {             # scheduled blue-light filter (hyprsunset)
  #   enable = true;                    #   declarative opt-in (or just enable it from
  #                                     #   the menu: System › Night light)
  #   temperature = 4000;               #   night warmth in K — lower is warmer
  #   sunset = "20:00";
  #   sunrise = "07:00";
  # };
  #
  # nomarchy.updates = {                # passive update-awareness indicator + notification
  #   enable = true;
  #   interval = "daily";               #   how often to check (systemd OnCalendar)
  #   flatpak = true;                   #   also count Flatpak updates when flatpak is on
  # };
  #
  # nomarchy.monitors = [               # declarative per-output layout, hotplug-applied
  #   { name = "eDP-1"; position = "0x0"; }
  #   { name = "HDMI-A-1"; position = "auto-right"; }
  # ];                                  #   names from `hyprctl devices`
  #
  # nomarchy.launchOrFocus = [          # SUPER+<key> focuses the app's window,
  #   { key = "B"; class = "firefox"; } #   or launches it if none is open;
  #   { key = "O"; class = "obsidian"; }#   rows appear in the SUPER+? cheatsheet
  # ];                                  #   (class from `hyprctl clients`)
  #
  # nomarchy.displayProfiles = {        # named layouts for the SAME outputs —
  #   docked = {                        #   switch: System › Display › Profiles
  #     monitors = [
  #       { name = "eDP-1"; resolution = "disable"; }
  #       { name = "DP-3"; position = "0x0"; }
  #       { name = "DP-4"; position = "auto-right"; }
  #     ];
  #     workspaces = { "1" = "DP-3"; "9" = "DP-4"; }; # optional ws→output pins
  #   };
  #   undocked = [ { name = "eDP-1"; position = "0x0"; } ]; # bare list = monitors only
  # };                                  #   applied instantly + remembered in the
  #                                     #   flake state (settings.displayProfile);
  #                                     #   the menu's Auto-switch row makes dock/
  #                                     #   undock pick the matching profile
  #
  # nomarchy.keyboard.devices = {       # a specific keyboard's own layout
  #   "keychron-keychron-k2" = { layout = "de"; };
  # };
  #
  # nomarchy.keyboard.layouts = [ "de" "fr" ]; # rofi-prompt for a layout when a new
  #                                            # keyboard connects + remember it in the
  #                                            # flake state (graduates to .devices above)

  # ── Application suite ───────────────────────────────────────────────
  # A starter complete-workstation set, installed for your user — yours to
  # curate. Delete a line to slim the machine; uncomment a suggestion (or
  # add your own) to extend it. The desktop itself — terminal, editor
  # keybinds, theming — comes from the modules; these are the heavier
  # standalone apps the distro doesn't impose by default.
  #
  # Apps that need system setup beyond a package (Steam's 32-bit stack,
  # a daemon, group membership, a kernel module) are NOT here — they're
  # opt-in service toggles in system.nix instead (nomarchy.services.* —
  # steam, libvirt, obs, docker, gamemode, kdeconnect, adb, wireshark,
  # ollama, printing).
  home.packages = with pkgs; [
    libreoffice-fresh   # office suite (documents, sheets, slides)
    vscode              # code editor (unfree; allowUnfree is on)
    gimp                # raster image editor
    inkscape            # vector graphics
    mpv                 # media player
    amberol             # music player (local library; streaming → spotify below)
    pwvucontrol         # PipeWire volume mixer (right-click the Waybar volume)
    calcurse            # TUI calendar — click the Waybar clock to open it

    # ── More apps — uncomment to add ─────────────────────────────────
    # Web browsers
    # firefox
    # chromium
    # ungoogled-chromium
    # brave                       # (unfree)
    # google-chrome               # (unfree)

    # Communication
    # signal-desktop
    # telegram-desktop
    # element-desktop             # Matrix
    # vesktop                     # Discord (themeable client)
    # slack                       # (unfree)
    # zoom-us                     # (unfree)
    # teams-for-linux             # community client (no official Linux app)
    # thunderbird                 # email

    # Office & documents
    # onlyoffice-desktopeditors   # stronger MS-Office fidelity
    # kdePackages.okular          # heavier PDF viewer (zathura ships by default)
    # xournalpp                   # PDF annotation
    # pdfarranger
    # calibre                     # ebook library
    # texliveFull                 # full LaTeX toolchain — multi-GB (texliveMedium is lighter)

    # Notes / research
    # logseq
    # obsidian                    # (unfree)
    # joplin-desktop
    # anki-bin                    # flashcards
    # zotero                      # reference manager

    # Code & data
    # zed-editor
    # lazygit
    # dbeaver-bin                 # database GUI
    # bruno                       # API client
    # distrobox                   # containerized dev shells

    # Graphics & design
    # krita                       # digital painting
    # blender                     # 3D
    # darktable                   # RAW photo

    # Audio / video
    # audacity
    # shotcut                     # video editor
    # kdePackages.kdenlive        # video editor (pulls in KDE libs)
    # handbrake                   # transcoder

    # Webcam tuning (rarely needed — the distro's IR-hide covers the
    # common dual-sensor problem; these are for genuine tuning cases)
    # cameractrls                 # GUI for exposure/focus/zoom, saves per-camera presets
    # v4l-utils                   # v4l2-ctl CLI: list formats, poke controls directly

    # Media
    # vlc
    # spotify                     # (unfree)
    # newsflash                   # RSS reader

    # Gaming (Steam + GameMode are service toggles in system.nix)
    # lutris
    # heroic                      # Epic/GOG launcher
    # bottles                     # Wine prefixes
    # prismlauncher               # Minecraft
    # protonup-qt                 # Proton-GE manager
    # mangohud                    # in-game overlay

    # Files, sync & torrents
    # nextcloud-client
    # localsend                   # AirDrop-like transfer
    # qbittorrent

    # Security
    # keepassxc
    # bitwarden-desktop

    # System
    # gnome-disk-utility
    # gparted
    # baobab                      # disk usage
    # wireguard-tools             # WireGuard CLI (NetworkManager imports .conf tunnels natively)

    # Local AI (Ollama is a service toggle in system.nix)
    # lmstudio                    # (unfree; large closure)
    # alpaca                      # GTK Ollama UI
  ];
}
