{ lib, ... }:

{
  programs = {
    atuin.enable = true;
    atuin.flags = [ "--disable-ctrl-r" "--disable-up-arrow" ];
    bash = {
      enable = true;
      enableCompletion = false;
    };
    zsh.enable = true;
    fish.enable = true;
  };

  # Needed to avoid error with dummy fish package.
  xdg.dataFile."fish/home-manager_generated_completions".source =
    lib.mkForce (builtins.toFile "empty" "");

  test.stubs = {
    atuin = { name = "atuin"; };
    bash-preexec = { };
  };

  nmt.script = ''
    assertFileExists home-files/.bashrc
    assertFileContains \
      home-files/.bashrc \
      "eval \"\$(@atuin@/bin/atuin init bash --disable-ctrl-r --disable-up-arrow)\""

    assertFileExists home-files/.zshrc
    assertFileContains \
      home-files/.zshrc \
      "eval \"\$(@atuin@/bin/atuin init zsh --disable-ctrl-r --disable-up-arrow)\""
    assertFileExists home-files/.config/fish/config.fish
    assertFileContains \
      home-files/.config/fish/config.fish \
      "@atuin@/bin/atuin init fish --disable-ctrl-r --disable-up-arrow | source"
  '';
}