{pkgs, ...}: {
  # Nvm lol - Enable ZSH instead of BASH
  programs.zsh = {
    enable = false;
    autosuggestion.enable = true;
    enableCompletion = true;
  };

  # Enable Fish instead of others
  programs.fish = {
    enable = true;
    functions = {
      gitignore = "touch .gitignore && curl -sL https://www.gitignore.io/api/$argv >> .gitignore";
      finit = "nix flake init --template \"https://flakehub.com/f/the-nix-way/dev-templates/*#$argv\"";
    };

    generateCompletions = true;

    plugins = [
      {
        name = "z";
        src = pkgs.fetchFromGitHub {
          owner = "jethrokuan";
          repo = "z";
          rev = "ddeb28a7b6a1f0ec6dae40c636e5ca4908ad160a";
          sha256 = "0c5i7sdrsp0q3vbziqzdyqn4fmp235ax4mn4zslrswvn8g3fvdyh";
        };
      }

      {
        name = "fasd";
        src = pkgs.fetchFromGitHub {
          owner = "oh-my-fish";
          repo = "plugin-fasd";
          rev = "38a5b6b6011106092009549e52249c6d6f501fba";
          sha256 = "06v37hqy5yrv5a6ssd1p3cjd9y3hnp19d3ab7dag56fs1qmgyhbs";
        };
      }
    ];

    shellAbbrs = {
      gs = "git status";
      ga = "git add";
      gc = "git commit -m";
    };

    shellInit = "set -g fish_greeting";
  };

  # Enable a better ls replacement
  programs.eza = {
    enable = true;
    enableFishIntegration = true;
  };

  # Enable the starship prompt and use the default config
  programs.starship = {
    enable = true;
    enableFishIntegration = true;
  };

  # Set aliases to replace ls with eza
  home.shellAliases = {
    ls = "eza --long --icons --git --git-repos --hyperlink --time-style relative --color --header";
    tree = "eza --long --icons --git --git-repos --hyperlink --time-style relative --color --header --tree";
  };

  # Enable direnv
  programs.direnv = {
    enable = true;
    enableZshIntegration = true;
    nix-direnv.enable = true;
  };

  programs.yazi = {
    enable = true;
    enableFishIntegration = true;
    shellWrapperName = "y";
  };

  programs.bat = {
    enable = true;
    themes = {
      CatppuccinMocha = {
        src = ./batThemes;
        file = "CatppuccinMocha.tmTheme";
      };
      CatppuccinFrappe = {
        src = ./batThemes;
        file = "CatppuccinFrappe.tmTheme";
      };
      CatppuccinLatte = {
        src = ./batThemes;
        file = "CatppuccinLatte.tmTheme";
      };
      CatppuccinMacchiato = {
        src = ./batThemes;
        file = "CatppuccinMacchiato.tmTheme";
      };
    };
    config = {
      theme = "CatppuccinMocha";
    };
  };

  # Enable powershell
  home.packages = with pkgs; [
    powershell
  ];
}
