{ config, lib, pkgs, ... }: let cfg = config.py.programs; inherit (lib) mkEnableOption mkIf; in { options.py.programs = { bat.enable = mkEnableOption "bat"; direnv.enable = mkEnableOption "direnv"; fzf.enable = mkEnableOption "fzf"; nix-index.enable = mkEnableOption "nix-index"; obs.enable = mkEnableOption "OBS Studio"; pandoc.enable = mkEnableOption "pandoc"; wakatime.enable = mkEnableOption "wakatime"; zoxide.enable = mkEnableOption "zoxide"; }; config = { catppuccin = { bat.enable = cfg.bat.enable; fzf.enable = cfg.fzf.enable; obs.enable = cfg.obs.enable; }; programs = { bat = mkIf cfg.bat.enable { enable = true; }; direnv = mkIf cfg.direnv.enable { enable = true; enableBashIntegration = true; enableNushellIntegration = true; enableZshIntegration = true; nix-direnv.enable = true; stdlib = builtins.readFile ./direnv-stdlib.sh; }; fzf = mkIf cfg.fzf.enable { enable = true; enableBashIntegration = true; enableZshIntegration = true; }; nix-index = mkIf cfg.nix-index.enable { enable = true; enableBashIntegration = true; enableFishIntegration = true; enableZshIntegration = true; }; obs-studio = mkIf cfg.obs.enable { enable = true; plugins = with pkgs.obs-studio-plugins; [ obs-text-pthread obs-backgroundremoval input-overlay obs-tuna obs-pipewire-audio-capture obs-vkcapture wlrobs ]; }; pandoc = mkIf cfg.pandoc.enable { enable = true; }; zoxide = mkIf cfg.zoxide.enable { enable = true; enableBashIntegration = true; enableFishIntegration = true; enableZshIntegration = true; }; }; home = { packages = mkIf cfg.wakatime.enable [ pkgs.wakatime ]; sessionVariables = { WAKATIME_HOME = "${config.xdg.configHome}/wakatime"; }; }; }; }