# Stylix Migration Work - COMPLETED

## Summary of Work Completed

### 1. Replaced Catppuccin with Stylix
- Removed `catppuccin` input from `flake.nix`
- Added `stylix` input (release-25.11 branch to match NixOS version)
- Added `stylix.nixosModules.stylix` to frame12 modules in flake.nix
- Removed catppuccin modules from nate, nate-work, and frame12 configurations

### 2. Stylix Configuration
**File: `/home/nate/nixos/frame12/default.nix`**
```nix
stylix = {
  enable = true;
  image = ./wallpaper.png;
  base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-macchiato.yaml";
  polarity = "dark";

  # System-wide cursor
  cursor = {
    package = pkgs.bibata-cursors;
    name = "Bibata-Modern-Classic";
    size = 32;
  };

  # Fonts
  fonts = {
    serif = { package = pkgs.lato; name = "Lato"; };
    sansSerif = { package = pkgs.lato; name = "Lato"; };
    monospace = { package = pkgs.maple-mono.NF; name = "Maple Mono NF"; };
    emoji = { package = pkgs.noto-fonts-color-emoji; name = "Noto Color Emoji"; };
    sizes = {
      applications = 12;
      desktop = 10;
      popups = 10;
      terminal = 11;
    };
  };

  targets.plymouth.enable = false;  # Keep custom Framework plymouth theme
};
```

### 3. Stylix Auto-Enable in Home Manager
**File: `/home/nate/nixos/frame12/modules/home-manager/home.nix`**
- Enabled `stylix.autoEnable = true` for automatic theming of all programs

### 4. Programs Converted to Nix Configuration

All programs below now use `programs.<name>.enable = true` with Stylix auto-theming:

**File: `/home/nate/nixos/frame12/modules/home-manager/programs.nix`**
| Program | Status | Notes |
|---------|--------|-------|
| Ghostty | DONE | Maple Mono NF with ligatures, keybinds |
| Foot | DONE | Minimal config, Stylix handles fonts/colors |
| Helix | DONE | Full config with Colemak-DH bindings, languages, LSP |
| Bat | DONE | Simple enable |
| Fzf | DONE | With zsh integration |
| Btop | DONE | Simple enable |
| Mpv | DONE | Simple enable |
| Wofi | DONE | Simple enable |

**File: `/home/nate/nixos/shared/modules/home-manager/waybar.nix`**
| Program | Status | Notes |
|---------|--------|-------|
| Waybar | DONE | Shared module with parameterized options |

### 5. Waybar Shared Module

Created parameterized waybar module for use across multiple machines:
- **File**: `/home/nate/nixos/shared/modules/home-manager/waybar.nix`
- **Options**:
  - `waybarConfig.enable` - Enable waybar with Stylix theming
  - `waybarConfig.terminal` - Terminal for on-click commands (default: "ghostty")
  - `waybarConfig.launcher` - App launcher command (default: "wofi --show=drun")
  - `waybarConfig.fontSize` - Base font size (default: 16)
  - `waybarConfig.font` - Font family (default: "Overpass Nerd Font")
  - `waybarConfig.position` - Bar position: top/bottom (default: "top")
  - `waybarConfig.margin` - Margin in pixels (default: 3)
  - `waybarConfig.extraModulesLeft` - Additional left modules
  - `waybarConfig.extraModulesRight` - Additional right modules
  - `waybarConfig.windowRewriteRules` - Additional window title rewrite rules
  - `waybarConfig.workspaceIcons` - Additional workspace icons

### 6. Dotfiles Deleted

| Dotfile | Status |
|---------|--------|
| `/home/nate/nixos/frame12/dotfiles/ghostty/` | DELETED |
| `/home/nate/nixos/shared/dotfiles/ghostty/` | DELETED |
| `/home/nate/nixos/shared/linked-dotfiles/helix/` | DELETED |
| `/home/nate/nixos/frame12/linked-dotfiles/waybar/` | DELETED |

### 7. Symlinks Removed

- Removed `helix` from `xdg.configFile` in home.nix
- Removed `waybar` from `xdg.configFile` in home.nix

### 8. Packages Removed from Manual Lists

**From `home.nix` home.packages:**
- helix (now programs.helix)
- ghostty (now programs.ghostty)
- bat (now programs.bat)
- fzf (now programs.fzf)
- mpv (now programs.mpv)

**From `niri_home.nix` home.packages:**
- wofi (now programs.wofi)
- waybar (now programs.waybar via waybarConfig)

**From `niri_conf.nix` environment.systemPackages:**
- foot (now programs.foot in home-manager)
- waybar (now programs.waybar via waybarConfig)
- wofi (now programs.wofi)

---

## File Structure After Migration

```
frame12/modules/home-manager/
├── home.nix          # Main home config, imports programs.nix
└── programs.nix      # All Stylix-themed program configs

frame12/modules/niri/
├── niri_home.nix     # Niri home config, imports shared waybar.nix
└── niri_conf.nix     # Niri system config

shared/modules/home-manager/
└── waybar.nix        # Parameterized waybar module with Stylix theming
```

---

## Applications WITHOUT Direct Stylix Support

These retain manual CSS/config with catppuccin colors:

| Application | Config Location | Notes |
|-------------|-----------------|-------|
| SwayNC | `/home/nate/nixos/shared/dotfiles/swaync/` | Manual CSS with catppuccin colors |
| Niri | `/home/nate/nixos/frame12/linked-dotfiles/niri/` | Border colors are custom gradients |

---

## Testing

```bash
# Dry-run build (validates configuration)
nix build .#nixosConfigurations.frame12.config.system.build.toplevel --dry-run

# Full rebuild
sudo nixos-rebuild switch --flake .#frame12

# Validate niri config
niri validate
```

---

## Reference: Stylix Base16 Color Variables

Stylix provides these CSS variables for waybar and other GTK apps:
- `@base00` through `@base0F` - Base16 color palette
- Colors map to catppuccin-macchiato scheme

## Reference: Stylix Documentation

- Installation: https://nix-community.github.io/stylix/installation.html
- Configuration: https://nix-community.github.io/stylix/configuration.html
- Styling guide: https://nix-community.github.io/stylix/styling.html
