- Update lib/state-schema.nix to default both home and system themes to 'summer-night'.
- Fix 'nomarchy-theme-list' and 'nomarchy-theme-set-templates' to resolve themes and templates from '~/.local/share/nomarchy' instead of the obsolete '$NOMARCHY_PATH' (fixing failures on Live ISO).
- Update 'nomarchy-welcome' to properly convert Title Case theme display names back to kebab-case identifiers and add input validation to prevent crashes.
- Fix installer impermanence symlink by using a relative path ('../persist/etc/nixos'), ensuring it resolves during 'nixos-install' both inside and outside the chroot.
- Deploy '~/.XCompose' symlink via Home Manager and add 'nomarchy-restart-xcompose' to the menu.
- Relocate 'Nomarchy.ttf' to 'core/branding/' and move user-level scripts ('pkg-add', 'pkg-remove', 'env-update', 'preflight-migration') to 'features/scripts/utils/' to align with the distro architecture.
- Remove obsolete '$NOMARCHY_PATH' exports and redundant 'bashrc' template.
- Export theme templates via 'xdg.dataFile' for script accessibility.
68 lines
1.6 KiB
Nix
68 lines
1.6 KiB
Nix
# Nomarchy State Schema
|
|
# Defines the complete state shape with defaults for both home and system state
|
|
{ lib }:
|
|
|
|
{
|
|
# Home state defaults (user preferences)
|
|
home = {
|
|
# Theme and appearance
|
|
theme = "summer-night";
|
|
wallpaper = "";
|
|
font = "JetBrainsMono Nerd Font";
|
|
panelPosition = "top";
|
|
nightlightTemperature = 4000;
|
|
|
|
# Feature toggles
|
|
suspend = true;
|
|
screensaver = true;
|
|
idle = true;
|
|
nightlight = false;
|
|
waybar = true;
|
|
skipVsCodeTheme = false;
|
|
|
|
# Hyprland window manager settings
|
|
hyprland = {
|
|
gaps_in = 5;
|
|
gaps_out = 10;
|
|
border_size = 2;
|
|
};
|
|
};
|
|
|
|
# System state defaults (system-level configuration)
|
|
system = {
|
|
# Theme (can differ from home for system-level theming)
|
|
theme = "summer-night";
|
|
|
|
# Timezone
|
|
timezone = "UTC";
|
|
|
|
# DNS configuration
|
|
dns = "DHCP"; # Options: "DHCP", "Cloudflare", "Google", "Custom"
|
|
customDns = [];
|
|
|
|
# Wi-Fi settings
|
|
wifi = {
|
|
powersave = true;
|
|
};
|
|
|
|
# Optional features
|
|
features = {
|
|
fingerprint = false;
|
|
fido2 = false;
|
|
hybridGPU = false;
|
|
makima = false;
|
|
};
|
|
};
|
|
|
|
# Get a value from state with fallback to default
|
|
getWithDefault = state: path: default:
|
|
let
|
|
pathList = lib.splitString "." path;
|
|
getValue = obj: remaining:
|
|
if remaining == [] then obj
|
|
else if builtins.isAttrs obj && builtins.hasAttr (builtins.head remaining) obj
|
|
then getValue obj.${builtins.head remaining} (builtins.tail remaining)
|
|
else default;
|
|
in getValue state pathList;
|
|
}
|