{ user ? throw "user argument is required", }: { config, lib, pkgs, ... }: let hmConfig = config.home-manager.users.${user.name}; in { home-manager.users.${user.name} = { home = { packages = with pkgs; [ wl-clipboard cliphist ]; persistence."/cache${user.home}".directories = [ "${hmConfig.xdg.relativeCacheHome}/cliphist" ]; }; services.cliphist.enable = true; wayland.windowManager.hyprland.settings.bind = let cliphist = lib.meta.getExe pkgs.cliphist; rofi = lib.meta.getExe pkgs.rofi-wayland; wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy"; in [ "$mod, v, exec, ${cliphist} list | ${rofi} -cache-dir ${hmConfig.xdg.cacheHome}/rofi -dmenu -display-columns 2 | ${cliphist} decode | ${wl-copy}" "$mod_CTRL, v, exec, ${cliphist} list | ${rofi} -cache-dir ${hmConfig.xdg.cacheHome}/rofi -dmenu -display-columns 2 | ${cliphist} delete" "$mod_CTRL_SHIFT, v, exec, ${cliphist} wipe" ]; }; }