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

let
  exaPackage = pkgs.exa.override { gitSupport = false; };
  defaultArgs = "--icons --classify";
  bin = "${exaPackage}/bin/exa ${defaultArgs}";
in
{
  programs.exa = {
    enable = true;
    package = exaPackage;
  };
  programs.zsh.shellAliases = lib.mkIf config.programs.zsh.enable rec {
    ls = "${bin} --oneline";
    la = "${ls} --all";
    lt = "${bin} --tree --level=3";
    ll = "${bin} --long --header";
    lla = "${ll} --all";
  };

  programs.direnv = {
    enable = true;
    nix-direnv.enable = true;
  };

  programs.zoxide = {
    enable = true;
    enableZshIntegration = config.programs.zsh.enable;
  };

  home.packages = with pkgs; [
    # tools
    xh # friendly and fast tool for sending HTTP requests
    fd # a simple, fast and user-friendly alternative to find
    bat # a cat clone with syntax highlighting and git integration
    ripgrep # a fuzzy finder
    vnetod # a tool to change env sections

    # nix
    nixpkgs-fmt
    nil # lsp server

    docker-compose
  ];
}
