diff --git a/modules/home-manager/starship.nix b/modules/home-manager/starship.nix index 9bfe2c5..1d49485 100644 --- a/modules/home-manager/starship.nix +++ b/modules/home-manager/starship.nix @@ -1,16 +1,16 @@ { config, lib, pkgs, ... }: -{ - options.speccon18.hm.starship.enable = lib.mkEnableOption "Enable Starship"; - programs.starship = { - enable = true; - # Configuration written to ~/.config/starship.toml - settings = { - add_newline = false; - character = { - success_symbol = "[➜](bold green)"; - error_symbol = "[➜](bold red)"; - }; +{ + options.speccon18.hm.starship.enable = lib.mkEnableOption "Enable Starship"; + + config = lib.mkIf config.speccon18.hm.starship.enable { + programs.starship = { + enable = true; + enableBashIntegration = true; + enableZshIntegration = true; + enableFishIntegration = false; + settings = builtins.fromTOML (builtins.readFile ./starship.toml); }; }; + } diff --git a/modules/home-manager/starship.toml b/modules/home-manager/starship.toml new file mode 100644 index 0000000..12013a5 --- /dev/null +++ b/modules/home-manager/starship.toml @@ -0,0 +1,544 @@ +# ============================================================================ +# GLOBAL OPTIONS +# ============================================================================ + +add_newline = true +command_timeout = 1000 +scan_timeout = 50 +palette = "oasis_abyss" + +format = """ +$username\ +$hostname\ +$localip\ +$directory\ +$git_branch\ +$git_state\ +$git_status\ +$git_commit\ +$git_metrics\ +$cmd_duration\ +$line_break\ +$character\ +""" + +right_format = """ +$time\ +$shell\ +$jobs\ +""" + +[line_break] +disabled = false + +# ============================================================================ +# PALETTE DEFINITION (oasis_abyss) +# ============================================================================ + +[palettes.oasis_abyss] +# Normal colors +black = "#000000" +red = "#FF7979" +green = "#53D390" +yellow = "#F0E68C" +blue = "#81C0FF" +magenta = "#C695FF" +cyan = "#68C0B6" +white = "#DDDBD5" + +# Bright colors +bright_black = "#605C4D" +bright_red = "#FFA0A0" +bright_green = "#96EA7F" +bright_yellow = "#F8B471" +bright_blue = "#87CEEB" +bright_magenta = "#D2ADFF" +bright_cyan = "#8FD1C7" +bright_white = "#FFF9F2" + +# Semantic aliases for clarity +error = "#FF7979" +success = "#53D390" +warning = "#F0E68C" +info = "#81C0FF" +highlight = "#C695FF" +accent = "#68C0B6" + +# ============================================================================ +# USER & HOSTNAME +# ============================================================================ + +[username] +disabled = false +show_always = true +style_user = "highlight bold" +style_root = "error bold" +format = "[$user]($style) on " + +[hostname] +disabled = false +ssh_only = false +trim_at = "." +style = "info bold" +format = "[$hostname]($style)@" + +[localip] +disabled = false +ssh_only = false +style = "highlight bold" +format = "[$localipv4]($style) " + +# ============================================================================ +# DIRECTORY +# ============================================================================ + +[directory] +disabled = false +read_only = " ro" +read_only_style = "197" +truncation_length = 3 +truncation_symbol = "…/" +style = "info bold" +format = "[ $path ]($style)[$read_only]($read_only_style) " + +[directory.substitutions] +"Documents" = "󰈙 " +"Downloads" = " " +"Music" = " " +"Pictures" = " " + +# ============================================================================ +# GIT MODULES +# ============================================================================ + +[git_branch] +disabled = false +symbol = " " +style = "info bold" +truncation_length = 20 +truncation_symbol = "…/" +format = "on [$symbol$branch]($style) " + +[git_status] +disabled = false +style = "success bold" +conflicted = "🏳" +ahead = " ⇡${count}" +behind = " ⇣${count}" +diverged = "⇕ ⇡${ahead_count} ⇣${behind_count}" +untracked = "[ ?${count}](cyan)" +stashed = "📦" +modified = "[ !${count}](warning)" +staged = " +${count}" +renamed = " »${count}" +deleted = "[ ✖${count}](error)" +format = "[🔃$all_status$ahead_behind]($style) " + +[git_commit] +disabled = false +commit_hash_length = 7 +tag_disabled = true +tag_symbol = "🏷 " +style = "warning bold" +format = '[$$$hash$tag$$]($style) ' + +[git_state] +disabled = false +style = "warning bold" +format = '$$[$state( $progress_current/$progress_total)]($style)$$ ' + +[git_metrics] +disabled = false +added_style = "success bold" +deleted_style = "error bold" +only_nonzero_diffs = true +format = "(📈 [+$added]($added_style))([ -$deleted]($deleted_style)) " + +# ============================================================================ +# COMMAND DURATION +# ============================================================================ + +[cmd_duration] +disabled = false +min_time = 500 +show_milliseconds = false +style = "warning" +format = "took [$duration]($style) " + +# ============================================================================ +# CHARACTER +# ============================================================================ + +[character] +disabled = false +success_symbol = "[➜](success bold)" +error_symbol = "[✗](error bold)" +vimcmd_symbol = "[V](success bold)" +vimcmd_replace_one_symbol = "[R1](highlight bold)" +vimcmd_replace_symbol = "[R](highlight bold)" +vimcmd_visual_symbol = "[V](accent bold)" +format = "$symbol " + +# ============================================================================ +# TIME +# ============================================================================ + +[time] +disabled = false +time_format = "%R" +style = "bright_white bold" +format = "exec_time: [$time]($style) " + +# ============================================================================ +# SHELL +# ============================================================================ + +[shell] +disabled = false +bash_indicator = "bash" +zsh_indicator = "zsh" +fish_indicator = "fish" +powershell_indicator = "pwsh" +tcsh_indicator = "tcsh" +elvish_indicator = "elvish" +nu_indicator = "nu" +unknown_indicator = "unknown" +style = "info bold" +format = "[$indicator]($style) " + +# ============================================================================ +# JOBS +# ============================================================================ + +[jobs] +disabled = false +number_threshold = 1 +style = "warning bold" +format = "[$number]($style) " + +# ============================================================================ +# BATTERY +# ============================================================================ + +[battery] +disabled = false +full_symbol = "🔋 " +charging_symbol = "⚡️ " +discharging_symbol = "🔋 " +unknown_symbol = "🔌 " +empty_symbol = "🪫 " +format = "[$symbol$percentage]($style) " + +[[battery.display]] +threshold = 10 +style = "error bold" + +[[battery.display]] +threshold = 30 +style = "warning bold" + +[[battery.display]] +threshold = 100 +style = "success bold" + +# ============================================================================ +# CUSTOM MODULES +# ============================================================================ + +[custom.example] +disabled = true +command = "echo 'Custom Module'" +when = "true" +style = "accent" +format = "[$output]($style) " + +# ============================================================================ +# LANGUAGE MODULES +# ============================================================================ + +[rust] +disabled = false +symbol = "🦀 " +style = "error bold" +format = "via [$symbol$version]($style) " + +[python] +disabled = false +symbol = "🐍 " +style = "info bold" +pyenv_version_name = false +python_binary = ["python", "python3", "python3.11"] +format = 'via [$symbol${pyenv_prefix}(${version} )($$$virtualenv$$ )]($style) ' + +[nodejs] +disabled = false +symbol = "🟢 " +style = "success bold" +format = "via [$symbol$version]($style) " + +[golang] +disabled = false +symbol = "🐹 " +style = "accent bold" +format = "via [$symbol$version]($style) " + +[java] +disabled = false +symbol = "☕ " +style = "error bold" +format = "via [$symbol$version]($style) " + +[ruby] +disabled = false +symbol = "💎 " +style = "error bold" +format = "via [$symbol$version]($style) " + +[php] +disabled = false +symbol = "🐘 " +style = "highlight bold" +format = "via [$symbol$version]($style) " + +[typescript] +disabled = false +symbol = "📘 " +style = "info bold" +format = "via [$symbol$version]($style) " + +[scala] +disabled = false +symbol = "🔥 " +style = "error bold" +format = "via [$symbol$version]($style) " + +[kotlin] +disabled = false +symbol = "🧠 " +style = "info bold" +format = "via [$symbol$version]($style) " + +[swift] +disabled = false +symbol = "🛬 " +style = "bright_yellow bold" +format = "via [$symbol$version]($style) " + +[dart] +disabled = false +symbol = "🎯 " +style = "info bold" +format = "via [$symbol$version]($style) " + +[julia] +disabled = false +symbol = "⚙️ " +style = "highlight bold" +format = "via [$symbol$version]($style) " + +[haskell] +disabled = false +symbol = "λ " +style = "info bold" +format = "via [$symbol$version]($style) " + +[elixir] +disabled = false +symbol = "🔮 " +style = "highlight bold" +format = "via [$symbol$version]($style) " + +[erlang] +disabled = false +symbol = "📞 " +style = "error bold" +format = "via [$symbol$version]($style) " + +[lua] +disabled = false +symbol = "🌙 " +style = "info bold" +format = "via [$symbol$version]($style) " + +[perl] +disabled = false +symbol = "🐪 " +style = "info bold" +format = "via [$symbol$version]($style) " + +[zig] +disabled = false +symbol = "🦆 " +style = "warning bold" +format = "via [$symbol$version]($style) " + +[nim] +disabled = false +symbol = "👑 " +style = "warning bold" +format = "via [$symbol$version]($style) " + +[ocaml] +disabled = false +symbol = "🐫 " +style = "info bold" +format = "via [$symbol$version]($style) " + +[crystal] +disabled = false +symbol = "💠 " +style = "error bold" +format = "via [$symbol$version]($style) " + +[elm] +disabled = false +symbol = "🍃 " +style = "accent bold" +format = "via [$symbol$version]($style) " + +# ============================================================================ +# INFRASTRUCTURE MODULES +# ============================================================================ + +[aws] +disabled = false +symbol = "🅰 " +style = "warning bold" +format = "on [$symbol$profile]($style) " + +[[aws.region_aliases]] +ap-southeast-2 = "au" +eu-west-1 = "uk" + +[azure] +disabled = false +symbol = "🅰 " +style = "info bold" +format = "on [$symbol$subscription]($style) " + +[gcloud] +disabled = false +symbol = "☁️ " +style = "info bold" +format = 'on [$symbol$account(@$domain)($$$region$$)]($style) ' + +[kubernetes] +disabled = false +symbol = "☸️ " +style = "info bold" +detect_files = ["kustomization.yaml", "kustomization.yml", "Kustomfile", ".kube"] +detect_folders = [".kube"] +format = 'on [$symbol$context( $$$namespace$$)]($style) ' + +[docker_context] +disabled = false +symbol = "🐳 " +style = "info bold" +detect_files = ["docker-compose.yml", "docker-compose.yaml", "Dockerfile"] +detect_folders = ["docker"] +format = "via [$symbol$context]($style) " + +[terraform] +disabled = false +symbol = "💠 " +style = "highlight bold" +format = "via [$symbol$workspace]($style) " + +[pulumi] +disabled = false +symbol = "🌀 " +style = "info bold" +format = "via [$symbol$stack]($style) " + +[gitlab] +disabled = false +symbol = "🐱 " +style = "error bold" +format = "via [$symbol$branch]($style) " + +[github] +disabled = false +symbol = "🐙 " +style = "black bold" +format = "via [$symbol$branch]($style) " + +# ============================================================================ +# ENVIRONMENT VARIABLES +# ============================================================================ + +[env_var.FOO] +disabled = true +default = "default_value" +style = "info" +format = "with [$env_value]($style) " + +# ============================================================================ +# SYSTEM MODULES +# ============================================================================ + +[package] +disabled = false +symbol = "📦 " +style = "error bold" +format = "is [$symbol$version]($style) " + +[conda] +disabled = false +symbol = "🅒 " +style = "success bold" +ignore_base = true +format = "via [$symbol$environment]($style) " + +[nix_shell] +disabled = false +symbol = "🐧 " +style = "info bold" +format = "via [$symbol$state]($style) " + +[gradle] +disabled = false +symbol = "🎓 " +style = "success bold" +format = "via [$symbol$version]($style) " + +[maven] +disabled = false +symbol = "📦 " +style = "error bold" +format = "via [$symbol$version]($style) " + +[helm] +disabled = false +symbol = "🎭 " +style = "info bold" +format = "via [$symbol$version]($style) " + +[cmake] +disabled = false +symbol = "🔨 " +style = "info bold" +format = "via [$symbol$version]($style) " + +[c] +disabled = false +symbol = "🔵 " +style = "info bold" +format = "via [$symbol$version]($style) " + +[meson] +disabled = false +symbol = "🔨 " +style = "info bold" +format = "via [$symbol$version]($style) " + +[guix_shell] +disabled = false +symbol = "🐧 " +style = "success bold" +format = "via [$symbol]($style) " + +[vagrant] +disabled = false +symbol = "📦 " +style = "success bold" +format = "via [$symbol$version]($style) "