{ user, home }: { config, lib, pkgs, ... }: let hmConfig = config.home-manager.users.${user}; in { environment.persistence."/persist/cache"."${home}/.cache/cliphist" = { }; home-manager.users.${user} = { home.packages = with pkgs; [ cliphist ]; systemd.user.services = { cliphist = { Unit = { Description = "Clipboard manager"; After = [ "graphical-session.target" config.environment.persistence."/persist/cache"."${home}/.cache/cliphist".mount ]; PartOf = [ "graphical-session.target" ]; }; Service = { ExecStart = lib.meta.getExe ( pkgs.writeShellApplication { name = "init-cliphist"; runtimeInputs = with pkgs; [ wl-clipboard cliphist ]; text = "exec wl-paste --watch cliphist store"; } ); Restart = "on-failure"; }; Install.WantedBy = [ "graphical-session.target" ]; }; cliphist-image = { Unit = { Description = "Clipboard manager (images)"; After = [ "graphical-session.target" config.environment.persistence."/persist/cache"."${home}/.cache/cliphist".mount ]; PartOf = [ "graphical-session.target" ]; }; Service = { ExecStart = lib.meta.getExe ( pkgs.writeShellApplication { name = "init-cliphist-image"; runtimeInputs = with pkgs; [ wl-clipboard cliphist ]; text = "exec wl-paste --type image --watch cliphist store"; } ); Restart = "on-failure"; }; Install.WantedBy = [ "graphical-session.target" ]; }; }; wayland.windowManager.hyprland.settings.bind = let cliphist-rofi = lib.meta.getExe ( import ./rofi.nix { rofi = hmConfig.programs.rofi.finalPackage; inherit pkgs lib; } ); cliphist = lib.meta.getExe pkgs.cliphist; in [ "$mod, v, exec, ${cliphist-rofi}" "$mod_Ctrl, v, exec, ${cliphist} wipe" ]; }; }