{ lib, pkgs, ... }: {
  programs.zsh = {
    enable = true;

    initContent = lib.mkMerge [
      (lib.mkBefore ''
        # High priority (mkBefore)
        echo "High priority content"
      '')

      (lib.mkAfter ''
        # Low priority (mkAfter)
        echo "Low priority content"
      '')

      ''
        # Default priority
        echo "Default priority content"
      ''
    ];

    zprof.enable = true;
  };

  nmt.script = let
    expectedFile = pkgs.writeTextFile {
      name = ".zshrc";
      text = ''
        zmodload zsh/zprof

        # High priority (mkBefore)
        echo "High priority content"

        typeset -U path cdpath fpath manpath
        for profile in ''${(z)NIX_PROFILES}; do
          fpath+=($profile/share/zsh/site-functions $profile/share/zsh/$ZSH_VERSION/functions $profile/share/zsh/vendor-completions)
        done

        HELPDIR="@zsh@/share/zsh/$ZSH_VERSION/help"

        autoload -U compinit && compinit
        # Default priority
        echo "Default priority content"

        # History options should be set in .zshrc and after oh-my-zsh sourcing.
        # See https://github.com/nix-community/home-manager/issues/177.
        HISTSIZE="10000"
        SAVEHIST="10000"

        HISTFILE="$HOME/.zsh_history"
        mkdir -p "$(dirname "$HISTFILE")"

        setopt HIST_FCNTL_LOCK
        unsetopt APPEND_HISTORY
        setopt HIST_IGNORE_DUPS
        unsetopt HIST_IGNORE_ALL_DUPS
        unsetopt HIST_SAVE_NO_DUPS
        unsetopt HIST_FIND_NO_DUPS
        setopt HIST_IGNORE_SPACE
        unsetopt HIST_EXPIRE_DUPS_FIRST
        setopt SHARE_HISTORY
        unsetopt EXTENDED_HISTORY


        zprof
        # Low priority (mkAfter)
        echo "Low priority content"
      '';
    };
  in ''
    assertFileExists home-files/.zshrc
    assertFileContent home-files/.zshrc ${expectedFile}
  '';
}