diff --git a/.gitignore b/.gitignore index caca63c..ed9a651 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ README.md~ +.DS_Store diff --git a/modules/shared/config/p10k.zsh b/modules/shared/config/p10k.zsh deleted file mode 100644 index 7f654c9..0000000 --- a/modules/shared/config/p10k.zsh +++ /dev/null @@ -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' diff --git a/modules/shared/home-manager.nix b/modules/shared/home-manager.nix index 75dc82a..c53cd6b 100644 --- a/modules/shared/home-manager.nix +++ b/modules/shared/home-manager.nix @@ -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