{ lib, pkgs, ... }: { options.nomarchy = { toggles = { suspend = lib.mkOption { type = lib.types.bool; default = true; description = "Whether to show suspend in system menu."; }; screensaver = lib.mkOption { type = lib.types.bool; default = true; description = "Whether the screensaver is enabled."; }; idle = lib.mkOption { type = lib.types.bool; default = true; description = "Whether the idle lock is enabled."; }; nightlight = lib.mkOption { type = lib.types.bool; default = false; description = "Whether the nightlight is enabled."; }; waybar = lib.mkOption { type = lib.types.bool; default = true; description = "Whether the top bar is enabled."; }; skipVsCodeTheme = lib.mkOption { type = lib.types.bool; default = false; description = "Whether to skip theme changes in VSCode."; }; }; nightlightTemperature = lib.mkOption { type = lib.types.int; default = 4000; description = "Temperature for the nightlight."; }; theme = lib.mkOption { type = lib.types.str; default = "summer-night"; description = "System theme name."; }; formFactor = lib.mkOption { type = lib.types.enum [ "laptop" "desktop" ]; default = "laptop"; description = '' Physical form factor. Drives UI affordances (battery widget, future lid handling). Default "laptop" — battery widget is harmless on a desktop (renders empty when no BAT* is present), so the safe default is "show, don't hide". The installer auto-detects via /sys/class/power_supply/BAT* and writes the explicit value into the generated home.nix. ''; }; wallpaper = lib.mkOption { type = lib.types.str; default = ""; description = "System wallpaper path."; }; panelPosition = lib.mkOption { type = lib.types.enum [ "top" "bottom" ]; default = "top"; description = "Waybar panel position."; }; hyprland = { gaps_in = lib.mkOption { type = lib.types.int; default = 5; description = "Inner gaps for Hyprland."; }; gaps_out = lib.mkOption { type = lib.types.int; default = 10; description = "Outer gaps for Hyprland."; }; border_size = lib.mkOption { type = lib.types.int; default = 2; description = "Border size for Hyprland."; }; }; fonts = { monospace = lib.mkOption { type = lib.types.str; default = "JetBrainsMono Nerd Font"; description = "System monospace font."; }; }; iconsTheme = lib.mkOption { type = lib.types.str; default = "Yaru-blue"; description = "System icon theme name."; }; isLightMode = lib.mkOption { type = lib.types.bool; default = false; description = "Whether the current theme is light mode."; }; cursor = { name = lib.mkOption { type = lib.types.str; default = "Bibata-Modern-Ice"; description = "Mouse cursor theme name."; }; package = lib.mkOption { type = lib.types.package; default = pkgs.bibata-cursors; description = "Package providing the cursor theme."; }; }; configOverrides = lib.mkOption { type = lib.types.nullOr lib.types.path; default = null; description = "Path to a directory containing configuration overrides."; }; apps = { opencode = { enable = lib.mkEnableOption '' opencode AI coding CLI integration. When on, deploys ~/.config/opencode/opencode.json. The `opencode` package itself is not installed by Nomarchy — add it to your home.nix if you want it on PATH. ''; }; }; gaming = { enable = lib.mkEnableOption '' Gaming preset (home-side companion to nomarchy.system.gaming.enable). Adds a Hyprland window rule that fullscreens windows whose class matches steam_app_* — i.e. games launched through Steam — so they grab the whole screen instead of opening windowed. Set this to the same value as nomarchy.system.gaming.enable; the installer flips both when the Gaming profile is selected. ''; }; }; }