{ lib, flakeRoot, ... }: let # --- Program-specific paths/assets --- programName = "zenbrowser"; programAssets = ../../../assets/system/conf/${programName}; programFiles = builtins.readDir programAssets; files = lib.genAttrs (builtins.attrNames programFiles) (name: { src = "${programAssets}/${name}"; }); in { # Top-level toggle for this program options.enable${lib.str.capitalize programName} = lib.mkEnableOption "Enable ${programName} program"; # Wrap everything in config if enabled config = { config, pkgs, ... }: let # Determine whether the program is enabled enableProgram = config.enableZenbrowser or false; # Determine username safely *after config exists* username = config.defaultUser or "henrov"; in lib.mkIf enableProgram { # Top-level container for all apps myApps = { ${programName} = { enable = true; assetsDir = programAssets; files = files; user = username; # Optional: more program-specific options can go here # e.g., theme = "dark"; # plugins = [ "adblock" "session-manager" ]; }; }; # --- Home Manager user configuration --- home-manager.users.${username} = { home.stateVersion = "26.05"; home.username = username; home.homeDirectory = "/home/${username}"; # Install the package symbolically home.packages = [ pkgs.zen-browser ]; }; }; }