{ lib, flakeRoot, ... }: let programName = "fonts"; # --- Assets (if any) --- programAssets = "${flakeRoot}/assets/system/conf/${programName}"; programFiles = if builtins.pathExists programAssets then builtins.readDir programAssets else {}; files = lib.genAttrs (builtins.attrNames programFiles) (name: { src = "${programAssets}/${name}"; }); # Enable toggle (matches option defined below) enableProgram = config.enableFonts or true; # Default user user = config.defaultUser or "henrov"; in { # --- Top-level toggle --- options.enableFonts = lib.mkEnableOption "Enable system fonts"; # --- Configuration applied only if enabled --- config = lib.mkIf enableProgram { # Dendritic container for this program myApps.${programName} = { enable = true; assetsDir = programAssets; files = files; user = user; # Example font packages (without referencing pkgs directly outside mkIf) packages = [ "nerd-fonts-iosevka" "nerd-fonts-fira-code" ]; }; # Actual NixOS/Home Manager config fonts.packages = with pkgs; [ nerd-fonts.iosevka nerd-fonts.fira-code ]; }; }