aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsefidel <contact@sefidel.net>2023-07-25 18:58:27 +0900
committersefidel <contact@sefidel.net>2023-07-25 18:58:27 +0900
commitec647eecd447bfbbd8f7b6f2fe5bb65ebf9abf16 (patch)
treee36c9348852f95d95040ed61f7ee7a2b4501ef89
parent6ccd70ae9afee4f9c98135502abca8f9d0f2b58d (diff)
downloadnixrc-ec647eecd447bfbbd8f7b6f2fe5bb65ebf9abf16.zip
feat(home): split gui from base
-rw-r--r--home/alpha/sefidel.nix2
-rw-r--r--home/default.nix4
-rw-r--r--home/kompakt-darwin/sefidel.nix2
-rw-r--r--home/kompakt/sefidel.nix2
-rw-r--r--home/profiles/base-darwin/config/tmux.nix81
-rw-r--r--home/profiles/base-darwin/config/zsh.nix4
-rw-r--r--home/profiles/base-darwin/default.nix172
-rw-r--r--home/profiles/base-darwin/p10k-config/p10k.zsh1641
-rwxr-xr-xhome/profiles/base-darwin/scripts/0x0.nix87
-rw-r--r--home/profiles/base/default.nix129
-rw-r--r--home/profiles/gui/config/dunst.nix (renamed from home/profiles/base/config/dunst.nix)0
-rw-r--r--home/profiles/gui/config/foot.nix (renamed from home/profiles/base/config/foot.nix)0
-rw-r--r--home/profiles/gui/config/sway.nix (renamed from home/profiles/base/config/sway.nix)0
-rw-r--r--home/profiles/gui/config/waybar/settings.nix (renamed from home/profiles/base/config/waybar/settings.nix)0
-rw-r--r--home/profiles/gui/config/waybar/style.nix (renamed from home/profiles/base/config/waybar/style.nix)0
-rw-r--r--home/profiles/gui/default.nix142
16 files changed, 158 insertions, 2108 deletions
diff --git a/home/alpha/sefidel.nix b/home/alpha/sefidel.nix
index 2e91d1b..476a463 100644
--- a/home/alpha/sefidel.nix
+++ b/home/alpha/sefidel.nix
@@ -2,7 +2,7 @@
{
config = {
- activeProfiles = [ "base" "browsing" "development" "communication" "multimedia" "research" ];
+ activeProfiles = [ "base" "gui" "browsing" "development" "communication" "multimedia" "research" ];
programs.htop.settings.detailed_cpu_time = true;
diff --git a/home/default.nix b/home/default.nix
index 2968e75..33c3861 100644
--- a/home/default.nix
+++ b/home/default.nix
@@ -10,6 +10,7 @@
extraModules = [
./profiles/populate.nix
./profiles/base
+ ./profiles/gui
./profiles/browsing
./profiles/development
./profiles/communication
@@ -31,6 +32,7 @@
extraModules = [
./profiles/populate.nix
./profiles/base
+ ./profiles/gui
./profiles/browsing
./profiles/development
./profiles/communication
@@ -48,7 +50,7 @@
extraModules = [
./profiles/populate.nix
- ./profiles/base-darwin
+ ./profiles/base
./profiles/browsing
./profiles/development
./profiles/communication
diff --git a/home/kompakt-darwin/sefidel.nix b/home/kompakt-darwin/sefidel.nix
index 51c2519..5d0a4c4 100644
--- a/home/kompakt-darwin/sefidel.nix
+++ b/home/kompakt-darwin/sefidel.nix
@@ -2,7 +2,7 @@
{
config = {
- activeProfiles = [ "base-darwin" "development" "research" "fonts" ];
+ activeProfiles = [ "base" "development" "research" "fonts" ];
programs.htop.settings.detailed_cpu_time = true;
};
diff --git a/home/kompakt/sefidel.nix b/home/kompakt/sefidel.nix
index 2e91d1b..476a463 100644
--- a/home/kompakt/sefidel.nix
+++ b/home/kompakt/sefidel.nix
@@ -2,7 +2,7 @@
{
config = {
- activeProfiles = [ "base" "browsing" "development" "communication" "multimedia" "research" ];
+ activeProfiles = [ "base" "gui" "browsing" "development" "communication" "multimedia" "research" ];
programs.htop.settings.detailed_cpu_time = true;
diff --git a/home/profiles/base-darwin/config/tmux.nix b/home/profiles/base-darwin/config/tmux.nix
deleted file mode 100644
index 0b5eea4..0000000
--- a/home/profiles/base-darwin/config/tmux.nix
+++ /dev/null
@@ -1,81 +0,0 @@
-''
- set -ga terminal-overrides ",*256col*:Tc"
-
- setw -g automatic-rename on # rename window to reflect current program
- set -g renumber-windows on # renumber windows when a window is closed
-
- set -g set-titles on # set terminal title
-
- set -g display-panes-time 800 # slightly longer pane indicators display time
- set -g display-time 1000 # slightly longer status messages display time
-
- set -g status-interval 5 # redraw status line every 5 seconds
-
- # better split bindings
- unbind '"'
- unbind %
- # splitting
- bind f if-shell "[ $(($(tmux display -p '8*#{pane_width}-20*#{pane_height}'))) -lt 0 ]" "splitw -v -c '#{pane_current_path}'" "splitw -h -c '#{pane_current_path}' "
-
- # reload
- bind r source-file ~/.config/tmux/tmux.conf
-
- bind -n C-h select-pane -L
- bind -n C-j select-pane -D
- bind -n C-k select-pane -U
- bind -n C-l select-pane -R
-
- bind -n C-M-h resize-pane -L 2
- bind -n C-M-j resize-pane -D 2
- bind -n C-M-k resize-pane -U 2
- bind -n C-M-l resize-pane -R 2
-
- bind -n M-j swap-pane -U
- bind -n M-k swap-pane -D
-
- # prefix-m marks window, prefix-u swaps current with marked
- bind u swap-pane
-
- # kill current pane
- unbind x
- bind w kill-pane
-
- # pane separator style
- set -g pane-border-style "fg=black bg=terminal"
- set -g pane-active-border-style "fg=black bg=black"
-
- # new window on n, not c
- unbind c
- unbind n
- bind n new-window
-
- # enable mouse operation
- set -g mouse on
-
- # move status line to the top
- set-option -g status-position top
-
- set -g status-justify right
-
- # transparent status background
- set-option -g status-style bg=default
-
- # left side length and style
- set -g status-left-length 60
- set -g status-left-style default
-
- # display the session name
- set -g status-left "#[fg=green] Stack #S #[default]"
-
- # right side length and style
- set -g status-right-length 140
- set -g status-right-style default
- set -g status-right ""
-
- # inactive window style
- set -g window-status-style fg=default,bg=default
- set -g window-status-format ' #I #W '
- # active window style
- set -g window-status-current-style fg=blue,bg=default
- set -g window-status-current-format ' #I #W '
-''
diff --git a/home/profiles/base-darwin/config/zsh.nix b/home/profiles/base-darwin/config/zsh.nix
deleted file mode 100644
index 06bc1f7..0000000
--- a/home/profiles/base-darwin/config/zsh.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-''
- export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
- gpgconf --launch gpg-agent
-''
diff --git a/home/profiles/base-darwin/default.nix b/home/profiles/base-darwin/default.nix
deleted file mode 100644
index ea334a8..0000000
--- a/home/profiles/base-darwin/default.nix
+++ /dev/null
@@ -1,172 +0,0 @@
-{ config, lib, inputs, pkgs, self, ... }:
-let
- cfg = config.profiles.base-darwin;
-in
-{
- imports = [
- ../../modules/programs/nixpkgs
- ../../modules/programs/zshell
- ];
-
- options.profiles.base-darwin.enable = lib.mkEnableOption
- "The base profile, contains general configurations. (Darwin)";
-
- config = lib.mkIf cfg.enable {
- home.sessionVariables = rec {
- # NIXOS_OZONE_WL = 1; # FIXME: interface 'wl_output' has no event 4
- EDITOR = "nvim";
- VISUAL = "nvim";
- GIT_EDITOR = EDITOR;
- };
-
- home.packages = [
- # Nix Tools
- pkgs.nix-index
- pkgs.nix-tree
- pkgs.nix-top
- pkgs.nix-update
- pkgs.hydra-check
-
- pkgs.aria2
- pkgs.bottom
- pkgs.croc
- pkgs.fd
- pkgs.fzf
- pkgs.iterm2
- pkgs.libnotify
- pkgs.procs
- pkgs.sops
- pkgs.tree
- pkgs.pinentry_mac
-
- pkgs.neovim
- pkgs.nodejs
-
- # Common build tools
- (pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.default.override { extensions = [ "rust-src" ]; }))
- pkgs.go
-
- (pkgs.writeShellScriptBin "0x0" (import ./scripts/0x0.nix))
- ];
-
- programs = {
- direnv.enable = true;
- direnv.nix-direnv.enable = true;
- exa.enable = true;
- exa.enableAliases = true;
- gpg.enable = true;
- gpg.settings.keyserver = "keys.openpgp.org";
- home-manager.enable = true;
- htop.enable = true;
-
- tmux = {
- enable = true;
-
- prefix = "C-f";
- terminal = "xterm-256color";
- shell = "${pkgs.zsh}/bin/zsh";
- baseIndex = 1;
- keyMode = "vi";
-
- escapeTime = 0;
-
- extraConfig = import ./config/tmux.nix;
-
- };
- zsh = {
- enable = true;
-
- enableCompletion = true;
- enableAutosuggestions = true;
-
- autocd = true;
-
- dotDir = ".config/zsh";
-
- plugins = [
- {
- name = "powerlevel10k";
- src = pkgs.zsh-powerlevel10k;
- file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
- }
-
- {
- name = "powerlevel10k-config";
- src = lib.cleanSource ./p10k-config;
- file = "p10k.zsh";
- }
-
- {
- name = "zsh-syntax-highlighting";
- src = pkgs.fetchFromGitHub {
- owner = "zsh-users";
- repo = "zsh-syntax-highlighting";
- rev = "0.7.1";
- sha256 = "03r6hpb5fy4yaakqm3lbf4xcvd408r44jgpv4lnzl9asp4sb9qc0";
- };
- }
- {
- name = "zsh-sudo";
- src = pkgs.fetchFromGitHub {
- owner = "none9632";
- repo = "zsh-sudo";
- rev = "33d81184e2998b8484b494e77c8e35f74b8580ff";
- sha256 = "sha256-2ZQJMNaPTtx/kIvs5TF/ojiecNT8jaZvSzoVAFXmxgQ=";
- };
- }
- ];
-
- shellAliases = config.programs.zshell.aliases;
- initExtra = import ./config/zsh.nix;
- };
-
- zshell.aliases = {
- e = "nvim";
- nvimdiff = "nvim -d";
- clear = "clear && printf '\\e[3J'";
- };
-
- zoxide = {
- enable = true;
- enableZshIntegration = true;
- };
-
- # TODO: https://github.com/zellij-org/zellij/issues/1013
- # zellij = {
- # enable = true;
- #
- # settings = {
- # default_mode = "normal";
- # pane_frames = false;
- # simplified_ui = true; # bitmap fonts
- #
- # themes = {
- # default = {
- # # Industrial Jellybeans theme
- # bg = [ 21 21 21 ];
- # fg = [ 136 136 136 ];
- # black = [ 28 28 28 ];
- # gray = [ 64 64 64 ];
- # white = [ 232 232 211 ];
- # red = [ 141 61 38 ];
- # orange = [ 250 187 110 ];
- # yellow = [ 250 208 122 ];
- # green = [ 153 173 106 ];
- # blue = [ 129 151 191 ];
- # cyan = [ 143 191 220 ];
- # magenta = [ 198 182 238 ];
- # };
- # };
- # };
- # };
- };
-
- home.file."${config.programs.gpg.homedir}/gpg-agent.conf".text = ''
- default-cache-ttl 3600
- default-cache-ttl-ssh 3600
- pinentry-program ${pkgs.pinentry_mac}/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac
- allow-preset-passphrase
- enable-ssh-support
- '';
- };
-}
diff --git a/home/profiles/base-darwin/p10k-config/p10k.zsh b/home/profiles/base-darwin/p10k-config/p10k.zsh
deleted file mode 100644
index 33b8bf9..0000000
--- a/home/profiles/base-darwin/p10k-config/p10k.zsh
+++ /dev/null
@@ -1,1641 +0,0 @@
-# Generated by Powerlevel10k configuration wizard on 2022-08-11 at 17:58 KST.
-# Based on romkatv/powerlevel10k/config/p10k-classic.zsh, checksum 52170.
-# Wizard options: nerdfont-complete + powerline, small icons, classic, unicode, dark,
-# 24h time, angled separators, sharp heads, flat tails, 2 lines, disconnected,
-# left frame, sparse, many icons, concise, transient_prompt, instant_prompt=verbose.
-# Type `p10k configure` to generate another config.
-#
-# Config for Powerlevel10k with classic powerline prompt style. Type `p10k configure` to generate
-# your own config based on it.
-#
-# Tip: Looking for a nice color? Here's a one-liner to print colormap.
-#
-# for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
-
-# 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 -o extended_glob
-
- # Unset all configuration options. This allows you to apply configuration changes without
- # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
- unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
-
- # Zsh >= 5.1 is required.
- autoload -Uz is-at-least && is-at-least 5.1 || return
-
- # The list of segments shown on the left. Fill it with the most important segments.
- typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
- # =========================[ Line #1 ]=========================
- os_icon # os identifier
- dir # current directory
- vcs # git status
- # =========================[ Line #2 ]=========================
- newline # \n
- # prompt_char # prompt symbol
- )
-
- # The list of segments shown on the right. Fill it with less important segments.
- # Right prompt on the last prompt line (where you are typing your commands) gets
- # automatically hidden when the input line reaches it. Right prompt above the
- # last prompt line gets hidden if it would overlap with left prompt.
- typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
- # =========================[ Line #1 ]=========================
- status # exit code of the last command
- command_execution_time # duration of the last command
- background_jobs # presence of background jobs
- direnv # direnv status (https://direnv.net/)
- asdf # asdf version manager (https://github.com/asdf-vm/asdf)
- virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html)
- anaconda # conda environment (https://conda.io/)
- pyenv # python environment (https://github.com/pyenv/pyenv)
- goenv # go environment (https://github.com/syndbg/goenv)
- nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv)
- nvm # node.js version from nvm (https://github.com/nvm-sh/nvm)
- nodeenv # node.js environment (https://github.com/ekalinin/nodeenv)
- # node_version # node.js version
- # go_version # go version (https://golang.org)
- # rust_version # rustc version (https://www.rust-lang.org)
- # dotnet_version # .NET version (https://dotnet.microsoft.com)
- # php_version # php version (https://www.php.net/)
- # laravel_version # laravel php framework version (https://laravel.com/)
- # java_version # java version (https://www.java.com/)
- # package # name@version from package.json (https://docs.npmjs.com/files/package.json)
- rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv)
- rvm # ruby version from rvm (https://rvm.io)
- fvm # flutter version management (https://github.com/leoafarias/fvm)
- luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv)
- jenv # java version from jenv (https://github.com/jenv/jenv)
- plenv # perl version from plenv (https://github.com/tokuhirom/plenv)
- phpenv # php version from phpenv (https://github.com/phpenv/phpenv)
- scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
- haskell_stack # haskell version from stack (https://haskellstack.org/)
- kubecontext # current kubernetes context (https://kubernetes.io/)
- terraform # terraform workspace (https://www.terraform.io)
- # terraform_version # terraform version (https://www.terraform.io)
- aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
- aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
- azure # azure account name (https://docs.microsoft.com/en-us/cli/azure)
- gcloud # google cloud cli account and project (https://cloud.google.com/)
- google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production)
- toolbox # toolbox name (https://github.com/containers/toolbox)
- context # user@hostname
- nordvpn # nordvpn connection status, linux only (https://nordvpn.com/)
- ranger # ranger shell (https://github.com/ranger/ranger)
- nnn # nnn shell (https://github.com/jarun/nnn)
- xplr # xplr shell (https://github.com/sayanarijit/xplr)
- vim_shell # vim shell indicator (:sh)
- midnight_commander # midnight commander shell (https://midnight-commander.org/)
- nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
- vi_mode # vi mode (you don't need this if you've enabled prompt_char)
- # vpn_ip # virtual private network indicator
- # load # CPU load
- # disk_usage # disk usage
- # ram # free RAM
- # swap # used swap
- todo # todo items (https://github.com/todotxt/todo.txt-cli)
- timewarrior # timewarrior tracking status (https://timewarrior.net/)
- taskwarrior # taskwarrior task count (https://taskwarrior.org/)
- time # current time
- # =========================[ Line #2 ]=========================
- newline # \n
- # ip # ip address and bandwidth usage for a specified network interface
- # public_ip # public IP address
- # proxy # system-wide http/https/ftp proxy
- # battery # internal battery
- # wifi # wifi speed
- # example # example user-defined segment (see prompt_example function below)
- )
-
- # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you.
- 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
-
- # When set to true, icons appear before content on both sides of the prompt. When set
- # to false, icons go after content. If empty or not set, icons go before content in the left
- # prompt and after content in the right prompt.
- #
- # You can also override it for a specific segment:
- #
- # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false
- #
- # Or for a specific segment in specific state:
- #
- # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false
- typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=
-
- # Add an empty line before each prompt.
- typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
-
- # Connect left prompt lines with these symbols. You'll probably want to use the same color
- # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below.
- typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%240F╭─'
- typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%240F├─'
- typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%240F╰─'
- # Connect right prompt lines with these symbols.
- typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX=
- typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX=
- typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX=
-
- # Filler between left and right prompt on the first prompt line. You can set it to ' ', '·' or
- # '─'. The last two make it easier to see the alignment between left and right prompt and to
- # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
- # for more compact prompt if using this option.
- typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '
- typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND=
- typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND=
- if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
- # The color of the filler. You'll probably want to match the color of POWERLEVEL9K_MULTILINE
- # ornaments defined above.
- typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=240
- # Start filler from the edge of the screen if there are no left segments on the first line.
- typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
- # End filler on the edge of the screen if there are no right segments on the first line.
- typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}'
- fi
-
- # Default background color.
- typeset -g POWERLEVEL9K_BACKGROUND=236
-
- # Separator between same-color segments on the left.
- typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='%244F\uE0B1'
- # Separator between same-color segments on the right.
- typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='%244F\uE0B3'
- # Separator between different-color segments on the left.
- typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0'
- # Separator between different-color segments on the right.
- typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2'
- # The right end of left prompt.
- typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0'
- # The left end of right prompt.
- typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2'
- # The left end of left prompt.
- typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=''
- # The right end of right prompt.
- typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
- # Left prompt terminator for lines without any segments.
- typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=
-
- #################################[ os_icon: os identifier ]##################################
- # OS identifier color.
- typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=255
- # Custom icon.
- # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐'
-
- ################################[ prompt_char: prompt symbol ]################################
- # Transparent background.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND=
- # Green prompt symbol if the last command succeeded.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76
- # Red prompt symbol if the last command failed.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196
- # 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.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
- # Prompt symbol in overwrite vi mode.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
- typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
- # No line terminator if prompt_char is the last segment.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=
- # No line introducer if prompt_char is the first segment.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
- # No surrounding whitespace.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_{LEFT,RIGHT}_WHITESPACE=
-
- ##################################[ dir: current directory ]##################################
- # Default current directory color.
- typeset -g POWERLEVEL9K_DIR_FOREGROUND=31
- # If directory is too long, shorten some of its segments to the shortest possible unique
- # prefix. The shortened directory can be tab-completed to the original.
- typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique
- # Replace removed segment suffixes with this symbol.
- typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
- # Color of the shortened directory segments.
- typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103
- # Color of the anchor directory segments. Anchor segments are never shortened. The first
- # segment is always an anchor.
- typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39
- # Display anchor directory segments in bold.
- typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
- # Don't shorten directories that contain any of these files. They are anchors.
- local anchor_files=(
- .bzr
- .citc
- .git
- .hg
- .node-version
- .python-version
- .go-version
- .ruby-version
- .lua-version
- .java-version
- .perl-version
- .php-version
- .tool-version
- .shorten_folder_marker
- .svn
- .terraform
- CVS
- Cargo.toml
- composer.json
- go.mod
- package.json
- stack.yaml
- )
- typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
- # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains
- # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is
- # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
- # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
- # and other directories don't.
- #
- # Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer.
- # This moves the truncation point to the right (positive offset) or to the left (negative offset)
- # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
- # respectively.
- typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
- # Don't shorten this many last directory segments. They are anchors.
- typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
- # Shorten directory if it's longer than this even if there is space for it. The value can
- # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
- # directory will be shortened only when prompt doesn't fit or when other parameters demand it
- # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
- # If set to `0`, directory will always be shortened to its minimum length.
- typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
- # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
- # many columns for typing commands.
- typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
- # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
- # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
- typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
- # If set to true, embed a hyperlink into the directory. Useful for quickly
- # opening a directory in the file manager simply by clicking the link.
- # Can also be handy when the directory is shortened, as it allows you to see
- # the full directory that was used in previous commands.
- typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
-
- # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
- # and POWERLEVEL9K_DIR_CLASSES below.
- typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
-
- # The default icon shown next to non-writable and non-existent directories when
- # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
- # typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
-
- # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
- # directories. It must be an array with 3 * N elements. Each triplet consists of:
- #
- # 1. A pattern against which the current directory ($PWD) is matched. Matching is done with
- # extended_glob option enabled.
- # 2. Directory class for the purpose of styling.
- # 3. An empty string.
- #
- # Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
- #
- # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
- # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
- #
- # For example, given these settings:
- #
- # typeset -g POWERLEVEL9K_DIR_CLASSES=(
- # '~/work(|/*)' WORK ''
- # '~(|/*)' HOME ''
- # '*' DEFAULT '')
- #
- # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
- # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
- # WORK_NON_EXISTENT.
- #
- # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
- # option to define custom colors and icons for different directory classes.
- #
- # # Styling for WORK.
- # typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐'
- # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31
- # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103
- # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39
- #
- # # Styling for WORK_NOT_WRITABLE.
- # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
- # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=31
- # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103
- # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39
- #
- # # Styling for WORK_NON_EXISTENT.
- # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
- # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31
- # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103
- # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39
- #
- # If a styling parameter isn't explicitly defined for some class, it falls back to the classless
- # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
- # back to POWERLEVEL9K_DIR_FOREGROUND.
- #
- # typeset -g POWERLEVEL9K_DIR_CLASSES=()
-
- # Custom prefix.
- # typeset -g POWERLEVEL9K_DIR_PREFIX='%246Fin '
-
- #####################################[ vcs: git status ]######################################
- # 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='?'
-
- # Formatter for Git status.
- #
- # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
- #
- # You can edit the function to customize how Git status looks.
- #
- # 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='%246F' # grey foreground
- local clean='%76F' # green foreground
- local modified='%178F' # yellow foreground
- local untracked='%39F' # blue foreground
- local conflicted='%196F' # 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.
- # Tip: To always show local branch name in full without truncation, delete the next line.
- (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line
- res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
- fi
-
- if [[ -n $VCS_STATUS_TAG
- # Show tag only if not on a branch.
- # Tip: To always show tag, delete the next line.
- && -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.
- # Tip: To always show tag name in full without truncation, delete the next line.
- (( $#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
-
- # Display "wip" if the latest commit's summary contains "wip" or "WIP".
- if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
- res+=" ${modified}wip"
- fi
-
- # ⇣42 if behind the remote.
- (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}"
- # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
- (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
- (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}"
- # ⇠42 if behind the push remote.
- (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}"
- (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
- # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42.
- (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}"
- # *42 if have stashes.
- (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
- # 'merge' if the repo is in an unusual state.
- [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
- # ~42 if have merge conflicts.
- (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
- # +42 if have staged changes.
- (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
- # !42 if have unstaged changes.
- (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${