{ pkgs, ... }:
{
  programs.zsh = {
    enable = true;
    autosuggestion.enable = true;
    syntaxHighlighting.enable = true;
    oh-my-zsh = {
      enable = true;
      theme = "agnoster";
      plugins = [ "git" ];
    };
    shellAliases = {
      # NixOS aliases
      nixclean = "doas nix-store --gc; nix-collect-garbage -d";
      nixpurge = "doas nix-collect-garbage --delete-old";
      nixoptimize = "doas nix store optimise";
      nixscrub = "nixclean; nixpurge; nixoptimize";

      # Flake commands
      flakedate = "doas nix flake update /etc/nixos";
      nixswitch = "doas nixos-rebuild switch --flake /etc/nixos";
      nixdate = "flakedate && nixswitch";

      # Shortcut aliases
      neo = "clear && fastfetch";
      ip = "ip -c";
      ls = "${pkgs.eza}/bin/eza -a --color=always --group-directories-first --icons";
      nls = "/usr/bin/env ls";
      cat = "${pkgs.bat}/bin/bat --paging never";
      ncat = "/usr/bin/env cat";
      copycat = "wl-copy <";
      sunshinehost = "WAYLAND_DISPLAY=wayland-1 DISPLAY=:1 sunshine -0";
      myip = "curl ifconfig.co";
      seneca = "ssh jhampton1@matrix.senecapolytechnic.ca";
    };
    initExtra = ''
      source ${pkgs.zsh-vi-mode}/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh
      ${pkgs.any-nix-shell}/bin/any-nix-shell zsh --info-right | source /dev/stdin; pfetch
      setopt HIST_IGNORE_SPACE
      setopt RM_STAR_WAIT
    '';
  };
}