175 lines
5.5 KiB
Markdown
175 lines
5.5 KiB
Markdown
# 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
|