{
  config,
  pkgs,
  lib,
  ...
}:

let
  cfg = config.nmasur.presets.programs.nix-index;
in

{

  options.nmasur.presets.programs.nix-index.enable =
    lib.mkEnableOption "nix-index caching for command line";

  config = lib.mkIf cfg.enable {

    # Provides "command-not-found" options
    programs.nix-index = {
      enable = true;
      enableFishIntegration = true;
    };

    # Create nix-index if doesn't exist
    home.activation.createNixIndex =
      let
        cacheDir = "${config.xdg.cacheHome}/nix-index";
      in
      lib.mkIf config.programs.nix-index.enable (
        config.lib.dag.entryAfter [ "writeBoundary" ] ''
          if [ ! -d ${cacheDir} ]; then
              run ${pkgs.nix-index}/bin/nix-index -f ${pkgs.path}
          fi
        ''
      );

  };

}