{ lib, config, pkgs, ... }: { options.marleycfg.apps = { pinentry = lib.mkOption { type = lib.types.package; default = pkgs.pinentry-gtk2; description = "The pinentry package to use."; }; clipboard = let default = { package = pkgs.wl-clipboard; copy-command = lib.getExe' pkgs.wl-clipboard "wl-copy"; paste-command = lib.getExe' pkgs.wl-clipboard "wl-paste"; }; in lib.mkOption { type = lib.types.submodule { options = { package = lib.mkOption { type = lib.types.package; default = default.package; description = "The clipboard manager to use."; }; copy-command = lib.mkOption { type = lib.types.str; default = default.copy-command; description = "The command, including binary, to use for copying."; }; paste-command = lib.mkOption { type = lib.types.str; default = default.paste-command; description = "The command, including binary, to use for pasting."; }; }; }; inherit default; }; terminal = lib.mkOption { type = lib.types.package; default = config.programs.wezterm.package; description = "The terminal emulator to use."; }; file-browser = lib.mkOption { type = lib.types.package; description = "The file manager to use."; }; browser = lib.mkOption { type = lib.types.package; default = config.programs.floorp.package; description = "The browser to use."; }; email = lib.mkOption { type = lib.types.package; default = config.programs.thunderbird.package; description = "The email client to use."; }; launcher = lib.mkOption { type = lib.types.submodule { options = { package = lib.mkOption { type = lib.types.package; description = "The launcher to use."; }; command = lib.mkOption { type = lib.types.str; description = '' The command appended after the launcher binary to run it. ''; }; }; }; }; }; # config = lib.mkIf pkgs.stdenv.isLinux { # # TODO: move these to respective modules # programs.rbw = lib.mkDefault { # settings.pinentry = cfg.pinentry; # }; # }; }