# Theme module - provides colors and styling to all nomarchy components { config, lib, pkgs, nomarchyConfig, ... }: let # Load the selected theme themeName = nomarchyConfig.theme or "classical"; # Available themes themes = { classical = import ./classical/colors.nix; # Future themes can be added here: # nord = import ./nord/colors.nix; # catppuccin = import ./catppuccin/colors.nix; }; # Get the active theme, falling back to classical theme = themes.${themeName} or themes.classical; in { # Export theme as a module option for other modules to consume options.nomarchy.theme = lib.mkOption { type = lib.types.attrs; default = theme; description = "The active nomarchy theme configuration"; }; config = { # Set the theme in config nomarchy.theme = theme; # Install theme fonts fonts.packages = with pkgs; [ font-awesome nerd-fonts.jetbrains-mono nerd-fonts.iosevka nerd-fonts.victor-mono nerd-fonts.fantasque-sans-mono nerd-fonts.fira-code nerd-fonts.monaspace inter ]; fonts.fontconfig = { enable = true; defaultFonts = { monospace = [theme.fonts.mono]; sansSerif = [theme.fonts.sans]; }; }; }; }