Files
alt-illogical-impulse/CONFIGURATION_GUIDE.md
T
Celes Renata 9821e69f5c Implement rich NixOS configuration system
 COMPLETE: Full NixOS-style configuration system implemented

🎯 Features:
- Rich configuration options for Quickshell, Hyprland, and Terminal
- Type-safe NixOS module options with defaults and descriptions
- Generated configuration files from Nix expressions
- Example configurations (gaming, productivity, minimalist)
- Comprehensive documentation

🔧 Configuration Modules:
- modules/components/quickshell-config.nix - Quickshell options
- modules/components/hyprland-config.nix - Hyprland options
- modules/components/terminal-config.nix - Terminal options

📝 Example Usage:
programs.dots-hyprland = {
  quickshell.bar.utilButtons.showColorPicker = true;
  hyprland.general.gapsIn = 6;
  terminal.colors.alpha = 0.90;
};

🎨 Generated Files:
- ~/.config/quickshell/ii/modules/common/Config.qml (NixOS-managed)
- ~/.config/hypr/general.conf (NixOS-managed)
- ~/.config/foot/foot.ini (NixOS-managed)

 Tested: All configurations build and activate successfully
🎉 Ready for production use with full NixOS declarative configuration!
2025-08-08 23:10:33 -07:00

246 lines
6.2 KiB
Markdown

