{pkgs, ...}: {
  home.packages = with pkgs; [
    bat
    fzf
    fd
    eza
    most
  ];

  home.sessionVariables = {
    EDITOR = "nvim";
    PAGER = "most";
    MANPAGER = "most";
    MANROFFOPT = "-c";
  };

  programs = {
    bash.enable = true;
    fzf.enable = true;
    eza.enable = true;

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

    nushell = {
      enable = true;

      settings = {
        show_banner = false;
      };

      shellAliases = {
        cat = "bat -p -P";

        system = "nvim /home/benag/.nix-config/flake.nix";
        home = "nvim /home/benag/.nix-config/home/home.nix";
        config = "nvim /home/benag/.nix-config/configuration/main/configuration.nix";
      };

      extraConfig = ''
            if "IN_NIX_SHELL" in $env == false {
            	fastfetch
            }

        def c [] {
        	clear
        	fastfetch
        }

          def rebuild [message?: string] {
          	cd /home/benag/.nix-config
          	let commit_message = if $message != null {$message} else {"non important commit"}

          	try {
          		git pull
          		git add .
          		git commit -m $commit_message
          		git push
          	}

          	sudo nixos-rebuild switch --flake .#benag
          }

                def --env fzf-cd [] {
                	let dir = (fd -H -t d -L . | fzf --reverse --height 40% --border rounded --preview=("eza --color=always --group-directories-first --icons --long {}") --preview-window=border-left)

                	if $dir != null and $dir != "" {
                		cd $dir
                	}
                }

                      def --env fzf-nvim [] {
                        let file = (fd -H -t f -L . | fzf --reverse --height 40% --border rounded --preview=("bat -p -P --color always {}") --preview-window=border-left)

                        if $file != null and $file != "" {
                          nvim $file
                        }
                      }

                      $env.config.keybindings = ($env.config.keybindings | append {
                        name: "fzf-cd"
                        modifier: "control"
                        keycode: "char_f"
                        mode: "emacs"
                        event: [
                          {
                            send: "executehostcommand"
                            cmd: 'fzf-cd'
                          }
                        ]
                      })

                      $env.config.keybindings = ($env.config.keybindings | append {
                        name: "fzf-nvim"
                        modifier: "control"
                        keycode: "char_e"
                        mode: "emacs"
                        event: [
                          {
                            send: "executehostcommand"
                            cmd: 'fzf-nvim'
                          }
                        ]
                      })
      '';
    };
  };
}
