{ pkgs, ... }:
{
  home = {
    packages = with pkgs; [
      rustup
    ];
  };
  programs = {
    zsh = {
      # Few horror things here
      # 1. rustup's completion is broken for zsh. See: https://github.com/rust-lang/rustup/issues/2268
      # 2. patch cant read the source file from stdin, so tmpfiles have to be used
      initExtra = ''
        TMP_RUSTUP_FILE=$(mktemp)
        ${pkgs.rustup}/bin/rustup completions zsh > "$TMP_RUSTUP_FILE"
        eval "$(patch -s -o - -i ${./rustupCompPatch.diff} $TMP_RUSTUP_FILE)"
        rm $TMP_RUSTUP_FILE
        unset TMP_RUSTUP_FILE
      '';
    };
  };
}
