Files
Nomarchy/modules/home/theme-files.nix
Bernardo Magri b27fc5aee8 refactor: major architectural restructure for theme-centric organization
Theme System:
- Move all theme app configs to apps/ subdirectory (20 themes)
- Add theme-loader.nix for dynamic theme config deployment
- Simplify stylix.nix to focus on base theming only

Override System:
- Add overrides.nix for file-based config overrides
- Add behavior-configs.nix for non-visual configuration
- Split hypr/nomarchy.conf into behavior vs visual sections

Module Improvements:
- Add lib.mkDefault to all customizable settings
- Add modules/lib/ with shared utilities and state schema
- Update all home and system modules for downstream overridability

Installer:
- New minimal TTY installer (installer/install.sh)
- Golden path: BTRFS + LUKS2 (disko-golden.nix)
- New installer-iso.nix for TTY-only installation
- Keep graphical installer as installerIsoGraphical option

Cleanup:
- Remove obsolete install.sh, disko-ext4.nix, install-nomarchy.sh
- Update live-iso.nix references
- Add .claude/ to .gitignore for local IDE settings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-11 19:38:27 +01:00

59 lines
2.1 KiB
Nix

{ config, lib, ... }:
let
themePath = ../../assets/themes + "/${config.nomarchy.theme}";
themeAppsPath = themePath + "/apps";
nordAppsPath = ../../assets/themes/nord/apps;
# Check if theme has apps/hyprland.conf
hasHyprlandConf = builtins.pathExists (themeAppsPath + "/hyprland.conf");
in
{
xdg.configFile."nomarchy/current/theme" = {
source = themePath;
recursive = true;
};
# Ensure theme-specific hyprland config exists, fallback to nord if not
# Now checking in apps/ subdirectory
xdg.configFile."nomarchy/current/theme/apps/hyprland.conf" = lib.mkIf (!hasHyprlandConf) {
source = nordAppsPath + "/hyprland.conf";
};
# Legacy compatibility: symlink apps/hyprland.conf to root for scripts expecting old path
xdg.configFile."nomarchy/current/theme/hyprland.conf" = {
source =
if hasHyprlandConf
then themeAppsPath + "/hyprland.conf"
else nordAppsPath + "/hyprland.conf";
};
xdg.configFile."nomarchy/current/theme.name".text = config.nomarchy.theme;
# Expose branding assets
xdg.configFile."nomarchy/branding/logo.png".source = ../../assets/branding/logo.png;
xdg.configFile."nomarchy/branding/logo.txt".source = ../../assets/branding/logo.txt;
xdg.configFile."nomarchy/branding/logo.svg".source = ../../assets/branding/logo.svg;
xdg.configFile."nomarchy/branding/icon.png".source = ../../assets/branding/icon.png;
xdg.configFile."nomarchy/branding/icon.txt".source = ../../assets/branding/icon.txt;
# Expose all themes to the system via local share for script accessibility
# We filter out images to prevent Nix Store bloat
xdg.dataFile."nomarchy/themes".source = builtins.path {
name = "nomarchy-themes-no-images";
path = ../../assets/themes;
filter = path: type:
let
baseName = baseNameOf path;
in
! (type == "regular" && (
lib.hasSuffix ".jpg" baseName ||
lib.hasSuffix ".png" baseName ||
lib.hasSuffix ".jpeg" baseName
));
};
# Nautilus python extensions
xdg.dataFile."nautilus-python/extensions/localsend.py".source = ../../assets/nautilus-python/extensions/localsend.py;
}