{ lib, pkgs, ... }: let programName = "zenbrowser"; programAssets = ../../../assets/system/conf/${programName}; programFiles = builtins.readDir programAssets; files = lib.genAttrs (builtins.attrNames programFiles) (name: { src = "${programAssets}/${name}"; }); in # The module itself must be a function of config/lib/pkgs { config, pkgs, lib, ... }: let # toggle variable based on module option enableProgram = config.myApps.${programName}.enable or false; username = config.defaultUser or "henrov"; in { options.myApps.${programName}.enable = lib.mkEnableOption "Enable Zen Browser"; config = lib.mkIf enableProgram { # myApps container myApps = { ${programName} = { enable = true; assetsDir = programAssets; files = files; user = username; }; }; # Home Manager user home-manager.users.${username} = { home.stateVersion = "26.05"; home.username = username; home.homeDirectory = "/home/${username}"; home.packages = [ pkgs.zen-browser ]; }; }; }