{...}: let
  global = import ../global-var.nix;
in {
  programs.zsh.enable = true;

  environment = {
    variables = {
      MOZ_ENABLE_WAYLAND = "1";
      EDITOR = "nvim";
      # TODO: Try to find another way to replace less with nvim... All pagers are fucking ass dear God might as well make my own
      MANPAGER = "nvim +Man!";
      NIXOS_OZONE_WL = "1";
      ANKI_WAYLAND = "1";
    };
  };

  home-manager.users.${global.username} = {
    pkgs,
    lib,
    ...
  }: {
    programs = {
      # Nice shell prompt
      starship = {
        enable = true;

        settings =
          {
            palette = "catppuccin_mocha";
          }
          // builtins.fromTOML (builtins.readFile
            (pkgs.fetchFromGitHub
              {
                owner = "catppuccin";
                repo = "starship";
                rev = "5629d2356f62a9f2f8efad3ff37476c19969bd4f";
                sha256 = "nsRuxQFKbQkyEI4TXgvAjcroVdG+heKX5Pauq/4Ota0=";
              }
              + /starship.toml));
      };

      # Allows for you to quickly change directories
      zoxide = {
        enable = true;
      };

      zsh = {
        enable = true;

        # Ignores duplicates in history
        history.ignoreDups = true;

        # Aliases
        shellAliases = {
          "ls" = "lsd ";
          "cat" = "bat -pp ";
          "grep" = "rg ";
          ".." = "cd ..";
          "tp" = "trash put";
          "radar" = "curl https://sirocco.accuweather.com/nx_mosaic_640x480_public/sir/inmasiral_.gif | oculante -s";
          "forecast" = "curl wttr.in";
          "umatrix" = "unimatrix";
          "gsrun" = "gamescope -W 1920 -H 1080 -r 165";
          "neovideo" = "neovide";
          "nano" = "nvim";
        };

        initExtraFirst = ''
          fastfetch
          export PATH="$HOME/.local/bin:$PATH"
          # TODO: See if there is better way to set this? Seems not
          zstyle ':completion:*' menu select
        '';

        syntaxHighlighting.enable = true;
        autosuggestion.enable = true;
        enableCompletion = true;
        plugins = [
          {
            name = "zsh-nix-shell";
            file = "share/zsh-nix-shell/nix-shell.plugin.zsh";
            src = pkgs.zsh-nix-shell;
          }
          {
            name = "vi-mode";
            src = pkgs.zsh-vi-mode;
            file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
          }
          {
            name = "catppuccin-zsh-syntax-highlighting";
            file = "themes/catppuccin_mocha-zsh-syntax-highlighting.zsh";
            src = pkgs.fetchFromGitHub {
              owner = "catppuccin";
              repo = "zsh-syntax-highlighting";
              rev = "06d519c20798f0ebe275fc3a8101841faaeee8ea";
              sha256 = "Q7KmwUd9fblprL55W0Sf4g7lRcemnhjh4/v+TacJSfo=";
            };
          }
        ];
      };
    };
  };
}
