{
  lib,
  config,
  pkgs,
  ...
}: {
  options.marleyos.shell.wayland.enable = lib.mkEnableOption "wayland";

  config = lib.mkIf (config.marleyos.shell.wayland.enable && pkgs.stdenv.isLinux) {
    # Fix the "tray.target not found" error.
    systemd.user.targets.tray = lib.mkIf (!config.xsession.enable) {
      Unit = {
        Description = "Home Manager System Tray";
        Requires = ["graphical-session-pre.target"];
      };
    };

    marleycfg.apps.clipboard = {
      package = pkgs.wl-clipboard;
      copy-command = lib.getExe' pkgs.wl-clipboard "wl-copy";
      paste-command = lib.getExe' pkgs.wl-clipboard "wl-paste";
    };

    home.packages = [
      config.marleycfg.apps.clipboard.package
    ];
  };
}
