{ config, lib, pkgs, ... }: let stateDir = "${config.home.homeDirectory}/.config/home-manager"; # Helper to read state from a file, with a default readState = file: default: if builtins.pathExists "${stateDir}/${file}" then let content = builtins.readFile "${stateDir}/${file}"; cleanContent = lib.removeSuffix "\n" content; in if lib.hasSuffix ".json" file then builtins.fromJSON cleanContent else cleanContent else default; # Unified state reading togglesState = readState "state.json" {}; in { config = { nomarchy = { toggles = { suspend = togglesState.suspend or true; screensaver = togglesState.screensaver or true; idle = togglesState.idle or true; nightlight = togglesState.nightlight or false; waybar = togglesState.waybar or true; skipVsCodeTheme = togglesState.skipVsCodeTheme or false; }; nightlightTemperature = togglesState.nightlightTemperature or 4000; theme = togglesState.theme or "nord"; wallpaper = togglesState.wallpaper or ""; hyprland = { gaps_in = togglesState.hyprland.gaps_in or 5; gaps_out = togglesState.hyprland.gaps_out or 10; border_size = togglesState.hyprland.border_size or 2; }; fonts.monospace = togglesState.font or "JetBrainsMono Nerd Font"; # Derived properties from the theme directory isLightMode = builtins.pathExists (../../assets/themes + "/${togglesState.theme or "nord"}/light.mode"); iconsTheme = let iconsFile = ../../assets/themes + "/${togglesState.theme or "nord"}/icons.theme"; in if builtins.pathExists iconsFile then lib.removeSuffix "\n" (builtins.readFile iconsFile) else "Yaru-blue"; }; }; }