{ config, pkgs, lib, inputs, ... }: { # Imported for all hosts via flake.nix. config = { stylix = { enable = true; # builtins.path hashes only the image content, not the whole flake tree, # so palette.json is only rebuilt when the wallpaper itself changes. image = builtins.path { name = "wallpaper.png"; path = inputs.self + "/walls/wallpaper.png"; }; polarity = "dark"; # Let stylix theme every target it supports. Per-target opt-outs go # under home-manager.users.fred.stylix.targets..enable = false. autoEnable = true; cursor = { package = pkgs.bibata-cursors; name = "Bibata-Modern-Ice"; size = 24; }; # caelestia's font set: Rubik for UI text, CaskaydiaCove NF for mono # (still a nerd font, so terminal glyphs survive the swap). fonts = { monospace = { package = pkgs.nerd-fonts.caskaydia-cove; name = "CaskaydiaCove NF"; }; sansSerif = { package = pkgs.rubik; name = "Rubik"; }; serif = { package = pkgs.rubik; name = "Rubik"; }; }; }; # Per-app theming that has to follow the RUNTIME wallpaper (GTK, ghostty, # btop, zen, vesktop, folder icons) lives in settings/theming.nix: it # renders one set of config files per wallpaper in walls/ and swaps them # in without a rebuild. Everything above is build-time and stays here. }; }