# 🎯 dots-hyprland Static Configuration Guide
## 📍 Overview
Since you're using **declarative mode**, configuration files are read-only in the Nix store. To customize static values, modify the source files in your flake and rebuild.
## 🔧 Key Configuration Files
### 1. 📱 Quickshell Main Config
**File**: `configs/quickshell/ii/modules/common/Config.qml`
#### 🎨 Appearance Settings
```qml
property JsonObject appearance: JsonObject {
property bool extraBackgroundTint: true
property int fakeScreenRounding: 2 // 0: None | 1: Always | 2: When not fullscreen
property bool transparency: false
property JsonObject wallpaperTheming: JsonObject {
property bool enableAppsAndShell: true
property bool enableQtApps: true
property bool enableTerminal: true
}
}
```
#### 🖥️ Bar Configuration
```qml
property JsonObject bar: JsonObject {
property bool bottom: false // Instead of top
property int cornerStyle: 0 // 0: Hug | 1: Float | 2: Plain rectangle
property bool borderless: false
property string topLeftIcon: "spark" // Options: distro, spark
property bool showBackground: true
property bool verbose: true
property JsonObject utilButtons: JsonObject {
property bool showScreenSnip: true
property bool showColorPicker: false
property bool showMicToggle: false
property bool showKeyboardToggle: true
property bool showDarkModeToggle: true
property bool showPerformanceProfileToggle: false
}
property JsonObject workspaces: JsonObject {
property bool monochromeIcons: true
property int shown: 10
property bool showAppIcons: true
property bool alwaysShowNumbers: false
property int showNumberDelay: 300 // milliseconds
}
}
```
#### 🔋 Battery Settings
```qml
property JsonObject battery: JsonObject {
property int low: 20
property int critical: 5
property bool automaticSuspend: true
property int suspend: 3
}
```
#### 🚀 Applications
```qml
property JsonObject apps: JsonObject {
property string bluetooth: "kcmshell6 kcm_bluetooth"
property string network: "plasmawindowed org.kde.plasma.networkmanagement"
property string networkEthernet: "kcmshell6 kcm_networkmanagement"
property string taskManager: "plasma-systemmonitor --page-name Processes"
property string terminal: "kitty -1" // This is only for shell actions
}
```
#### ⏰ Time Format
```qml
property JsonObject time: JsonObject {
property string format: "hh:mm"
property string dateFormat: "ddd, dd/MM"
}
```
### 2. 🖼️ Hyprland Configuration
**File**: `configs/hypr/general.conf.template`
#### 🎨 Visual Settings
```conf
general {
gaps_in = @GAPS_IN@ # Inner gaps (default: 4)
gaps_out = @GAPS_OUT@ # Outer gaps (default: 7)
gaps_workspaces = 50 # Workspace gaps
border_size = @BORDER_SIZE@ # Border width (default: 2)
resize_on_border = true
allow_tearing = @ALLOW_TEARING@ # For gaming
}
decoration {
rounding = @ROUNDING@ # Corner rounding (default: 16)
blur {
enabled = @BLUR_ENABLED@ # Background blur
xray = true
}
}
```
### 3. 🖥️ Terminal Configuration
**File**: `configs/applications/foot.ini.template`
#### 📝 Terminal Settings
```ini
[main]
term=xterm-256color
login-shell=yes
app-id=foot
title=foot
[scrollback]
lines=1000 # Scrollback buffer size
multiplier=3.0
[cursor]
style=beam # Options: block, beam, underline
blink=no
beam-thickness=1.5
[colors]
alpha=0.95 # Terminal transparency
```
### 4. 🎯 Fuzzel Launcher
**File**: `configs/matugen/templates/fuzzel/fuzzel_theme.ini`
#### 🚀 Launcher Settings
```ini
[main]
terminal=foot
layer=overlay
width=40
horizontal-pad=40
vertical-pad=8
inner-pad=5
```
## 🔄 How to Apply Changes
### Method 1: Edit and Rebuild
1. **Edit** the configuration files in `~/sources/celesrenata/end-4-flakes/configs/`
2. **Commit** your changes: `git add . && git commit -m "Update static config"`
3. **Rebuild**: `nix build .#homeConfigurations.declarative.activationPackage`
4. **Activate**: `./result/activate`
### Method 2: Switch to Writable Mode
If you want to edit configs directly without rebuilding:
```bash
# Build writable configuration
nix build .#homeConfigurations.writable.activationPackage
./result/activate
# Run setup script
~/.local/bin/initialSetup.sh
# Edit configs directly in ~/.config/
```
## 🎨 Common Customizations
### Change Terminal to Kitty
In `configs/quickshell/ii/modules/common/Config.qml`:
```qml
property string terminal: "kitty -1"
```
### Move Bar to Bottom
```qml
property bool bottom: true
```
### Disable Transparency
```qml
property bool transparency: false
```
### Change Time Format to 12-hour
```qml
property string format: "hh:mm AP"
```
### Increase Terminal Scrollback
In `configs/applications/foot.ini.template`:
```ini
[scrollback]
lines=10000
```
### Change Workspace Count
```qml
property int shown: 5 // Show only 5 workspaces
```
## 🔍 Finding More Options
- **Quickshell Config**: `configs/quickshell/ii/modules/common/Config.qml` (lines 1-300)
- **Hyprland Settings**: `configs/hypr/*.conf.template` files
- **Application Configs**: `configs/applications/` directory
- **Theming Templates**: `configs/matugen/templates/` directory
## 💡 Pro Tips
1. **Search for specific settings**: `grep -r "property.*terminal" configs/`
2. **Check template variables**: Look for `@VARIABLE@` patterns in `.template` files
3. **Test changes**: Use writable mode for quick testing, then apply to declarative mode
4. **Backup configs**: Git tracks all changes, so you can always revert
## 🚀 Quick Start Examples
### Minimal Gaming Setup
```qml
// In Config.qml
property bool transparency: false
property bool showBackground: false
property int shown: 3 // Only 3 workspaces
```
### Productivity Setup
```qml
// In Config.qml
property bool showScreenSnip: true
property bool showColorPicker: true
property string format: "HH:mm:ss"
property string dateFormat: "dddd, MMMM dd, yyyy"
```
### Minimalist Setup
```qml
// In Config.qml
property bool borderless: true
property bool showBackground: false
property bool monochromeIcons: true
property bool verbose: false
```