{ user ? throw "user argument is required", }: { config, inputs, lib, pkgs, ... }: let hmConfig = config.home-manager.users.${user.name}; themeBin = lib.meta.getExe hmConfig.theme.pkg; in { home-manager.users.${user.name} = { imports = [ ./options.nix ]; theme.enable = true; wayland.windowManager.hyprland.settings.bind = [ "CTRL_ALT, r, exec, ${themeBin}" "CTRL_ALT, t, exec, ${themeBin} toggle" ]; home = { activation.themeInit = inputs.home-manager.lib.hm.dag.entryAfter [ "writeBoundary" ] "run ${themeBin}"; persistence."/persist${user.home}".directories = [ "${hmConfig.xdg.relativeConfigHome}/theme" ]; }; }; }