diff --git a/configs/nixos/modules/desktop/utilities/clipboard.nix b/configs/nixos/modules/desktop/utilities/clipboard.nix index 5f965e4..f1b437a 100644 --- a/configs/nixos/modules/desktop/utilities/clipboard.nix +++ b/configs/nixos/modules/desktop/utilities/clipboard.nix @@ -6,21 +6,15 @@ }: # Clipboard history: cliphist records every copy, picked back through rofi. let - user = config.user.name; - - cliphist = "${pkgs.cliphist}/bin/cliphist"; - rofi = "${pkgs.rofi}/bin/rofi"; - wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy"; - # The picker reuses the themed rofi, so history looks like every other menu # the launcher drives. # decode is needed because list emits id-prefixed lines rather than the copied # bytes, so the chosen id has to be resolved back before it can be re-copied. picker = pkgs.writeShellScript "clipboard-picker" '' - ${cliphist} list \ - | ${rofi} -dmenu -i -p Clipboard \ - | ${cliphist} decode \ - | ${wl-copy} + ${lib.getExe pkgs.cliphist} list \ + | ${lib.getExe pkgs.rofi} -dmenu -i -p Clipboard \ + | ${lib.getExe pkgs.cliphist} decode \ + | ${lib.getExe' pkgs.wl-clipboard "wl-copy"} ''; in { @@ -28,15 +22,7 @@ in lib.mkEnableOption "cliphist clipboard history"; config = lib.mkIf config.modules.desktop.utilities.clipboard.enable { - registry.keybind.${config.networking.hostName}.clipboard-history = { - keys = "SUPER + SHIFT + V"; - action = { - kind = "exec"; - command = "${picker}"; - }; - }; - - home-manager.users.${user} = { + home-manager.users.${config.user.name} = { # wl-copy and wl-paste on PATH, so the shell can pipe into and out of the # clipboard. # The watchers and picker above reach wl-clipboard by store path, so this @@ -47,5 +33,13 @@ in # session so uwsm starts and stops them with it. services.cliphist.enable = true; }; + + registry.keybind.${config.networking.hostName}.clipboard-history = { + keys = "SUPER + SHIFT + V"; + action = { + kind = "exec"; + command = "${picker}"; + }; + }; }; }