aboutsummaryrefslogtreecommitdiff
path: root/home/modules
diff options
context:
space:
mode:
authorsefidel <contact@sefidel.net>2021-12-28 01:11:25 +0900
committersefidel <contact@sefidel.net>2021-12-28 01:12:48 +0900
commit56992b8c945d497a623fe693847c91235be1ae02 (patch)
tree102ff8c8872d7e14ce3e3dba69bf16685374504e /home/modules
downloadnixrc-56992b8c945d497a623fe693847c91235be1ae02.zip
initial commit
Diffstat (limited to 'home/modules')
-rw-r--r--home/modules/default.nix13
-rw-r--r--home/modules/misc/home/default.nix31
-rw-r--r--home/modules/profiles/base/config/foot.nix33
-rw-r--r--home/modules/profiles/base/config/sway.nix202
-rw-r--r--home/modules/profiles/base/config/waybar-settings-new.nix68
-rw-r--r--home/modules/profiles/base/config/waybar-settings.nix68
-rw-r--r--home/modules/profiles/base/config/waybar-style.nix97
-rw-r--r--home/modules/profiles/base/default.nix123
-rw-r--r--home/modules/profiles/base/p10k-config/p10k.zsh1469
-rw-r--r--home/modules/profiles/browsing/default.nix13
-rw-r--r--home/modules/profiles/default.nix13
-rw-r--r--home/modules/profiles/development/default.nix78
-rw-r--r--home/modules/profiles/messaging/default.nix14
-rw-r--r--home/modules/profiles/misc/default.nix14
-rw-r--r--home/modules/programs/nixpkgs/default.nix20
-rw-r--r--home/modules/programs/zshell/default.nix44
16 files changed, 2300 insertions, 0 deletions
diff --git a/home/modules/default.nix b/home/modules/default.nix
new file mode 100644
index 0000000..d290e17
--- /dev/null
+++ b/home/modules/default.nix
@@ -0,0 +1,13 @@
+{
+ "profiles" = import ./profiles;
+ "profiles/base" = import ./profiles/base;
+ "profiles/browsing" = import ./profiles/browsing;
+ "profiles/development" = import ./profiles/development;
+ "profiles/messaging" = import ./profiles/messaging;
+ "profiles/misc" = import ./profiles/misc;
+
+ "programs/nixpkgs" = import ./programs/nixpkgs;
+ "programs/zshell" = import ./programs/zshell;
+
+ "misc/home" = import ./misc/home;
+}
diff --git a/home/modules/misc/home/default.nix b/home/modules/misc/home/default.nix
new file mode 100644
index 0000000..80232e7
--- /dev/null
+++ b/home/modules/misc/home/default.nix
@@ -0,0 +1,31 @@
+{ config, pkgs, lib, nixpkgs, self, ... }:
+
+{
+ profiles.base.enable = true;
+ fonts.fontconfig.enable = true;
+
+
+ home = {
+ stateVersion = "22.05";
+ };
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/home/modules/profiles/base/config/foot.nix b/home/modules/profiles/base/config/foot.nix
new file mode 100644
index 0000000..d53dba7
--- /dev/null
+++ b/home/modules/profiles/base/config/foot.nix
@@ -0,0 +1,33 @@
+{
+ main = {
+ term = "foot";
+ font = "dina:size=10,Liga SFMono Nerd Font:size=10";
+ letter-spacing = 0;
+ line-height = 13;
+ dpi-aware = "yes";
+ pad = "16x16 center";
+ };
+
+ cursor.style = "beam";
+
+ colors = {
+ background = "18191f";
+ foreground = "cbc0ab";
+ regular0 = "222329";
+ regular1 = "b17f81";
+ regular2 = "8aa387";
+ regular3 = "d4ae80";
+ regular4 = "8896ae";
+ regular5 = "c495a2";
+ regular6 = "7aacaa";
+ regular7 = "d0d0c7";
+ bright0 = "36373d";
+ bright1 = "c59395";
+ bright2 = "9eb79b";
+ bright3 = "e8c294";
+ bright4 = "9caac2";
+ bright5 = "d8a9b6";
+ bright6 = "8ec0be";
+ bright7 = "e4e4db";
+ };
+} \ No newline at end of file
diff --git a/home/modules/profiles/base/config/sway.nix b/home/modules/profiles/base/config/sway.nix
new file mode 100644
index 0000000..d04673e
--- /dev/null
+++ b/home/modules/profiles/base/config/sway.nix
@@ -0,0 +1,202 @@
+{ pkgs, wallpapers }:
+
+''
+ exec autotiling
+
+ # set modifiers
+ set $mod Mod4
+ set $alt Mod1
+ set $floating_modifier $mod
+ set $left h
+ set $down j
+ set $up k
+ set $right l
+
+ # set terminal
+
+ set $term footclient
+ bindsym $mod+Return exec $term
+
+ # set menu
+ set $menu "${pkgs.bemenu}/bin/bemenu-run -H 18 -l 5 --fn 'Iosevka Pure 10.5' --tb '#c495a2' --tf '#18191f' --hb '#c495a2' --hf '#18191f'"
+ bindsym $mod+d exec $menu
+
+ # change focus
+ # vim-style
+ bindsym $mod+$left focus left
+ bindsym $mod+$down focus down
+ bindsym $mod+$up focus up
+ bindsym $mod+$right focus right
+ # arrows
+ bindsym $mod+Left focus left
+ bindsym $mod+Down focus down
+ bindsym $mod+Up focus up
+ bindsym $mod+Right focus right
+
+ # move focused window
+ # vim-style
+ bindsym $mod+Shift+$left move left
+ bindsym $mod+Shift+$down move down
+ bindsym $mod+Shift+$up move up
+ bindsym $mod+Shift+$right move right
+ # arrows
+ bindsym $mod+Shift+Left move left
+ bindsym $mod+Shift+Down move down
+ bindsym $mod+Shift+Up move up
+ bindsym $mod+Shift+Right move right
+
+ # split
+ bindsym $mod+c split h # horizontal
+ bindsym $mod+v split v # vertical
+
+ # fullscreen
+ bindsym $mod+e fullscreen toggle
+
+ # floating
+ bindsym $mod+f floating toggle
+
+ # kill focused
+ bindsym $mod+w kill
+
+ font "pango:Iosevka Pure 5"
+
+ # window rules
+ for_window [window_role="pop-up"] floating enable
+ for_window [window_role="bubble"] floating enable
+ for_window [window_role="task_dialog"] floating enable
+ for_window [window_role="Preferences"] floating enable
+ for_window [window_type="dialog"] floating enable
+ for_window [window_type="menu"] floating enable
+ for_window [class="mpv"] floating enable
+ for_window [class=".*"] inhibit_idle fullscreen
+ for_window [app_id=".*"] title_format ""
+ for_window [class=".*"] title_format ""
+
+ titlebar_border_thickness 0
+ titlebar_padding 0 0
+
+ # workspace names
+ set $ws1 "α"
+ set $ws2 "β"
+ set $ws3 "γ"
+ set $ws4 "δ"
+ set $ws5 "ε"
+ set $ws6 "ζ"
+ set $ws7 "η"
+ set $ws8 "θ"
+ set $ws9 "ι"
+ set $ws10 "κ"
+
+ # switch to named ws
+ bindsym $mod+1 workspace $ws1
+ bindsym $mod+2 workspace $ws2
+ bindsym $mod+3 workspace $ws3
+ bindsym $mod+4 workspace $ws4
+ bindsym $mod+5 workspace $ws5
+ bindsym $mod+6 workspace $ws6
+ bindsym $mod+7 workspace $ws7
+ bindsym $mod+8 workspace $ws8
+ bindsym $mod+9 workspace $ws9
+ bindsym $mod+0 workspace $ws10
+
+ # switch to prev/next ws
+ bindsym $mod+z workspace prev
+ bindsym $mod+x workspace next
+
+ # move focused container to ws
+ bindsym $mod+Shift+1 move container to workspace $ws1
+ bindsym $mod+Shift+2 move container to workspace $ws2
+ bindsym $mod+Shift+3 move container to workspace $ws3
+ bindsym $mod+Shift+4 move container to workspace $ws4
+ bindsym $mod+Shift+5 move container to workspace $ws5
+ bindsym $mod+Shift+6 move container to workspace $ws6
+ bindsym $mod+Shift+7 move container to workspace $ws7
+ bindsym $mod+Shift+8 move container to workspace $ws8
+ bindsym $mod+Shift+9 move container to workspace $ws9
+ bindsym $mod+Shift+0 move container to workspace $ws10
+ bindsym $mod+Shift+z move container to workspace prev
+ bindsym $mod+Shift+x move container to workspace next
+
+ # ws back-and-forth
+ workspace_auto_back_and_forth no
+
+ # reload
+ bindsym $mod+q reload
+
+ # application shortcuts
+ bindsym $mod+a exec sublime4
+ bindsym $mod+Shift+a exec brave
+
+ # Volume control
+ bindsym XF86AudioRaiseVolume exec ~/.local/bin/volume up
+ bindsym XF86AudioLowerVolume exec ~/.local/bin/volume down
+ bindsym XF86AudioMute exec ~/.local/bin/volume toggle
+ #HHKB
+ bindsym $mod+equal exec ~/.local/bin/volume up
+ bindsym $mod+minus exec ~/.local/bin/volume down
+ bindsym $mod+backslash exec ~/.local/bin/volume toggle
+
+ # Brightness
+ bindsym XF86MonBrightnessDown exec brightnessctl -q set 10%-
+ bindsym XF86MonBrightnessUp exec brightnessctl -q set 10%+
+
+ # Screenshot
+ bindsym $mod+Print exec grimshot copy area
+ bindsym Print exec grimshot copy active
+ bindsym $alt+Print exec grimshot save screen
+
+ # Toggle waybar
+ bindsym $mod+b exec pkill -USR1 waybar
+
+ # Exit
+ bindsym $mod+Shift+q exec swaynag -t warning -m 'Do you really want to exit sway?' -b 'Yes, exit sway' 'swaymsg exit'
+
+ # Aesthetics
+ default_border pixel 3
+ hide_edge_borders --i3 smart
+ gaps inner 8
+ smart_borders on
+
+ set $color0 #222329
+ set $color1 #b17f81
+ set $color2 #8aa387
+ set $color3 #d4ae80
+ set $color4 #8896ae
+ set $color5 #c495a2
+ set $color6 #7aacaa
+ set $color7 #d0d0c7
+ set $color8 #36373d
+ set $color9 #c59395
+ set $color10 #9eb79b
+ set $color11 #e8c294
+ set $color12 #9caac2
+ set $color13 #d8a9b6
+ set $color14 #8ec0be
+ set $color15 #e4e4db
+
+ set $primary $color5
+ set $muted #b58693
+
+ # class border backgr text indicator
+ client.focused $primary $primary $color0 $color5
+ client.focused_inactive $muted $muted $color0 $color5
+ client.unfocused $muted $muted $color7 $color5
+ client.urgent $color10 $color10 $color0 $color5
+ output "*" bg ${wallpapers}/nixos/nix-glow-gruvbox.png fill
+ output "*" scale 1
+ output "*" scale_filter nearest
+
+ input type:touchpad {
+ tap enabled
+ natural_scroll enabled
+ }
+
+ input type:keyboard {
+ repeat_rate 40
+ repeat_delay 350
+ xkb_layout us,se
+ # xkb_variant ,dvorak
+ xkb_options 'grp:alt_shift_toggle,caps:escape'
+ # xkb_options ctrl:swapcaps
+ }
+''
diff --git a/home/modules/profiles/base/config/waybar-settings-new.nix b/home/modules/profiles/base/config/waybar-settings-new.nix
new file mode 100644
index 0000000..4b55a05
--- /dev/null
+++ b/home/modules/profiles/base/config/waybar-settings-new.nix
@@ -0,0 +1,68 @@
+{
+ # DISCLAIMER! On 22.05, do NOT use this until https://github.com/nix-community/home-manager/issues/2546 is solved.
+ layer = "bottom";
+ position = "top";
+ height = 17;
+ modules-left = [ "sway/workspaces" "sway/language" "cpu" "memory" ];
+ modules-center = [ "clock" ];
+ modules-right = [ "custom/weather" "pulseaudio" "network" ];
+
+ "sway/workspaces" = {
+ all-outputs = true;
+
+ persistent_workspaces = {
+ "α" = [ ];
+ "β" = [ ];
+ "γ" = [ ];
+ "δ" = [ ];
+ "ε" = [ ];
+ "ζ" = [ ];
+ "η" = [ ];
+ "θ" = [ ];
+ "ι" = [ ];
+ "κ" = [ ];
+ };
+ };
+
+ "sway/language" = {
+ format = " {long}";
+ };
+
+ "clock" = {
+ interval = 10;
+ format = "{: %m/%d/%Y %I:%M %p}";
+ };
+
+ "cpu" = {
+ interval = 5;
+ format = " {load}%  {usage}%";
+ };
+
+ "custom/weather" = {
+ format = " {}";
+ exec = "curl 'wttr.in/?format='%t+-+%x+%C++%w'&M'";
+ interval = 3600;
+ };
+
+ "network" = {
+ interface = "enp4s0";
+ format = " {ifname}";
+ format-wifi = " {essid}";
+ format-ethernet = " {ifname} {ipaddr}";
+ format-disconnected = " Disconnected";
+ max-length = 50;
+ };
+
+ "pulseaudio" = {
+ format = "{icon} {volume}%";
+ format-muted = "婢 Muted";
+ format-source = "";
+ format-source-muted = "Muted";
+ format-icons.default = [ " " " " " " ];
+ };
+
+ "memory" = {
+ interval = 5;
+ format = " {used:0.1f}G / {total:0.1f}G ({percentage}%)";
+ };
+}
diff --git a/home/modules/profiles/base/config/waybar-settings.nix b/home/modules/profiles/base/config/waybar-settings.nix
new file mode 100644
index 0000000..e208895
--- /dev/null
+++ b/home/modules/profiles/base/config/waybar-settings.nix
@@ -0,0 +1,68 @@
+{
+ layer = "bottom";
+ position = "top";
+ height = 17;
+ modules-left = [ "sway/workspaces" "sway/language" "cpu" "memory" ];
+ modules-center = [ "clock" ];
+ modules-right = [ "custom/weather" "pulseaudio" "network" ];
+
+ modules = {
+ "sway/workspaces" = {
+ all-outputs = true;
+
+ persistent_workspaces = {
+ "α" = [ ];
+ "β" = [ ];
+ "γ" = [ ];
+ "δ" = [ ];
+ "ε" = [ ];
+ "ζ" = [ ];
+ "η" = [ ];
+ "θ" = [ ];
+ "ι" = [ ];
+ "κ" = [ ];
+ };
+ };
+
+ "sway/language" = {
+ format = " {long}";
+ };
+
+ "clock" = {
+ interval = 10;
+ format = "{: %m/%d/%Y %I:%M %p}";
+ };
+
+ "cpu" = {
+ interval = 5;
+ format = " {usage:3}%";
+ };
+
+ "custom/weather" = {
+ format = " {}";
+ exec = "curl 'wttr.in/?format='%t+-+%x+%C++%w'&M'";
+ interval = 3600;
+ };
+
+ "network" = {
+ interval = 5;
+ interface = "enp4s0";
+ format = " {ifname}";
+ format-wifi = " {essid}  {bandwidthUpBits}  {bandwidthDownBits}";
+ format-ethernet = "  {bandwidthUpBits:>}  {bandwidthDownBits:>}";
+ format-disconnected = " Disconnected";
+ max-length = 50;
+ };
+
+ "pulseaudio" = {
+ format = "{icon} {volume}%";
+ format-muted = "ﱝ Muted";
+ format-icons.default = [ " " " " " " ];
+ };
+
+ "memory" = {
+ interval = 5;
+ format = " {used:0.1f}G / {total:0.1f}G ({percentage:3}%)";
+ };
+ };
+}
diff --git a/home/modules/profiles/base/config/waybar-style.nix b/home/modules/profiles/base/config/waybar-style.nix
new file mode 100644
index 0000000..45edf60
--- /dev/null
+++ b/home/modules/profiles/base/config/waybar-style.nix
@@ -0,0 +1,97 @@
+''
+ * {
+ border: none;
+ border-radius: 0;
+ font-family: "JetBrainsMono Nerd Font";
+ font-size: 14px;
+ min-height: 0;
+ }
+
+ window#waybar {
+ background: #18191f;
+ color: #cbc0ab;
+ }
+
+ #workspaces button {
+ padding: 0 4px;
+ background: #c495a2;
+ color: #18191f;
+ border-bottom: 2px solid #c495a2;
+ }
+
+ #workspaces button.focused {
+ background: #c495a2;
+ border-bottom: 2px solid #18191f;
+ }
+
+ #clock,
+ #cpu,
+ #battery,
+ #temperature,
+ #backlight,
+ #network,
+ #memory,
+ #language,
+ #pulseaudio,
+ #tray,
+ #mode,
+ #mpd,
+ #custom-weather {
+ padding: 0 6px;
+ margin: 0;
+ background-color: #c495a2;
+ color: #18191f;
+ }
+
+ @keyframes blink {
+ to {
+ background-color: #c495a2;
+ color: #18191f;
+ }
+ }
+
+ #cpu {
+ background-color: #8bb0a6;
+ }
+
+ #network {
+ background-color: #8bb0a6;
+ }
+
+ #memory {
+ background-color: #8bb0a6;
+ }
+
+ #pulseaudio {
+ background-color: #8bb0a6;
+ }
+
+ #battery {
+ background-color: #8bb0a6;
+ }
+
+ #battery.full {
+ background-color: #8bb0a6;
+ color: #18191f;
+ }
+
+ #battery.discharging {
+ background-color: #8bb0a6;
+ color: #18191f;
+ }
+
+ #battery.charging {
+ background-color: #8bb0a6;
+ color: #18191f;
+ }
+
+ #battery.warning:not(.charging) {
+ background-color: #8bb0a6;
+ color: #18191f;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+ }
+''
diff --git a/home/modules/profiles/base/default.nix b/home/modules/profiles/base/default.nix
new file mode 100644
index 0000000..1c584f0
--- /dev/null
+++ b/home/modules/profiles/base/default.nix
@@ -0,0 +1,123 @@
+{ config, lib, pkgs, self, ... }:
+let
+ cfg = config.profiles.base;
+
+ inherit (self.packages.x86_64-linux) neovim iosevka-pure-bin sf-mono-liga-bin wallpapers;
+in
+ {
+ options.profiles.base.enable = lib.mkEnableOption
+ "The base profile, should be always enabled";
+
+ config = lib.mkIf cfg.enable {
+ home.sessionVariables = rec {
+ EDITOR = "nvim";
+ VISUAL = "nvim";
+ GIT_EDITOR = EDITOR;
+ };
+
+ gtk.enable = true;
+ gtk.iconTheme.package = pkgs.papirus-icon-theme;
+ gtk.iconTheme.name = "Papirus-Dark";
+ #gtk.theme.package = pkgs.phocus;
+ #gtk.theme.name = "phocus";
+
+ home.keyboard.layout = "us";
+ home.packages = [
+ pkgs.hydra-check
+ neovim
+
+ # Fonts
+ iosevka-pure-bin
+ sf-mono-liga-bin
+ pkgs.dina-font
+ pkgs.sarasa-gothic
+ pkgs.scientifica
+ pkgs.jetbrains-mono
+ pkgs.twemoji-color-font
+ pkgs.symbola
+ pkgs.emacs-all-the-icons-fonts
+ (pkgs.nerdfonts.override { fonts = [ "Iosevka" "JetBrainsMono" ]; })
+ ];
+
+
+ wayland.windowManager.sway = {
+ enable = true;
+
+ config = {
+ bars = [{ command = "${pkgs.waybar}/bin/waybar"; }];
+ keybindings = { };
+ };
+
+ extraConfig = import ./config/sway.nix { inherit pkgs wallpapers; };
+ };
+
+ programs = {
+ bat.enable = true;
+ direnv.enable = true;
+ direnv.nix-direnv.enable = true;
+ exa.enable = true;
+ exa.enableAliases = true;
+ home-manager.enable = true;
+ htop.enable = true;
+
+ foot = {
+ enable = true;
+ server.enable = true;
+ settings = import ./config/foot.nix;
+ };
+
+ waybar = {
+ enable = config.wayland.windowManager.sway.enable;
+
+ settings = [ (import ./config/waybar-settings.nix) ];
+
+ style = import ./config/waybar-style.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";
+ };
+ }
+ ];
+
+ shellAliases = config.programs.zshell.aliases;
+ };
+ };
+
+ services.wlsunset = {
+ enable = true;
+ latitude = "36.5";
+ longitude = "127.2";
+ };
+
+ nixpkgs.allowedUnfree = [ "symbola" ];
+ };
+ }
diff --git a/home/modules/profiles/base/p10k-config/p10k.zsh b/home/modules/profiles/base/p10k-config/p10k.zsh
new file mode 100644
index 0000000..8705be0
--- /dev/null
+++ b/home/modules/profiles/base/p10k-config/p10k.zsh
@@ -0,0 +1,1469 @@
+# Generated by Powerlevel10k configuration wizard on 2020-02-27 at 13:48 UTC.
+# Based on romkatv/powerlevel10k/config/p10k-classic.zsh.
+# Wizard options: powerline, classic, darkest, time, angled separators, sharp heads,
+# flat tails, 2 lines, solid, full frame, compact, concise, transient_prompt,
+# instant_prompt=off.
+# 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%8)):#7}:+$'\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
+ setopt no_unset extended_glob
+
+ # Unset all configuration options. This allows you to apply configiguration changes without
+ # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
+ unset -m 'POWERLEVEL9K_*'
+
+ autoload -Uz is-at-least && is-at-least 5.1 || return
+
+ zmodload zsh/langinfo
+ if [[ ${langinfo[CODESET]:-} != (utf|UTF)(-|)8 ]]; then
+ local LC_ALL=${${(@M)$(locale -a):#*.(utf|UTF)(-|)8}[1]:-en_US.UTF-8}
+ fi
+
+ # 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/)
+ 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)
+ kubecontext # current kubernetes context (https://kubernetes.io/)
+ terraform # terraform workspace (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)
+ 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)
+ 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)
+ )
+
+ # To enable default icons for all segments, don't define POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION
+ # or set it to '${P9K_VISUAL_IDENTIFIER}'.
+ #
+ # To remove trailing space from all default icons, set POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION
+ # to '${P9K_VISUAL_IDENTIFIER% }'.
+ #
+ # To enable default icons for one segment (e.g., dir), set
+ # POWERLEVEL9K_DIR_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}'.
+ #
+ # To assign a specific icon to one segment (e.g., dir), set
+ # POWERLEVEL9K_DIR_VISUAL_IDENTIFIER_EXPANSION='⭐'.
+ #
+ # To assign a specific icon to a segment in a given state (e.g., dir in state NOT_WRITABLE),
+ # set POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'.
+ #
+ # Note: You can use $'\u2B50' instead of '⭐'. It's especially convenient when specifying
+ # icons that your text editor cannot render. Don't forget to put $ and use single quotes when
+ # defining icons via Unicode codepoints.
+ #
+ # Note: Many default icons cannot be displayed with system fonts. You'll need to install a
+ # capable font to use them. See POWERLEVEL9K_MODE below.
+ typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}'
+
+ # This option makes a difference only when default icons are enabled for all or some prompt
+ # segments (see POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION above). LOCK_ICON can be printed as
+ # $'\uE0A2', $'\uE138' or $'\uF023' depending on POWERLEVEL9K_MODE. The correct value of this
+ # parameter depends on the provider of the font your terminal is using.
+ #
+ # Font Provider | POWERLEVEL9K_MODE
+ # ---------------------------------+-------------------
+ # Powerline | powerline
+ # Font Awesome | awesome-fontconfig
+ # Adobe Source Code Pro | awesome-fontconfig
+ # Source Code Pro | awesome-fontconfig
+ # Awesome-Terminal Fonts (regular) | awesome-fontconfig
+ # Awesome-Terminal Fonts (patched) | awesome-patched
+ # Nerd Fonts | nerdfont-complete
+ # Other | compatible
+ #
+ # If this looks overwhelming, either stick with a preinstalled system font and set
+ # POWERLEVEL9K_MODE=compatible, or install the recommended Powerlevel10k font from
+ # https://github.com/romkatv/powerlevel10k/#recommended-meslo-nerd-font-patched-for-powerlevel10k
+ # and set POWERLEVEL9K_MODE=nerdfont-complete.
+ typeset -g POWERLEVEL9K_MODE=powerline
+
+ # 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=false
+
+ # 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='%238F╭─'
+ typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%238F├─'
+ typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%238F╰─'
+ # Connect right prompt lines with these symbols.
+ typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%238F─╮'
+ typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%238F─┤'
+ typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%238F─╯'
+
+ # 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 using this option.
+ typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR='─'
+ typeset -g POWERLEVEL9K_MULTILINE_FIRST_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=238
+ # 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=234
+
+ # Separator between same-color segments on the left.
+ typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='%242F\uE0B1'
+ # Separator between same-color segments on the right.
+ typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='%242F\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
+ # Make the icon bold.
+ typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='%B${P9K_CONTENT}'
+
+ ################################[ 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='Ⅴ'
+ # 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_LEF