nixos/shared/modules/home-manager/programs.nix

64 lines
1.7 KiB
Nix

{config, lib, ...}:
let
cfg = config.sharedPrograms;
in
{
options.sharedPrograms = {
enable = lib.mkEnableOption "enable all basic programs with Stylix auto-theming";
bat.enable = lib.mkEnableOption "enable bat (cat replacement)";
fzf.enable = lib.mkEnableOption "enable fzf (fuzzy finder)";
btop.enable = lib.mkEnableOption "enable btop (system monitor)";
mpv.enable = lib.mkEnableOption "enable mpv (media player)";
wofi.enable = lib.mkEnableOption "enable wofi (application launcher)";
foot.enable = lib.mkEnableOption "enable foot (terminal emulator)";
};
config = lib.mkMerge [
# When sharedPrograms.enable is true, enable all programs
(lib.mkIf cfg.enable {
sharedPrograms.bat.enable = lib.mkDefault true;
sharedPrograms.fzf.enable = lib.mkDefault true;
sharedPrograms.btop.enable = lib.mkDefault true;
sharedPrograms.mpv.enable = lib.mkDefault true;
sharedPrograms.wofi.enable = lib.mkDefault true;
sharedPrograms.foot.enable = lib.mkDefault true;
})
# Individual program configurations
(lib.mkIf cfg.bat.enable {
programs.bat.enable = true;
})
(lib.mkIf cfg.fzf.enable {
programs.fzf = {
enable = true;
enableZshIntegration = true;
};
})
(lib.mkIf cfg.btop.enable {
programs.btop.enable = true;
})
(lib.mkIf cfg.mpv.enable {
programs.mpv.enable = true;
})
(lib.mkIf cfg.wofi.enable {
programs.wofi.enable = true;
})
(lib.mkIf cfg.foot.enable {
programs.foot = {
enable = true;
settings = {
main = {
pad = "4x4";
};
};
};
})
];
}