# DESKTOP FEATURES (home-manager)

**Wayland/Hyprland environment with color-coordinated tooling**

## OVERVIEW
12 modular desktop features with nix-colors (Dracula) integration across all components.

## STRUCTURE
```
desktop/
├── default.nix       # Imports + XDG + Kitty config
├── coding.nix        # Development tools (VSCode, etc.)
├── crypto.nix        # Crypto wallets/tools
├── fonts.nix         # Font packages
├── gaming.nix        # Gaming tools/Steam
├── hyprland.nix      # Hyprland WM configuration
├── media.nix         # Media players/editors
├── office.nix        # LibreOffice, document tools
├── rofi.nix          # Application launcher
├── theme.nix         # GTK/Qt theming
├── wayland.nix       # Wayland utilities
└── webapps.nix       # Browser-based apps
```

## WHERE TO LOOK

| Task | Location | Notes |
|------|----------|-------|
| Add desktop app | Relevant feature .nix | Update home.packages |
| Configure Hyprland | hyprland.nix | Window manager settings |
| Fix colors | Check colorScheme references | Uses config.colorScheme.palette.base* |
| Add font | fonts.nix | Increases system closure size |

## CONVENTIONS

### Color Scheme Integration
All color-aware tools reference `config.colorScheme.palette.base00` through `base0F`:
- **base00-07**: Grayscale (dark to light)
- **base08**: Red/errors
- **base09**: Orange
- **base0A**: Yellow/strings
- **base0B**: Green/functions
- **base0C**: Cyan
- **base0D**: Blue/types
- **base0E**: Purple/constants
- **base0F**: Brown

Template:
```nix
foreground = "#${config.colorScheme.palette.base05}";
background = "#${config.colorScheme.palette.base00}";
```

### Session Variables
Set in default.nix for Wayland/Hyprland:
```nix
NIXOS_OZONE_WL = "1";
QT_QPA_PLATFORM = "wayland";
XDG_CURRENT_DESKTOP = "Hyprland";
```

### XDG Defaults
- **PDF**: okular
- **Text**: nvim
- **Browser**: Zen (io.github.zen_browser.zen)
- **Archive**: file-roller

## ANTI-PATTERNS

- **DON'T** hardcode hex colors - use colorScheme palette
- **DON'T** install fonts globally - keep in user packages
- **DON'T** bypass XDG defaults - set in mimeApps

## NOTES

- Kitty terminal configured in default.nix (not separate file)
- Bibata-Modern-Ice cursor theme hardcoded
- Session path includes cargo, npm-global, bun
- Desktop features are always-enabled (no feature flags in this dir)
