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

{
  programs.zsh = {
    enable = true;
    autocd = true;
    dotDir = ".config/zsh";
    autosuggestion.enable = true;
    enableCompletion = true;
    shellAliases = {
      ls = "eza -lh";
      ip = "ip --color=auto";
      nano = "nvim";

      # Aliases for my nixos workflow, requires nh and home-manager
      switch = "sudo nixos-rebuild switch --flake ~/nixconf |& nom";
      homeswitch = "home-manager switch --flake ~/nixconf |& nom";
      serverswitch = "nixos-rebuild switch --flake ~/nixconf#biggerpi --target-host blue@biggerpi --use-remote-sudo |& nom";
    };

    plugins = with pkgs; [
      {
        name = "zsh-syntax-highlighting";
        src = fetchFromGitHub {
          owner = "zsh-users";
          repo = "zsh-syntax-highlighting";
          rev = "0.6.0";
          sha256 = "0zmq66dzasmr5pwribyh4kbkk23jxbpdw4rjxx0i7dx8jjp2lzl4";
        };
        file = "agkozak-zsh-prompt.plugin.zsh";
      }
    ];
    oh-my-zsh = {
      enable = true;
      theme = "agnoster";
    };
  };
}