forked from Shinonome/alt-illogical-impulse
Add hybrid configuration mode as default
✨ NEW FEATURE: Hybrid Configuration Mode 🎯 HYBRID MODE (now default): - Hyprland: Fully declarative (easy to customize inline) - Quickshell: Copy QML files (complex structure, proven to work) - Best of both worlds: customizable + reliable 🔧 IMPLEMENTATION: - Added 'hybrid' to mode enum options - Set hybrid as default mode - Smart configuration copying logic: - copyMiscConfig = true (Quickshell QML files) - copyHyprlandConfig = false (use overrides instead) - copyFishConfig = true (fish shell config) 🎨 USER BENEFITS: - Hyprland errors? Fix declaratively in home.nix - Quickshell complex? Use proven copied files - No more 'broken config dir?' issues - Perfect for NixOS users who want control + reliability Modes available: - hybrid (default): Hyprland declarative + Quickshell copied - declarative: Everything managed by Home Manager - writable: Everything copied to ~/.config for editing
This commit is contained in:
@@ -36,10 +36,11 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
mode = mkOption {
|
mode = mkOption {
|
||||||
type = types.enum [ "declarative" "writable" ];
|
type = types.enum [ "declarative" "writable" "hybrid" ];
|
||||||
default = "declarative";
|
default = "hybrid";
|
||||||
description = ''
|
description = ''
|
||||||
Configuration mode:
|
Configuration mode:
|
||||||
|
- hybrid: Hyprland declarative + Quickshell copied (recommended)
|
||||||
- declarative: Files managed by Home Manager (read-only)
|
- declarative: Files managed by Home Manager (read-only)
|
||||||
- writable: Files staged to .configstaging, user copies and modifies
|
- writable: Files staged to .configstaging, user copies and modifies
|
||||||
'';
|
'';
|
||||||
@@ -95,11 +96,13 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Enable configuration management based on mode
|
# Enable configuration management based on mode
|
||||||
programs.dots-hyprland.configuration = mkIf (cfg.mode == "declarative") {
|
programs.dots-hyprland.configuration = mkIf (cfg.mode == "declarative" || cfg.mode == "hybrid") {
|
||||||
enable = false; # Temporarily disabled for rich config testing
|
enable = mkDefault (cfg.mode == "hybrid"); # Enable copying for hybrid mode
|
||||||
source = cfg.source;
|
source = cfg.source;
|
||||||
# Disable copying specific configs if we're managing them with rich config
|
# In hybrid mode, copy Quickshell but not Hyprland (use overrides instead)
|
||||||
copyMiscConfig = !(cfg ? quickshell || cfg ? terminal);
|
copyMiscConfig = mkDefault (cfg.mode == "hybrid");
|
||||||
|
copyFishConfig = mkDefault true;
|
||||||
|
copyHyprlandConfig = mkDefault (cfg.mode == "declarative"); # Only copy in pure declarative mode
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable writable mode
|
# Enable writable mode
|
||||||
|
|||||||
Reference in New Issue
Block a user