marleyos/modules/home/options/apps/default.nix

112 lines
2.8 KiB
Nix

{
lib,
config,
pkgs,
system,
...
}: let
inherit (lib.snowfall.system) is-linux;
cfg = config.marleyos.apps;
in {
options.marleyos.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.";
};
};
};
default = 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;
default =
if config.marleyos.wayland.hyprland.enable
then config.programs.wofi.package
else config.programs.rofi.package;
description = "The launcher to use.";
};
command = lib.mkOption {
type = lib.types.str;
default = "--show drun";
description = ''
The command appended after the launcher binary to run it.
'';
};
};
};
};
};
config = lib.mkIf (is-linux system) {
home.packages = [
cfg.pinentry
cfg.clipboard.package
];
programs.rbw = lib.mkDefault {
settings.pinentry = cfg.pinentry;
};
services.gpg-agent = lib.mkDefault {
pinentryPackage = cfg.pinentry;
};
};
}