From p10k to oh-my-zsh
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1 +1,2 @@
 | 
			
		||||
README.md~
 | 
			
		||||
.DS_Store
 | 
			
		||||
 
 | 
			
		||||
@@ -1,288 +0,0 @@
 | 
			
		||||
# Temporarily change options.
 | 
			
		||||
'builtin' 'local' '-a' 'p10k_config_opts'
 | 
			
		||||
[[ ! -o 'aliases'         ]] || p10k_config_opts+=('aliases')
 | 
			
		||||
[[ ! -o 'sh_glob'         ]] || p10k_config_opts+=('sh_glob')
 | 
			
		||||
[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
 | 
			
		||||
'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
 | 
			
		||||
 | 
			
		||||
() {
 | 
			
		||||
  emulate -L zsh
 | 
			
		||||
  setopt no_unset
 | 
			
		||||
 | 
			
		||||
  autoload -Uz is-at-least && is-at-least 5.1 || return
 | 
			
		||||
 | 
			
		||||
  # Unset all configuration options.
 | 
			
		||||
  unset -m 'POWERLEVEL9K_*'
 | 
			
		||||
 | 
			
		||||
  # Left prompt segments.
 | 
			
		||||
  typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
 | 
			
		||||
      dir                       # current directory
 | 
			
		||||
      vcs                       # git status
 | 
			
		||||
      context                   # user@host
 | 
			
		||||
      command_execution_time    # previous command duration
 | 
			
		||||
      virtualenv                # python virtual environment
 | 
			
		||||
      prompt_char               # prompt symbol
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  # Right prompt segments.
 | 
			
		||||
  typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
 | 
			
		||||
      nix_shell_with_name
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  # Defines character set used by powerlevel10k.
 | 
			
		||||
  typeset -g POWERLEVEL9K_MODE=nerdfont-complete
 | 
			
		||||
 | 
			
		||||
  # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid
 | 
			
		||||
  # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added.
 | 
			
		||||
  typeset -g POWERLEVEL9K_ICON_PADDING=none
 | 
			
		||||
 | 
			
		||||
  # Basic style options that define the overall prompt look.
 | 
			
		||||
  typeset -g POWERLEVEL9K_BACKGROUND=                            # transparent background
 | 
			
		||||
  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE=  # no surrounding whitespace
 | 
			
		||||
  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' '  # separate segments with a space
 | 
			
		||||
  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR=        # no end-of-line symbol
 | 
			
		||||
  typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION=           # no segment icons
 | 
			
		||||
 | 
			
		||||
  # Add an empty line before each prompt except the first. This doesn't emulate the bug
 | 
			
		||||
  # in Pure that makes prompt drift down whenever you use the ALT-C binding from fzf or similar.
 | 
			
		||||
  typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
 | 
			
		||||
 | 
			
		||||
  # Green prompt symbol if the last command succeeded.
 | 
			
		||||
  typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=002
 | 
			
		||||
  # Red prompt symbol if the last command failed.
 | 
			
		||||
  typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=001
 | 
			
		||||
  # Default prompt symbol.
 | 
			
		||||
  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯'
 | 
			
		||||
  # Prompt symbol in command vi mode.
 | 
			
		||||
  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
 | 
			
		||||
  # Prompt symbol in visual vi mode is the same as in command mode.
 | 
			
		||||
  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='❮'
 | 
			
		||||
  # Prompt symbol in overwrite vi mode is the same as in command mode.
 | 
			
		||||
  typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=false
 | 
			
		||||
 | 
			
		||||
  # Grey Python Virtual Environment.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=007
 | 
			
		||||
  # Don't show Python version.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
 | 
			
		||||
  typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
 | 
			
		||||
 | 
			
		||||
  # Blue current directory.
 | 
			
		||||
  typeset -g POWERLEVEL9K_DIR_FOREGROUND=blue
 | 
			
		||||
 | 
			
		||||
  # Context format when root: user@host. The first part white, the rest grey.
 | 
			
		||||
  typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%7F%n%f%007F@%m%f'
 | 
			
		||||
  # Context format when not root: user@host. The whole thing grey.
 | 
			
		||||
  typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%007F%n@%m%f'
 | 
			
		||||
  # Don't show context unless root or in SSH.
 | 
			
		||||
  typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION=
 | 
			
		||||
 | 
			
		||||
  # Show previous command duration only if it's >= 5s.
 | 
			
		||||
  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=5
 | 
			
		||||
  # Don't show fractional seconds. Thus, 7s rather than 7.3s.
 | 
			
		||||
  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
 | 
			
		||||
  # Duration format: 1d 2h 3m 4s.
 | 
			
		||||
  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
 | 
			
		||||
  # Yellow previous command duration.
 | 
			
		||||
  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=007
 | 
			
		||||
 | 
			
		||||
  # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 '
 | 
			
		||||
 | 
			
		||||
  # Untracked files icon. It's really a question mark, your font isn't broken.
 | 
			
		||||
  # Change the value of this parameter to show a different icon.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
 | 
			
		||||
 | 
			
		||||
  # Version control system colors.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=2
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=3
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=2
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_CONFLICTED_FOREGROUND=3
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_LOADING_FOREGROUND=8
 | 
			
		||||
 | 
			
		||||
  # Nix shell color.
 | 
			
		||||
  typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=0
 | 
			
		||||
  typeset -g POWERLEVEL9K_NIX_SHELL_BACKGROUND=4
 | 
			
		||||
 | 
			
		||||
  # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line.
 | 
			
		||||
  typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION=
 | 
			
		||||
 | 
			
		||||
  function prompt_nix_shell_with_name() {
 | 
			
		||||
    if [[ -n "${IN_NIX_SHELL-}" ]]; then
 | 
			
		||||
      if [[ "${name-nix-shell}" != nix-shell ]] && [ "${name-shell}" != shell ]; then
 | 
			
		||||
        p10k segment -b 4 -f 15 -r -i NIX_SHELL_ICON -t "$name"
 | 
			
		||||
      else
 | 
			
		||||
        p10k segment -b 4 -f 15 -r -i NIX_SHELL_ICON
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
 | 
			
		||||
  # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
 | 
			
		||||
  function my_git_formatter() {
 | 
			
		||||
    emulate -L zsh
 | 
			
		||||
 | 
			
		||||
    if [[ -n $P9K_CONTENT ]]; then
 | 
			
		||||
      # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
 | 
			
		||||
      # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
 | 
			
		||||
      typeset -g my_git_format=$P9K_CONTENT
 | 
			
		||||
      return
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if (( $1 )); then
 | 
			
		||||
      # Styling for up-to-date Git status.
 | 
			
		||||
      local       meta='%f'     # default foreground
 | 
			
		||||
      local      clean='%002F'   # green foreground
 | 
			
		||||
      local   modified='%003F'  # yellow foreground
 | 
			
		||||
      local  untracked='%004F'   # blue foreground
 | 
			
		||||
      local conflicted='%001F'  # red foreground
 | 
			
		||||
    else
 | 
			
		||||
      # Styling for incomplete and stale Git status.
 | 
			
		||||
      local       meta='%244F'  # grey foreground
 | 
			
		||||
      local      clean='%244F'  # grey foreground
 | 
			
		||||
      local   modified='%244F'  # grey foreground
 | 
			
		||||
      local  untracked='%244F'  # grey foreground
 | 
			
		||||
      local conflicted='%244F'  # grey foreground
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    local res
 | 
			
		||||
 | 
			
		||||
    if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
 | 
			
		||||
      local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
 | 
			
		||||
 | 
			
		||||
      # If local branch name is at most 32 characters long, show it in full.
 | 
			
		||||
      # Otherwise show the first 12 … the last 12.
 | 
			
		||||
      (( $#branch > 32 )) && branch[13,-13]="…"  # <-- this line
 | 
			
		||||
 | 
			
		||||
      if (( VCS_STATUS_HAS_CONFLICTED)); then
 | 
			
		||||
        res+="${conflicted}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
 | 
			
		||||
      else
 | 
			
		||||
        if (( VCS_STATUS_HAS_STAGED || VCS_STATUS_HAS_UNSTAGED )); then
 | 
			
		||||
          res+="${modified}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
 | 
			
		||||
        else
 | 
			
		||||
          if (( VCS_STATUS_HAS_UNTRACKED )); then
 | 
			
		||||
            res+="${untracked}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
 | 
			
		||||
          else
 | 
			
		||||
            res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
 | 
			
		||||
          fi
 | 
			
		||||
        fi
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ -n $VCS_STATUS_TAG
 | 
			
		||||
          # Show tag only if not on a branch.
 | 
			
		||||
          && -z $VCS_STATUS_LOCAL_BRANCH  # <-- this line
 | 
			
		||||
        ]]; then
 | 
			
		||||
      local tag=${(V)VCS_STATUS_TAG}
 | 
			
		||||
      # If tag name is at most 32 characters long, show it in full.
 | 
			
		||||
      # Otherwise show the first 12 … the last 12.
 | 
			
		||||
      (( $#tag > 32 )) && tag[13,-13]="…"  # <-- this line
 | 
			
		||||
      res+="${meta}#${clean}${tag//\%/%%}"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Display the current Git commit if there is no branch and no tag.
 | 
			
		||||
    # Tip: To always display the current Git commit, delete the next line.
 | 
			
		||||
    [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] &&  # <-- this line
 | 
			
		||||
      res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
 | 
			
		||||
 | 
			
		||||
    # Show tracking branch name if it differs from local branch.
 | 
			
		||||
    if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
 | 
			
		||||
      res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    typeset -g my_git_format=$res
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  functions -M my_git_formatter 2>/dev/null
 | 
			
		||||
 | 
			
		||||
  # Don't count the number of unstaged, untracked and conflicted files in Git repositories with
 | 
			
		||||
  # more than this many files in the index. Negative value means infinity.
 | 
			
		||||
  #
 | 
			
		||||
  # If you are working in Git repositories with tens of millions of files and seeing performance
 | 
			
		||||
  # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output
 | 
			
		||||
  # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's
 | 
			
		||||
  # config: `git config bash.showDirtyState false`.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1
 | 
			
		||||
 | 
			
		||||
  # Don't show Git status in prompt for repositories whose workdir matches this pattern.
 | 
			
		||||
  # For example, if set to '~', the Git repository at $HOME/.git will be ignored.
 | 
			
		||||
  # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'
 | 
			
		||||
 | 
			
		||||
  # Disable the default Git status formatting.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
 | 
			
		||||
 | 
			
		||||
  # Install our own Git status formatter.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}'
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}'
 | 
			
		||||
 | 
			
		||||
  # Enable counters for staged, unstaged, etc.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
 | 
			
		||||
 | 
			
		||||
  # Icon color.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=007
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=008
 | 
			
		||||
 | 
			
		||||
  # Show status of repositories of these types. You can add svn and/or hg if you are
 | 
			
		||||
  # using them. If you do, your prompt may become slow even when your current directory
 | 
			
		||||
  # isn't in an svn or hg reposotiry.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
 | 
			
		||||
 | 
			
		||||
  # These settings are used for repositories other than Git or when gitstatusd fails and
 | 
			
		||||
  # Powerlevel10k has to fall back to using vcs_info.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=002
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=004
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=003
 | 
			
		||||
 | 
			
		||||
  ##########################[ end git configuration ]###########################
 | 
			
		||||
 | 
			
		||||
  # Don't wait for Git status even for a millisecond, so that prompt always updates
 | 
			
		||||
  # asynchronously when Git state changes.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0
 | 
			
		||||
 | 
			
		||||
  # Cyan ahead/behind arrows.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_{INCOMING,OUTGOING}_CHANGESFORMAT_FOREGROUND=cyan
 | 
			
		||||
 | 
			
		||||
  # Don't show remote branch, current tag or stashes.
 | 
			
		||||
  # typeset -g POWERLEVEL9K_VCS_GIT_HOOKS=(vcs-detect-changes git-untracked git-aheadbehind)
 | 
			
		||||
 | 
			
		||||
  # When in detached HEAD state, show @commit where branch normally goes.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_COMMIT_ICON='@'
 | 
			
		||||
 | 
			
		||||
  # Don't show staged, unstaged, untracked indicators.
 | 
			
		||||
  # typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED}_ICON=$'\b'
 | 
			
		||||
 | 
			
		||||
  # Show '*' when there are staged, unstaged or untracked files.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_DIRTY_ICON='*'
 | 
			
		||||
 | 
			
		||||
  # Show '⇣' if local branch is behind remote.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON='⇣'
 | 
			
		||||
 | 
			
		||||
  # Show '⇡' if local branch is ahead of remote.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON='⇡'
 | 
			
		||||
 | 
			
		||||
  # Don't show the number of commits next to the ahead/behind arrows.
 | 
			
		||||
  typeset -g POWERLEVEL9K_VCS_{COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=1
 | 
			
		||||
 | 
			
		||||
  # Remove space between '⇣' and '⇡'.
 | 
			
		||||
  # typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${P9K_CONTENT/⇣* ⇡/⇣⇡}'
 | 
			
		||||
 | 
			
		||||
  # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
 | 
			
		||||
  # when accepting a command line. Supported values:
 | 
			
		||||
  typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=off
 | 
			
		||||
 | 
			
		||||
  # Instant prompt mode.
 | 
			
		||||
  typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
 | 
			
		||||
 | 
			
		||||
  # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
 | 
			
		||||
  # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
 | 
			
		||||
  # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
 | 
			
		||||
  # really need it.
 | 
			
		||||
  typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
 | 
			
		||||
 | 
			
		||||
  # If p10k is already loaded, reload configuration.
 | 
			
		||||
  # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
 | 
			
		||||
  (( ! $+functions[p10k] )) || p10k reload
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
 | 
			
		||||
'builtin' 'unset' 'p10k_config_opts'
 | 
			
		||||
@@ -15,17 +15,14 @@ in
 | 
			
		||||
    enable = true;
 | 
			
		||||
    autocd = false;
 | 
			
		||||
    cdpath = [ "~/.local/share/src" ];
 | 
			
		||||
    oh-my-zsh = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      plugins = [ ];
 | 
			
		||||
      #      theme = "agnoster";
 | 
			
		||||
      theme = "ys";
 | 
			
		||||
    };
 | 
			
		||||
    plugins = [
 | 
			
		||||
      {
 | 
			
		||||
        name = "powerlevel10k";
 | 
			
		||||
        src = pkgs.zsh-powerlevel10k;
 | 
			
		||||
        file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "powerlevel10k-config";
 | 
			
		||||
        src = lib.cleanSource ./config;
 | 
			
		||||
        file = "p10k.zsh";
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    ];
 | 
			
		||||
    initExtraFirst = ''
 | 
			
		||||
      if [[ -f /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh ]]; then
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user