feat: make AGS colorshell configuration fully declarative

- Add complete colorshell v2.0.3 configuration to home/ags-config/
- Disable runner plugin and NightLight tile (incompatible with NixOS)
- Customize SCSS with full opacity (no transparency)
- Add dark pale blue color scheme in home/pywal-colors/
- Configure Papirus-Dark icon theme via home-manager
- Make ~/.config/ags/ immutable and managed by Nix store
- Auto-deploy pywal colors to ~/.cache/wal/colors.json

All AGS configuration is now reproducible and version controlled.
This commit is contained in:
2025-11-04 21:36:38 +00:00
parent 593735370a
commit b2ae32a078
240 changed files with 1024921 additions and 3 deletions

94
AGS-CONFIG.md Normal file
View File

@@ -0,0 +1,94 @@
# AGS Colorshell Configuration - Fully Declarative
Your AGS configuration with colorshell is now **completely reproducible** and managed by your Nix flake.
## What's Now Declarative
### ✅ In Your Flake (`~/nix-flake/`)
1. **AGS Configuration** (`home/ags-config/`)
- Complete colorshell source code
- Modified SCSS with full opacity (`resources/styles/_colors.scss`, `_bar.scss`)
- Disabled NightLight tile (`window/control-center/widgets/tiles/index.tsx`)
- Disabled runner plugin (`app.ts`)
- Pre-compiled gresource file (`resources.gresource`)
- All module modifications (uwsm, wallpaper, etc.)
2. **Color Scheme** (`home/pywal-colors/colors.json`)
- Dark pale blue theme
- Full opacity (alpha: 100)
- Automatically deployed to `~/.cache/wal/colors.json`
3. **Nix Configuration**
- AGS v3 with all Astal packages (`flake.nix`)
- Home-manager module (`home/ags.nix`)
- Icon themes (Papirus-Dark)
- GTK settings
- Hyprland integration
## Configuration Structure
```
~/nix-flake/
├── home/
│ ├── ags-config/ # Complete colorshell configuration
│ │ ├── app.ts # Modified (runner disabled, DEVEL constant)
│ │ ├── modules/ # Modified modules
│ │ ├── resources/ # SCSS with full opacity
│ │ ├── resources.gresource # Pre-compiled resources
│ │ └── window/ # Modified windows (NightLight disabled)
│ ├── pywal-colors/
│ │ └── colors.json # Dark pale blue theme
│ └── ags.nix # AGS home-manager configuration
└── flake.nix # AGS v3 + Astal inputs
```
## Making Changes
### To Modify Colors
1. Edit `home/pywal-colors/colors.json`
2. Rebuild: `sudo nixos-rebuild switch --flake .#desktop`
### To Modify SCSS Styles
1. Edit files in `home/ags-config/resources/styles/`
2. Rebuild gresource:
```bash
cd ~/nix-flake/home/ags-config
nix-shell -p glib.dev --run "glib-compile-resources --sourcedir=resources resources.gresource.xml --target=resources.gresource"
```
3. Commit changes: `git add home/ags-config/resources.gresource`
4. Rebuild: `sudo nixos-rebuild switch --flake .#desktop`
### To Modify AGS Code
1. Edit TypeScript files in `home/ags-config/`
2. Commit changes: `git add home/ags-config/`
3. Rebuild: `sudo nixos-rebuild switch --flake .#desktop`
## Benefits
- 🔒 **Immutable**: `~/.config/ags/` is read-only and owned by root
- 📦 **Reproducible**: Exact same configuration on any machine
- 🔄 **Version Controlled**: All changes tracked in git
- 🧹 **Clean**: No manual file management in home directory
- ⚡ **Atomic**: Changes applied all-at-once, rollback-able
## Current Customizations
- ✅ Colorshell v2.0.3 (without runner/launcher)
- ✅ Dark pale blue color scheme
- ✅ Full opacity (no transparency)
- ✅ NightLight tile disabled (was trying to use hyprctl)
- ✅ Papirus-Dark icon theme
- ✅ All Astal modules integrated
- ✅ Pywal colors configured
## Testing Reproducibility
To verify everything is declarative, you can:
1. Delete `~/.config/ags/` and `~/.cache/wal/`
2. Run `sudo nixos-rebuild switch --flake .#desktop`
3. Everything will be restored exactly as configured!